简介
- nginx启动脚本就是为了方便对nginx服务的启动,关闭,状态查询,热修改的一个脚本文件。
- 系统的服务都是默认在
/usr/lib/systemd/system
目录下的,是系统默认的存放路径,但是启动脚本的服务可以自己添加,因此为了便于控制及其查看,我们将该服务的脚本放在系统额外添加服务的目录/etc/systemd/system
下面。
思路
- 可以安装一个httpd服务,对其服务的脚本加以修改,制作nginx的启动脚本。
实现如下
- 1.安装httpd服务,复制制作nginx的启动脚本模板
[root@server1 logs]# yum install httpd -y
[root@server1 logs]# cp /usr/lib/systemd/system/httpd.service /etc/systemd/system
- 2.修改启动脚本,文件编辑内容如下:
[root@server1 logs]# vim /etc/systemd/system/httpd.service
[Unit]
Description=The Nginx HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid #pid文件
ExecStart=/usr/local/nginx/sbin/nginx #启动脚本的路径
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
-
3.修改文件名
[root@server1 logs]# mv /etc/systemd/system/httpd.service /etc/systemd/system/nginx.service
-
4.由于此时服务是开启的状态,所以我们必须先用脚本的方式关闭服务,在用systemd的方式开启服务。
-
5.开启服务
[root@server1 logs]# systemctl start nginx.service
[root@server1 logs]# systemctl status nginx.service
特殊情况
- 如果服务开启失败,提示我们查看服务的状态
systemctl status nginx.service
或查看日志,我们可以通过查看记录nginx进程的文件得到nginx服务master进程的pid,cat /usr/local/nginx/logs/nginx.pid
,并且kill -9 master的pid
。此时启动仍然会报错,是因为我们kill掉了master进程的pid,还有worker进程没被kill,因此使用ps -ef | grep nginx
查看worker进程并将其worker进程的pid也kill掉,就可以开启服务了。