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サービスも同時に起動されていることがわかる。