在CentOS上安装Nginx
最近在云服务器上部署nginx服务,遇到了安装不上问题,整理一下解决过程。
使用包管理器安装Nginx
- 启用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
- 安装Nginxbash
sudo yum install nginx
启动和设置Nginx服务
- 启动Nginx服务bash
sudo systemctl start nginx
- 设置开机自启动bash
sudo systemctl enable nginx
- 检查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,可以按照以下步骤:
- 安装编译工具和依赖库:bash
sudo yum groupinstall "Development Tools" sudo yum install openssl-devel pcre-devel zlib-devel
- 下载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
- 配置、编译和安装:bash
./configure make sudo make install
- 启动Nginx:bash
sudo /usr/local/nginx/sbin/nginx
- 将Nginx添加到系统服务(可选): 可以创建一个系统服务文件,以便更容易地管理Nginx服务。
报错问题解决
如果您遇到“bash: nginx: command not found”的错误,可能是因为:
- PATH环境变量:
nginx
命令的路径可能没有添加到您的PATH
环境变量中。 - 权限问题:
nginx
可执行文件可能没有执行权限。 解决方法: - 临时添加到PATH:bash
export PATH=$PATH:/usr/local/nginx/sbin
- 永久添加到PATH: 编辑
.bash_profile
或.bashrc
文件:bash添加:sudo vi ~/.bash_profile
bash保存并退出,然后执行:export PATH=$PATH:/usr/local/nginx/sbin
bashsource ~/.bash_profile
- 检查和设置权限: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
使配置生效
- 其他错误
- Can't open PID file /run/nginx.pid (yet?) after start: No such file or directory
- /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路径。