nginx.service 是这样编写的
[Unit]
Description=A high performance web server and a reverse proxy server
After=network.target network-online.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
PrivateDevices=yes
SyslogLevel=err
ExecStart=/usr/local/nginx/sbin/nginx -g 'pid /usr/local/nginx/logs/nginx.pid; error_log stderr;'
ExecReload=/usr/local/nginx/sbin/nginx -s reload
KillMode=mixed
[Install]
WantedBy=multi-user.target
开机后 Nginx 没有正确启动
$ sudo systemctl status nginx
* nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/usr/lib/sys大带宽服务器temd/system/nginx.service; enabled; vendor preset: disabled)
Active: failed (Result: timeout) since Sat 2018-08-04 16:26:14 CST; 10s ago
Aug 04 16:24:44 isthnew systemd[1]: Starting A high performance web server and a reverse proxy server...
Aug 04 16:26:14 isthnew systemd[1]: nginx.service: Start operation timed out. Terminating.
Aug 04 16:26:14 isthnew systemd[1]: nginx.service: Failed with result 'timeout'.
Aug 04 16:26:14 isthnew systemd[1]: Failed to start A high performance web server and a reverse proxy server.
系统是 Arch,nginx 版本 1.15.2,貌似很早之前就出现过了,但是没注意,开机后使用 sudo systemctl start nginx
来启动 nginx 一问题都没有。
仅作对比:
```
[Unit]
Description=A high performance web server and a reverse proxy server
Documentation=man:nginx(8)
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/local/nginx/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/local/nginx/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /usr/local/nginx/logs/nginx.pid
TimeoutStopSec=5
KillMode=mixed
[Install]
WantedBy=multi-user.target
```
手动编译,手动写 systemctl ?
是的
替换了你写的这个也启动不了,systemd 显示启动时间超过 1min30s,然后显示错误
看看 nignx error-log 和 system message,或者直接启动 nginx 试试排除 nginx 配置原因,nginx.service 就那两行,不一定是 systemctl 的问题
journalctl -xe -u nginx.service 的输出?
这样子的话我也不知道了,这个是从 Ubuntu 源里拆出来之后略作修改的。
nginx 日志没有记录到错误,journalctl 还是提示启动超时的那两行
https://askubuntu.com/questions/953920/systemctl-service-timed-out-during-start
依然不工作,放弃了
手动 ok,我猜它启动时某些服务还没 ready,问题应该在 after 那里。
把启动顺序往后调看看是不是这个问题。
有些时候 ssh 上去就开了,默认开机不会打开,这种是什么原因呢
有没有日志? systemctl 或者 nginx
systemctl 日志就是 nginx.service: Start operation timed out. Terminating. nginx 未记录到日志。
刚刚看错楼了,我等下调到 after=php-fpm 后面试试
调到 php-fpm 之后启动时间依然超过 1 分 30 秒然后报错
好像权限问题~我以前也遇到过
```
[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/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
```
Nginx 默认的文件
Nginx 是手动编译的,用这个在 CentOS 和 Ubuntu 上都正常启动
同样不行,有点玄学了
那就不知道了 Nginx 文件权限多少呢 chmod +x ?
能手动 systemctl start nginx 所以跟配置没关系吧
以前的事情啦,有些进程就是这样,不过我现在没弄了