[Windows] Vagrantでざっくりと仮想環境構築3

前回までに、Vagrantで仮想環境を構築して、Chefを用いて、phpやmysqlのインストールを行った。

今回は、httpd.confを自動配置する。

まずは、cookbooksのhttpフォルダのrecipesフォルダと同じ階層に、templates/default/ とフォルダ階層を作る。
そして、そこに、httpd.conf.erbというファイルを作成する。
このhttpd.conf.erbに、サーバ上の/var/etc/httpd.confの内容などをコピーする。
VagrantTemplate

そして、http/recipes/default.rbに下記を追加する。

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)は、下記のように書き直し、

#DocumentRoot "/var/www/html"
DocumentRoot "<%= node[:http][:docRoot] %>"

Vagrantfileのchefの設定等が書いてある部分に、下記のように書く。

chef.json = {
    http:{
     docRoot: "/vagrant/"
  }
}

DocumentRootは/vagrant/とになる。

 

この/vagrant/は、vagrant up 時にホストOSとの共有フォルダになる。
つまり、共有フォルダをドキュメントルートとすることで、ホストOSでの修正が直ちに仮想OSのドキュメントルート上のファイルの修正となる。

ちなみに、共有フォルダをドキュメントルートとする場合は、いくつか問題がある。

静的ファイルが更新されない。

下記のようにhttpd.confの設定を見直しておこう。

EnableSendfile off

理由が知りたければ、ネットで先人たちの歩みを探してほしい。

httpdサービスが自動起動しない。

これは、共有フォルダの/vagrant/がマウントされる前に、httpdサービスが起動しようとすることが原因らしい。
先人たちが、色々とやっているが、あきらめて毎回provisionするのが楽。

 

次回は、複数の開発環境を立ち上げる。

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>