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


11

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

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

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

ただし、次を使用して手動で開始/再起動します

sudo service apache2 start/restart

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

回答:


10

実行してみてください

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

ルートとして。

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

man update-rc.d

1
どうもありがとう、私はコマンドを実行しました(ランレベルのリストなし、デフォルトのみ)、そしてそれはうまくいくようです。なぜ機能しなくなったように見えるのか知っていますか?initスクリプトをいじることはしませんでした。コマンドラインからApacheを停止したと思いますが、永久に停止するつもりはありませんでした。:-)
カールステンアガー

なぜ動作を停止したのか、私には何の意見もありません:)更新後、何かが正しく動作しなくなったのかもしれません。
イグナー

感謝しますが、助けにはなりません。update-rc.d apache2 enableの呼び出し方法に関係なく、apacheは再び自動的に実行を停止します。常に手動で起動する必要があります。手動で行うと常に正しく起動するため、実際の問題はないようです。
カールステンアガー

9

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

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

  • 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を再度有効にすることでした。

sudo update-rc.d apache2 enable

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

注意:

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

System start/stop links for /etc/init.d/apache2 already exist.

1
ありがとうございました!これは、構成のトラブルシューティングに非常に役立ちました。
reor

1
私はこの問題を抱えていますが、この解決策は驚くほどうまくいきませんでした。実行sudo update-rc.d apache2 enable defaultsすると、持っているものが削除され、すぐに元に戻ります。私が持っているK09apache2RC0、1、および6、そして私が持っているS91apache2RC2、RC3、RC4、RC5に。service apache2 start正常に動作しますが、自動的に起動しないため、再起動するたびに実行する必要があります。一方、mysqlは常に正常に起動します。
バトルバットス

1
それらは正しく見えます。特定の問題の詳細を含む新しい質問を開き、あなた/var/log/syslogとからの関連する行を含めるようにしてください/var/log/apache2/error.log。質問へのリンクを私にメッセージを送ってください、そして、私が助けることができるかどうか見ます。
カールウィルバー

3

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

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

どうして?

それは言います:

Include sites-enabled/

ただし、セットアップした2つのサイトは、暗号化された自分のホームディレクトリにあります。

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

解決?

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

#!/bin/bash

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

exit 0

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

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


ログにエラーが見つからなかったことに驚いています。過去に、Apache起動エラーの一部が、予想したログファイルではなく、仮想ホストの1つのログファイルにあることを発見しました。これは事実でしょうか?
マリウスゲドミナス

apachectl configtestデーモンとして実行中に、ファイルにアクセスする権限がないことを通知していました。
アヌガ

1

この問題を探している(グーグルで)他の人については、以下を実行するかどうかを確認してください。

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はUbuntu Serverの代替 Chkconfigを参照してください


0

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

リソースがまだマウントされていないため、Apacheがディレクトリを認識していなかったことがわかります。Vagrantの規定を書き直してsites-enabled、シンボリックリンクを追加する代わりにディレクトリをコピーするだけにしました。

また、Apache initが有効になっていることを確認するようにsudo update-rc.d apache2 enable提案しKarl Wilburました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.