设置nginx开机自启
一:配置nginx.service
服务单元文件
如果有该文件并执行后面步骤成功则跳过此步骤。
cd /usr/lib/systemd/system
进入对应目录。vim nginx.service
使用vim创建(或编辑)nginx的服务单元文件,将下面代码根据配置项说明修改
后复制进编辑器中并保存文件。- 保存成功后通过
sudo systemctl daemon-reload
命令重新加载Systemd配置。
[Unit]
Description=Nginx Web Server
After=network-online.target
Wants=network-online.target
[Service]
User=root
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
Restart=on-failure
PrivateTmp=false
[Install]
WantedBy=multi-user.target
配置项说明
[Unit]
部分
Description
:提供有关服务的描述信息。After
:指定服务启动应在network-online.target
(联网成功)之后。Wants
:希望服务启动应在network-online.target
(联网成功)之后。
[Service]
部分
不同服务器nginx安装和配置的路径不同按照实际情况配置必须要加全目录地址和命令。
User
:指定服务运行的用户。默认情况下基本是Nginx,如果登录用户和配置用户不同会出现后续会出现217/USER
报错(最常见报错原因)。PIDFile
:指定PID文件的位置。可以在nginx对应的conf配置文件nginx.conf
中查看对应pid位置。ExecStartPre
:服务启动之前执行的命令,也就是启动nginx的命令/usr/local/nginx/sbin/nginx
,
一定注意必须配置此项否则某些系统版本重启后无法自启nginx(最折磨的问题)。ExecStart
:服务启动时执行的命令,也就是启动nginx的命令/usr/local/nginx/sbin/nginx
。ExecReload
:服务重启时执行的命令,也就是重启nginx的命令/usr/local/nginx/sbin/nginx -s reload
。ExecStop
:服务关闭时执行的命令,也就是关闭nginx的命令/usr/local/nginx/sbin/nginx -s stop
。Restart
:重启策略,on-failure
指定服务在失败时重启。PrivateTmp
:控制服务是否拥有私有的临时文件系统。
[Install]
部分
WantedBy
:指定服务应该在哪些目标下被激活。multi-user.target
表示在多用户模式下自动启动。必须得加否则无法开机自启。
二:通过systemctl
设置开机启动nginx
sudo systemctl daemon-reload
重新加载Systemd配置。sudo systemctl start nginx
启动Nginx服务。sudo systemctl status nginx
检查Nginx服务是否启动成功。
下面有启动成功截图,如有报错查看上面的配置项说明并修改nginx.service
服务单元文件,然后重新按照顺序执行systemctl章节的所有命令。sudo systemctl enable nginx
设置开机自动启动nginx服务。reboot
重启服务器验证nginx是否自启成功。