Fork me on GitHub

systemctl 启动编译安装nginx

  一、通过yum安装nginx 获取nginx的启动脚本(或直接复制我下面的脚本,只需要改变路径即可)

/usr/lib/systemd/system/nginx.service

脚本内容如下:

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)"

[Install]
WantedBy=multi-user.target

  二、修改路径

    1、修改二进制文件路径

我这里安装的路径是:

/apps/nginx/sbin/nginx

配置文件路径是:

/apps/nginx/conf/nginx.conf

修改下面这行:

ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf

修改为:

ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf

     2、修改PID文件路径

##  PID文件路径要和nginx配置中的路径一样,pid文件和配置文件中不一样,会导致这个脚本永不了,默认没配置,这里修改配置文件

/apps/nginx/conf/nginx.conf 取消注释pid这行
pid        logs/nginx.pid;

##  这里的log是我安装目录里的logs。我安装的位置是/apps/nginx/

修改这行:

PIDFile=/var/run/nginx.pid

修改为:

PIDFile=/apps/nginx/logs/nginx.pid
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /apps/nginx/logs/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /apps/nginx/logs/nginx.pid)"

[Install]
WantedBy=multi-user.target

 ##  标绿的两行,看配置模板文件版本可能需要修改,也可能不需要修改,我这里使用的是nginx/1.20.1 版的配置文件,这里的路径不修改不会影响开启和关闭,但当我Systemctl reload nginx 时候会提示错误:“Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.“”记得修改完之后systemctl daemon-reload下

  三、将修改好的配置移动到:

/usr/lib/systemd/system

   四、测试:

1、停止nginx服务
systemctl stop nginx
2、开启nginx服务 systemctl start nginx
3、重读nginx配置文件(会回收之前空闲的工作进程,并启动新的工作进程)
systemctl reload nginx

 

posted @ 2021-10-19 13:45  Alex-Lzy  阅读(400)  评论(0编辑  收藏  举报