前回までに、Vagrantで仮想環境を構築して、Chefを用いて、phpやmysqlのインストールを行った。
今回は、httpd.confを自動配置する。
まずは、cookbooksのhttpフォルダのrecipesフォルダと同じ階層に、templates/default/ とフォルダ階層を作る。
そして、そこに、httpd.conf.erbというファイルを作成する。
このhttpd.conf.erbに、サーバ上の/var/etc/httpd.confの内容などをコピーする。
そして、http/recipes/default.rbに下記を追加する。
1 2 3 4 5 |
template "httpd.conf" do path "/etc/httpd/conf/httpd.conf" source "httpd.conf.erb" mode 0644 end |
これで、vagrant reload とすれば、httpd.conf.erbの内容が/etc/httpd/conf/httpd.confにまるっとコピーされる。
もし、一部の内容を書き換えたい場合(例:DocumentRoot)は、下記のように書き直し、
1 2 |
#DocumentRoot "/var/www/html" DocumentRoot "<%= node[:http][:docRoot] %>" |
Vagrantfileのchefの設定等が書いてある部分に、下記のように書く。
1 2 3 4 5 |
chef.json = { http:{ docRoot: "/vagrant/" } } |
DocumentRootは/vagrant/とになる。
この/vagrant/は、vagrant up 時にホストOSとの共有フォルダになる。
つまり、共有フォルダをドキュメントルートとすることで、ホストOSでの修正が直ちに仮想OSのドキュメントルート上のファイルの修正となる。
ちなみに、共有フォルダをドキュメントルートとする場合は、いくつか問題がある。
静的ファイルが更新されない。
下記のようにhttpd.confの設定を見直しておこう。
1 |
EnableSendfile off |
理由が知りたければ、ネットで先人たちの歩みを探してほしい。
httpdサービスが自動起動しない。
これは、共有フォルダの/vagrant/がマウントされる前に、httpdサービスが起動しようとすることが原因らしい。
先人たちが、色々とやっているが、あきらめて毎回provisionするのが楽。
次回は、複数の開発環境を立ち上げる。