Nginx が起動しない場合(nginx.service: Failed with result ‘timeout’.)の対応

1.通常の場合

$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

$ sudo systemctl start nginx.service

$ sudo systemctl enable nginx.service

こうやれば、次回からは起動時からnginxが起動してくれるはずだ。

2.どうしても起動しない場合がある

(1)エラーを調査

$ systemctl –failed

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: failed (Result: timeout) since Fri 2018-12-07 14:33:23 JST; 4min 44s ago
  Process: 372 ExecStart=/usr/bin/nginx -g pid /run/nginx.pid; error_log stderr; (code=killed, signal=TERM)

Dec 07 14:31:53 kurafuto systemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 07 14:33:23 kurafuto systemd[1]: nginx.service: Start operation timed out. Terminating.
Dec 07 14:33:23 kurafuto systemd[1]: nginx.service: Failed with result 'timeout'.
Dec 07 14:33:23 kurafuto systemd[1]: Failed to start A high performance web server and a reverse proxy server

どうもエラーログファイル(4行目)関連らしい。

(2)ログファイルの見直し

それではとエラーログを見直す

このときの、nginx.confファイルには、

error_log /var/log/nginx/error.log;

を設定していたので。

$ ls -al /var/log/nginx/

-rw-r----- 1 http log  102181 Dec  7 11:36 access.log
-rw-r----- 1 http log   22209 Dec  1 22:49 access.log.1.gz
-rw-r--r-- 1 root root   1847 Nov 24 23:24 access.log.2.gz
-rw-r--r-- 1 root root      0 Dec  7 14:23 error.log

グループとパーミッションが変だと考え、以下のように直してみた。

$ sudo chown http:log /var/log/nginx/*

$ sudo chmod 640 /var/log/nginx/*

$ ls -al /var/log/nginx/

-rw-r----- 1 http log  120555 Dec  7 14:57 access.log
-rw-r----- 1 http log   22209 Dec  1 22:49 access.log.1.gz
-rw-r----- 1 http log    1847 Nov 24 23:24 access.log.2.gz
-rw-r----- 1 http log       0 Dec  7 14:23 error.log

そして再起動

$ sudo shutdown -r now

再びログイン後

$ systemctl –failed

0 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

起動に失敗したサービスはないので、これで解決した(実は「と思った」だけだった。)

3.再度の見直し

うまく行ったと思ったのですが、再起動すると再び同じエラーに直面しました。やはり同じ症状です。

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: failed (Result: timeout) since Sun 2018-12-09 13:29:03 JST; 8min ago
  Process: 408 ExecStart=/usr/bin/nginx -g pid /run/nginx.pid; error_log stderr; (code=killed, signal=TERM)

Dec 09 13:27:33 kurafuto systemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 09 13:29:03 kurafuto systemd[1]: nginx.service: Start operation timed out. Terminating.
Dec 09 13:29:03 kurafuto systemd[1]: nginx.service: Failed with result 'timeout'.
Dec 09 13:29:03 kurafuto systemd[1]: Failed to start A high performance web server and a reverse proxy server.

ぐぐるとcentos 7: nginx Failed to read PID from file /run/nginx.pid: Invalid argumentが見つかったので、

$ sudo nano /usr/lib/systemd/system/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=/run/nginx.pid
PrivateDevices=yes
SyslogLevel=err
ExecStartPre=/usr/bin/rm -f /run/nginx.pid ← この位置にこの行を挿入
ExecStart=/usr/bin/nginx -g 'pid /run/nginx.pid error_log stderr;'
ExecReload=/usr/bin/nginx -s reload
KillMode=mixed

[Install]
WantedBy=multi-user.target

$ sudo shutdown -r now

$ systemctl –failed

0 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

 今度こそOKと行きたいですが、これで暫く様子を見ます。

2018-12-13 追記

手動で起動できるのですが、サービスでは起動できる場合とできない場合があって問題の特定には至っていません。

今後の課題です。

4.再々の見直し

2018.12.20 追記

理解できていないのですが、種々試すうちに、  type= forking  から simple に変更すると、nginx.pid ファイルも作成され無事に起動することができました。

forking だと 他の外部的サービスの起動を待って起動しようとするが、それがうまく行かないと Nginx は起動できない。これに対し simple にすると自分の判断で起動させようとするので、外部的要因に引きづられることなく起動する?

$ sudo nano /usr/lib/systemd/system/nginx.service

type=simple

 【参考】 

https://teratail.com/questions/92264

http://enakai00.hatenablog.com/entry/20130917/1379374797

その他の原因については、nginxを起動したら、起動に失敗しました。

コメント

タイトルとURLをコピーしました