Skip to content

在CentOS上安装Nginx

最近在云服务器上部署nginx服务,遇到了安装不上问题,整理一下解决过程。

使用包管理器安装Nginx

  1. 启用EPEL软件源 EPEL(Extra Packages for Enterprise Linux)是一个由Fedora特别兴趣小组创建、维护并管理的软件仓库,它为RHEL(Red Hat Enterprise Linux)及其衍生版本,如CentOS,提供额外的软件包。
    bash
    sudo yum install epel-release
    sudo yum clean all
    sudo yum makecache
  2. 安装Nginx
    bash
    sudo yum install nginx

启动和设置Nginx服务

  1. 启动Nginx服务
    bash
    sudo systemctl start nginx
  2. 设置开机自启动
    bash
    sudo systemctl enable nginx
  3. 检查Nginx服务状态
    bash
    sudo systemctl status nginx

配置防火墙

如果您的系统上启用了防火墙,确保允许HTTP(80)和HTTPS(443)通信。

bash
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

编译安装Nginx(可选)

如果需要从源代码编译安装Nginx,可以按照以下步骤:

  1. 安装编译工具和依赖库:
    bash
    sudo yum groupinstall "Development Tools"
    sudo yum install openssl-devel pcre-devel zlib-devel
  2. 下载Nginx源代码并解压:
    bash
    wget http://nginx.org/download/nginx-1.21.3.tar.gz
    tar zxvf nginx-1.21.3.tar.gz
    cd nginx-1.21.3
  3. 配置、编译和安装:
    bash
    ./configure
    make
    sudo make install
  4. 启动Nginx:
    bash
    sudo /usr/local/nginx/sbin/nginx
  5. 将Nginx添加到系统服务(可选): 可以创建一个系统服务文件,以便更容易地管理Nginx服务。

报错问题解决

如果您遇到“bash: nginx: command not found”的错误,可能是因为:

  1. PATH环境变量: nginx命令的路径可能没有添加到您的PATH环境变量中。
  2. 权限问题: nginx可执行文件可能没有执行权限。 解决方法:
  3. 临时添加到PATH:
    bash
    export PATH=$PATH:/usr/local/nginx/sbin
  4. 永久添加到PATH: 编辑.bash_profile.bashrc文件:
    bash
    sudo vi ~/.bash_profile
    添加:
    bash
    export PATH=$PATH:/usr/local/nginx/sbin
    保存并退出,然后执行:
    bash
    source ~/.bash_profile
  5. 检查和设置权限:
    bash
    sudo chown lighthouse:lighthouse /usr/local/nginx/sbin/nginx
    sudo chmod +x /usr/local/nginx/sbin/nginx
    替换lighthouse为您的实际用户名。

启动Nginx

如果需要重新启动Nginx服务,可以使用:

bash
sudo systemctl restart nginx

以上就是在CentOS上安装和配置Nginx的详细步骤。希望对您有所帮助。

nginx 启动失败原因

  • 错误:nginx.service 不存在 创建nginx.service: 执行sudo vi /usr/lib/systemd/system/nginx.service
    写入以下内容:
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx  -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
ExecStopPost=/bin/rm -f /usr/local/nginx/logs/nginx.pid

[Install]
WantedBy=multi-user.target

然后执行sudo systemctl daemon-reload使配置生效

  • 其他错误
    1. Can't open PID file /run/nginx.pid (yet?) after start: No such file or directory
    2. /usr/bin/env nginx -t (code=exited, status=127)

这里错误原因主要是由于安装nginx位置的不同,然后配置nginx.service又没有指定正确位置的原因导致 比如PIDFile、ExecStopPost指定的nginx.pid,都声明在 /run/目录下面。可能由于权限原因,导致每次启动的时候都创建失败。

nginx.pid的作用是每次启动的时候,把进程写入到该文件中。让nignx服务知道自己的进程id.

正确的配置方法: 找到你自己nginx的路径,通常三方安装路径在/usr/local/nginx里面。 nginx.service 的StartPre检测、Start启动、Reload重启、Stop停止和StopPost等,都指定到你安装的nginx路径。

上次更新于: