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路径。

上次更新于: