httpdのドキュメントルートを共有フォルダ(synced_folder)に設定していると、httpdの起動時にフォルダが存在しなくて、Vagrant起動時にhttpdの起動に失敗する時があります
そんな時は、こんなエラーが出でます
(/vagrant/wwwがドキュメントルート)
# sudo systemctl status httpd.service
... 省略 ...
Apr 10 02:33:55 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Apr 10 02:33:56 localhost.localdomain httpd[915]: AH00526: Syntax error on line 120 of /etc/httpd/conf/httpd.conf:
Apr 10 02:33:56 localhost.localdomain httpd[915]: DocumentRoot '/vagrant/www' is not a directory, or is not readable
Apr 10 02:33:56 localhost.localdomain systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
... 省略 ...
解決法
httpdの自動起動を止めて、vagrant up時にhttpd起動コマンドを実行します
httpdの自動起動を停止
# sudo systemctl disable httpd.service
vagrant up時にhttpdを起動
Vagrantfileの最後のendの前に、起動用のスクリプトを追加
Vagrantfile
config.vm.provision "shell", run: "always", :inline => <<-COMMAND
sudo systemctl start httpd.service
COMMAND
end # ファイル最後のend
余談:
複数コマンドを実行したい場合などは、シェルファイルを実行すると便利
Vagrantfile
config.vm.provision "shell", run: "always", :path => "./startup.sh"
end # ファイル最後のend
../startup.sh
sudo systemctl start httpd.service