it-swarm-ja.com

Apacheサーバーが自動的に起動しない

私はラップトップで開発環境をセットアップする一環として、Apacheを何度もインストールしました。

ただし、数か月前に停止したため、起動時に自動的に起動しなくなりました。自宅のラップトップと職場のラップトップでこの問題があります。

どちらの場合も、数か月前にUbuntu 10.10にApacheをインストールし、数週間グリッチなしで使用しましたが、ある日それを停止して、自動的に起動しなくなりました。手動でupdate rcを実行しようとしましたが、initスクリプトはすでに使用されていると言われました。

ただし、手動で開始/再起動する

Sudo service Apache2 start/restart

正常に動作します。どちらの場合も、新しいバージョンで解決されることを望んでいたため、11.04へのアップグレード後までそのままにしておきます。しかし、そうではありません!誰かがApacheをもう一度自動的に起動する方法を教えてくれたらありがたいです。

11
Carsten Agger

この場合、Apacheが起動しない理由がわかりました。起動時に画面に出力される出力でのみ、起動ログでこのトレースを見つけることができませんでした。

しかし、ここに行きます:スクリプトの最後の行/etc/Apache2/Apache2.confは失敗しました。

どうして?

それは言います:

Include sites-enabled/

ただし、私が設定したサイトのうち2つは、暗号化された自分のホームディレクトリにあります。

そのため、起動時(Apacheの起動時)にこれらのサイトは存在せず、Apacheは失敗して実行を拒否します。

解決?

「disable_sites」という小さなスクリプトを作成し、それを/etc/rc0.dおよび/etc/rc6.d(シャットダウンおよび再起動)にシンボリックリンクしました:

#!/bin/bash

/usr/sbin/a2dissite vvsshop
/usr/sbin/a2dissite neoflex
/etc/init.d/Apache2 reload

exit 0

また、ログインするたびにサイトを再度有効にするスクリプトを作成し、システム設定にスタートアッププログラムとして追加しました。これで動作します!

したがって、ここでのレッスンは、Apacheが起動中に不可解にロードに失敗し、ログにエラーが見つからない場合、またはサーバーを手動で起動する場合、必要なすべてのディレクトリが使用可能かどうかを確認することです。これはおそらく他の方法でも解決できます。

3
Carsten Agger

実行してみてください

update-rc.d Apache2 enable [list of run levels]

ルートとして。

興味があるかもしれません

man update-rc.d
10
ignar

私は、同じ症状で発生した最近の問題に基づいてこの回答を追加しています。

最初にいくつかの背景データ:

  • Ubuntuは/etc/init.d/フォルダー内のスクリプトを使用してサービスを開始/停止します。
  • Ubuntuは、/etc/init.d/フォルダーに保存されている/etc/rc#.d/スクリプトへのシンボリックリンクを使用して、「ランレベル」に基づいてサービスを開始/停止します。
  • 「S」で始まるシンボリックリンクは、サービスを開始する必要があることを示します。
  • 「K」で始まるシンボリックリンクは、サービスを停止(強制終了)する必要があることを示します。
  • ランレベル1は/etc/rc1.d/でシンボリックリンクされたスクリプトを実行し、ランレベル2は/etc/rc2.d/を使用します。
  • Ubuntuのデフォルトのランレベルは2です。
  • Apacheのインストールでは、基本的にSudo update-rc.d Apache2 defaultsが実行され、/etc/rc#.d/フォルダーに適切なシンボリックリンクが作成されます。

だから、私のサーバー上で、ある時点で誰かがSudo update-rc.d Apache2 disableを実行して、すべての「S」シンボリックリンクを削除し、「K」シンボリックリンクに置き換えたようです。したがって、ランレベルのいずれかを初期化するときにApacheを強制終了するか、Apacheを起動しないだけです。

私の解決策は、Apacheを再度有効にすることでした。

Sudo update-rc.d Apache2 enable

これで、ランレベルの起動時または切り替え時にApacheが期待どおりに起動/停止します。

注意:

もう一度Sudo update-rc.d Apache2 defaultsを実行するだけでは不十分であることに注意してください。シンボリックリンクが存在することを確認し、それらが必要なものであると見なすからです。次のように応答します。

System start/stop links for /etc/init.d/Apache2 already exist.
8
Karl Wilbur

この問題を探している(グーグルで)他の人のために、あなたが実行する場合:

chkconfig |grep httpd

あなたが得る

httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

それ以外の場合:

chkconfig httpd on

(ubuntu chkconfigと同等の申し訳ありませんがupdate-rc.dを参照してください buntuサーバーの代替Chkconfig?

1
dfliess

私も同じ問題を抱えていて、ローカルのVagrantセットアップでUbuntu 14を実行しています。 /etc/Apache2/sites-enabledディレクトリを削除し、ホームディレクトリへのリンクを追加しました。ホームディレクトリは、もちろんVagrantの構成に従ってローカルドライブにマウントされます。

リソースがまだマウントされていないため、Apacheはディレクトリを認識していませんでした。 Vagrantの条項を書き直して、シンボリックリンクを追加する代わりにsites-enabledディレクトリをコピーしました。

Apacheの初期化が有効になっていることを確認するために、Sudo update-rc.d Apache2 enableが示唆するようにKarl Wilburも行いました。

0
user288900