VagrantでWebサーバー(Apache)を構築し、httpdが自動起動されるよう設定したはずなのに、サーバーを再起動した時にhttpdが自動起動してくれなかったので、その原因と対策を紹介する。

httpdの自動起動設定

サーバーにSSH接続し、下記のコマンドで自動起動の設定を行うことができる。

systemctl enable httpd.service

設定状況を確認する際は下記のコマンドだ。

systemctl is-enabled httpd

上手く設定されていればenabledの結果が返るはずだ。

httpdが自動起動しない原因とは

設定を確認したところで一度ログアウトし、Vagrantを再起動しログインしなおしてみる。

exit
vagrant reload
vagrant ssh

# サービスの起動状態の確認
sudo -i
systemctl status httpd

先ほど自動起動の設定を行ったにも関わらず、Active:failedの結果が返りサービスが停止していることが分かる。

さて、この原因について調べてみた。

以前、CentOS7にインストールしたApacheの公開ディレクトリをローカルと同期させる方法を紹介した。

どうやら原因はここにあるようだ。

シンボリックリンク作成の際、デフォルトの公開ディレクトリを削除したことで、上手くサービスが起動されなくなってしまったのだ。

httpd自動起動失敗の対策について

まず、自動起動設定を解除しログアウトする。

systemctl disable httpd.service
exit

ここでVagrantfileに以下のコードを追記(endの直前)する。

config.vm.provision "shell", run: "always", :inline => <<-COMMAND
  sudo systemctl start httpd
COMMAND

追記したらVagrantを再起動。

vagrant reload

この時点で一度ブラウザでhttp://192.168.33.10へアクセスしてみる。

公開ディレクトリに設置したWebページが表示されればOKだ。

SSHでもサービスの起動状態を確認しておこう。

vagrant ssh

sudo -i
systemctl status httpd

Active: active (running)と表示され、Vagrant起動時にhttpdサービスも同時に起動されていることがわかる。