web-dev-qa-db-ja.com

サーバーの再起動後にnginxが起動しない

Built-from-src nginx 1.2.6インストールからUbuntu 13.04の1.4.1に移動しました。

Ubuntu PPA経由でインストール http://wiki.nginx.org/Install#Ubuntu_PPA 。これはすべてうまくいきました。

手動で、サービスをリロード/開始/停止して

Sudo service nginx <command>

サーバーの再起動後、nginxが単独で起動しません。

以前の手動のインストールでは、/ etc/initに手書きのUpstartスクリプトがあり、問題なく動作しました。 PPAのインストールでは/etc/init.d/スクリプトが設定されているので、何かをハッキングするのではなく、PPAメソッドを使い続けたいと思います。

サービスインターフェースに詳しくないので、足りないものがあるのか​​もしれません。

/var/log/nginx/access.logとerror.logも確認しましたが、起動プロセス中に何も記録されていません。

これを修正するにはどうすればよいですか?

18
Geuis

Sudo update-rc.d nginx enableは私のために働きました。

24
webjay

Ubuntuの経験はあまりありませんが、chkconfigを実行してみましたか?

あなたが試すことができます:

# Sudo update-rc.d nginx defaults

または:

# Sudo apt-get install chkconfig

# Sudo chkconfig nginx on
16
badazzhindu

UPDATE 2016年3月28日

NGinX wikiへのプルリクエストとして、以下に提案するUbuntu Upstartスクリプトの小さな改善を提出しました。 私のプルリクエストが受け入れられ、パッチがマージされました


私はUbuntu 14.04 LTSを使用していて、同じ問題がありました。 NginXはSudo service nginx restartを使用して問題なく起動できましたが、サーバーの起動時に自動的に起動しませんでした。

NGinX buntu Upstart Wikiページの指示に従いましたが、うまくいきませんでした(最初は)。それで、少し掘り下げました。まず、Ubuntuが起動時にNGinXを起動しようとしたが失敗したことがわかりました。

$ Sudo cat /var/log/boot.log
...
* Starting nginx http daemon                                            [fail]
...

次に、initctl upstartジョブのログファイルを見つけました。

$ cat /var/log/upstart/nginx.log
...
nginx: [emerg] Host not found in upstream "<mydomain>:443" in /etc/nginx/sites-enabled/mydomain:2
...

そのため、NGinX起動スクリプトがネットワークインターフェイスが起動する前に実行されていたことがわかりました。 このサーバー障害の回答 は、NginX Ubuntu Upstartスクリプトを修正するために必要なヒントを教えてくれました。要約すると、「!」がないため、IFACE=loIFACE!=loに変更する必要がありました。便宜上、以下の完全なスクリプトを貼り付けました。

# nginx

description "nginx http daemon"
author "George Shammas <[email protected]>"

start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [!2345]

env DAEMON=/usr/sbin/nginx
env PID=/var/run/nginx.pid

expect fork
respawn
respawn limit 10 5
#oom never

pre-start script
        $DAEMON -t
        if [ $? -ne 0 ]
                then exit $?
        fi
end script

exec $DAEMON

再起動後、NGinXが現在実行されているかどうかを確認しました。

$ Sudo initctl list | grep nginx
nginx start/running, process 1551

私の調査結果について、このスクリプトの作成者に通知します。

1
Visionscaper

私にとっては、Sudo apt-get update --fix-missingインストール前Sudo apt-get install nginx

アーキテクチャ:armv7l

OS:raspLITE

0
Maddocks

Visionscaperの回答に加えて、標準の信頼できるリポジトリからインストールされたnginxは、upstartではなくsysvinitサービスファイルを使用します。したがって、upginのnginxサービスの代わりにrc-sysinit upstartサービスを編集します。これには、アップスタートオーバーライドを使用することをお勧めします。

# echo "start on (filesystem and net-device-up IFACE!=lo) or failsafe-boot" > /etc/init/rc-sysinit.override
0
reddot