私はラップトップで開発環境をセットアップする一環として、Apacheを何度もインストールしました。
ただし、数か月前に停止したため、起動時に自動的に起動しなくなりました。自宅のラップトップと職場のラップトップでこの問題があります。
どちらの場合も、数か月前にUbuntu 10.10にApacheをインストールし、数週間グリッチなしで使用しましたが、ある日それを停止して、自動的に起動しなくなりました。手動でupdate rcを実行しようとしましたが、initスクリプトはすでに使用されていると言われました。
ただし、手動で開始/再起動する
Sudo service Apache2 start/restart
正常に動作します。どちらの場合も、新しいバージョンで解決されることを望んでいたため、11.04へのアップグレード後までそのままにしておきます。しかし、そうではありません!誰かがApacheをもう一度自動的に起動する方法を教えてくれたらありがたいです。
この場合、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が起動中に不可解にロードに失敗し、ログにエラーが見つからない場合、またはサーバーを手動で起動する場合、必要なすべてのディレクトリが使用可能かどうかを確認することです。これはおそらく他の方法でも解決できます。
実行してみてください
update-rc.d Apache2 enable [list of run levels]
ルートとして。
興味があるかもしれません
man update-rc.d
私は、同じ症状で発生した最近の問題に基づいてこの回答を追加しています。
最初にいくつかの背景データ:
/etc/init.d/
フォルダー内のスクリプトを使用してサービスを開始/停止します。/etc/init.d/
フォルダーに保存されている/etc/rc#.d/
スクリプトへのシンボリックリンクを使用して、「ランレベル」に基づいてサービスを開始/停止します。/etc/rc1.d/
でシンボリックリンクされたスクリプトを実行し、ランレベル2は/etc/rc2.d/
を使用します。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.
この問題を探している(グーグルで)他の人のために、あなたが実行する場合:
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? )
私も同じ問題を抱えていて、ローカルのVagrantセットアップでUbuntu 14を実行しています。 /etc/Apache2/sites-enabled
ディレクトリを削除し、ホームディレクトリへのリンクを追加しました。ホームディレクトリは、もちろんVagrantの構成に従ってローカルドライブにマウントされます。
リソースがまだマウントされていないため、Apacheはディレクトリを認識していませんでした。 Vagrantの条項を書き直して、シンボリックリンクを追加する代わりにsites-enabled
ディレクトリをコピーしました。
Apacheの初期化が有効になっていることを確認するために、Sudo update-rc.d Apache2 enable
が示唆するようにKarl Wilbur
も行いました。