linux中设置nginx开机自启配置nginx.service服务单元文件(阿里云ECS)

210 阅读2分钟

设置nginx开机自启

一:配置nginx.service服务单元文件

如果有该文件并执行后面步骤成功则跳过此步骤。

  1. cd /usr/lib/systemd/system进入对应目录。
  2. vim nginx.service使用vim创建(或编辑)nginx的服务单元文件,将下面代码 根据配置项说明修改 后复制进编辑器中并保存文件。
  3. 保存成功后通过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

  1. sudo systemctl daemon-reload重新加载Systemd配置。
  2. sudo systemctl start nginx启动Nginx服务。
  3. sudo systemctl status nginx检查Nginx服务是否启动成功。
    下面有启动成功截图,如有报错查看上面的配置项说明并修改nginx.service服务单元文件,然后重新按照顺序执行systemctl章节的所有命令。
  4. sudo systemctl enable nginx设置开机自动启动nginx服务。
  5. reboot重启服务器验证nginx是否自启成功。

成功启用截图

image.png