下面,我会给你一个非常完整的实例代码,并详细讲解每一步的操作:
1. 创建一个systemd服务文件
首先,我们需要创建一个服务文件来告诉systemd
如何管理nginx。这个文件通常会被保存在/etc/systemd/system/
目录下,并命名为nginx.service
。
你可以使用下面的命令来创建并编辑这个文件:
sudo nano /etc/systemd/system/nginx.service
然后,将下面的内容复制到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=/run/nginx.pid execstartpre=/usr/sbin/nginx -t execstart=/usr/sbin/nginx execreload=/bin/kill -s hup $mainpid execstop=/bin/kill -s quit $mainpid privatetmp=true [install] wantedby=multi-user.target
这个文件告诉systemd
:
- nginx是一个什么样的服务(
[unit]
部分)。 - 如何启动、重新加载和停止nginx(
[service]
部分)。 - 在哪些情况下需要启动nginx(
[install]
部分)。
2. 重新加载systemd配置
保存并关闭nginx.service
文件后,我们需要通知systemd
有一个新的服务配置。这可以通过下面的命令来完成:
sudo systemctl daemon-reload
3. 设置nginx服务开机自启,并启动服务
接下来,我们希望nginx在系统启动时自动运行,并且现在就启动它。这可以通过下面的两个命令来完成:
sudo systemctl enable nginx.service sudo systemctl start nginx.service
4. 检查nginx状态
最后,我们可以使用下面的命令来检查nginx的状态:
sudo systemctl status nginx.service
如果一切正常,你应该能看到类似“active (running)”的状态信息。
5.自动重启的魔法
那么,自动重启的魔法在哪里呢?其实,它就在我们刚刚创建的nginx.service
文件中。当nginx因为某些原因意外退出时,systemd
会根据这个文件的配置自动尝试重新启动nginx。
6.shell脚本+计划任务
如果停止后,还可以手工正常启用nginx,那可以考虑把shell脚本添加到宝塔的计划任务里,定时每隔几分钟检测一次,让nginx自动检测停止后立马启用。
ps=`ps -efl|grep nginx|grep -v $0|grep -v grep|wc -l` if [ $ps -eq 0 ]; then echo -e "\n$(date '+%y-%m-%d %h:%m:%s') start " /etc/init.d/nginx start echo "$(date '+%y-%m-%d %h:%m:%s') done" else echo $(date +%f%n%t) "nginx正在运行..." exit 0; fi
宝塔中计划任务
如果没有安装宝塔可以使用crontab来实现即可。
现在,你已经知道如何配置nginx以实现自动重启了!
发表评论