VagrantでWebサーバー(Apache)を構築し、httpdが自動起動されるよう設定したはずなのに、サーバーを再起動した時にhttpdが自動起動してくれなかったので、その原因と対策を紹介する。
httpdの自動起動設定
サーバーにSSH接続し、下記のコマンドで自動起動の設定を行うことができる。
1 | systemctl enable httpd.service |
設定状況を確認する際は下記のコマンドだ。
1 | systemctl is-enabled httpd |
上手く設定されていればenabledの結果が返るはずだ。
httpdが自動起動しない原因とは
設定を確認したところで一度ログアウトし、Vagrantを再起動しログインしなおしてみる。
1 2 3 4 5 6 7 | exit vagrant reload vagrant ssh # サービスの起動状態の確認 sudo -i systemctl status httpd |
先ほど自動起動の設定を行ったにも関わらず、Active:failedの結果が返りサービスが停止していることが分かる。
さて、この原因について調べてみた。
以前、CentOS7にインストールしたApacheの公開ディレクトリをローカルと同期させる方法を紹介した。
どうやら原因はここにあるようだ。
シンボリックリンク作成の際、デフォルトの公開ディレクトリを削除したことで、上手くサービスが起動されなくなってしまったのだ。
httpd自動起動失敗の対策について
まず、自動起動設定を解除しログアウトする。
1 2 | systemctl disable httpd.service exit |
ここでVagrantfileに以下のコードを追記(endの直前)する。
1 2 3 | config.vm.provision "shell" , run: "always" , :inline => <<-COMMAND sudo systemctl start httpd COMMAND |
追記したらVagrantを再起動。
1 | vagrant reload |
この時点で一度ブラウザでhttp://192.168.33.10へアクセスしてみる。
公開ディレクトリに設置したWebページが表示されればOKだ。
SSHでもサービスの起動状態を確認しておこう。
1 2 3 4 | vagrant ssh sudo -i systemctl status httpd |
Active: active (running)と表示され、Vagrant起動時にhttpdサービスも同時に起動されていることがわかる。