安装gcc等编译环境
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
下载nginx-1.18.0.tar.gz并解压
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
创建目录
mkdir -p /var/temp
mkdir -p /var/temp/nginx
mkdir -p /var/temp/run/nginx
chmod a+wrx -R temp
配置编译选项
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/temp/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
切记,pid-path不能设置为/var/run/nginx/nginx.pid。因为CentOS每次重启后,都会删除/var/run目录中的自建目录和文件,从而导致nginx自启动失败。
编译安装
make && make install
进入/usr/local/nginx查看文件是否存在conf、sbin、html文件夹,若存在则安装成功
测试启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
如果不指定-c,nginx在启动时默认加载conf/nginx.conf文件,此文件的地址也可以在编译安装nginx时指定./configure的参数(–conf-path= 指向配置文件(nginx.conf))
测试访问
curl localhost
浏览器如果不能访问,就打开防火墙或者开端口。
# 关闭防火墙
systemctl stop firewalld.service
# 开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent,firewall-cmd --reload
设置开机启动
在系统服务目录里创建nginx.service文件
vi /usr/lib/systemd/system/nginx.service
写入内容如下:
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
说明:
- [Unit]服务的说明
- Description:描述服务
- After:描述服务类别
- [Service]服务运行参数的设置
- Type=forking是后台运行的形式
- ExecStart为服务的具体运行命令
- ExecReload为重启命令
- ExecStop为停止命令
- PrivateTmp=True表示给服务分配独立的临时空间
- 注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
- [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
设置开机自启动
systemctl enable nginx.service
查看nginx状态
systemctl status nginx.service
很奇怪,明明启动成功了,为什么显示Active: inactive (dead)?
杀死nginx重启nginx
pkill -9 nginx
ps aux | grep nginx
systemctl start nginx
再次查看状态,变成了active,搞定。
重启服务器
reboot
再次连接后,查看服务状态
systemctl status nginx.service
看到nginx已经启动,至此,nginx自启动配置成功。