前回作ったVagrantfileに、本書で提供されている同ファイルの中の、おいしい部分を横領させていただきつつ、自分環境を作りたいです。
ただですね、考えれば考えるほど、本書で提供されている環境は使いやすい。んです。自分が考えたように、マウントを利用せず、centOSの中にだけcakePHPの環境を作ったとします。
すると、開発の仕方が限られるというか、かなりの不自由を強いられそうです。
PuTTYで、ログインし、vimとかでガシガシソースを書くか?
レンタルサーバとのやりとりみたいにFTPでやり取りするか?
それもぜんぜんありですが、本書で提供されているホストOSとゲストOSでプロジェクト部分がマウントされているというのは本当に学習しやすい。真似しちゃおうかな。。心が動きます。
プランBに切り替えましょう!本書が提供してくれているところに相乗りしてこの中にCakePHP環境を作ってしまえ!
そのためには、いろいろ考えなければいけません。作者さんごめんなさい。勝手に遊ばしてもらってます。
まず、WEBルートの問題です。本書での設定ではWEBルートをFuelPHPのpublicを直撃しているので、複数プロジェクトを扱うことが出来ません。本書専用になっています。これをある意味Xamppのhtdocsのような汎用的なWEBルートにする必要があります。
本書のfuelphp.confのような設定がない場合、centOS上のhttpdのWEBルートはどうなるんでしょう?
自分が作った超シンプルVirtualBoxに、httpdだけインストールして、startさせて試してみることにします。
なんか回りくどいことしてるでしょ?仕方ないんすよ。こうやって自分で納得しつつ学習していく方法でしか進めないんです。超落ちこぼれなもんで。。
まず、例の勝手なマウントを抑制する一行を横領します。
config.vm.synced_folder ‘.’, ‘/vagrant’, disabled: true
それから、bootstrap.shをキックしている部分を横領します。
# -*- mode: ruby -*- # vi: set ft=ruby : config.vm.box = "bento/centos-6.7-i386" config.vm.synced_folder '.', '/vagrant', disabled: true config.vm.provision :shell, path: 'bootstrap.sh' end
マイVagrantfileはこんな感じになりました。
そして、大物、bootstrap.shをガツっと横領します。
元のbootstrap.shを見てみましょう。
#!/usr/bin/env bash rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 yum install -y httpd yum install -y mysql-server yum install -y php yum install -y epel-release rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 yum install -y phpMyAdmin ln -s /mnt/fuelphp /home/vagrant/fuelphp cp /mnt/fuelphp/vagrant/*.conf /etc/httpd/conf.d curl get.fuelphp.com/oil | sh sed -i 's/^#ServerName www.example.com:80$/ServerName localhost:80/' /etc/httpd/conf/httpd.conf sed -i 's/^;date.timezone =$/date.timezone = Asia\/Tokyo/' /etc/php.ini chkconfig httpd on chkconfig mysqld on service httpd start service mysqld start mysqladmin -u root password root
ここから必要と思えるものだけ残します。
#!/usr/bin/env bash rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 yum install -y httpd sed -i 's/^#ServerName www.example.com:80$/ServerName localhost:80/' /etc/httpd/conf/httpd.conf chkconfig httpd on service httpd start
一行目の
rpm –import
は何してるのか、よく分かってません。なんとなくいるかなーくらいの感じで残してます。
あとは、httpdのインストールと、設定と起動に必要と思えるものだけ残しました。
ものは試しで起動してみます。
なんか怒られたし。
ひどい。Vagrantfileの重要な一行を一緒に消しちゃってました。
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure(2) do |config| config.vm.box = "bento/centos-6.7-i386" config.vm.synced_folder '.', '/vagrant', disabled: true config.vm.provision :shell, path: 'bootstrap.sh' end
気を取り直してもう一度。
最後にprovisioningどうたらこうたらというのが出ているのですが、already Provisioned.と言っているので、設定済みだぜ、一昨日来やがれ的な扱いに見えます。実際にPuTTYで見るとhttpd自体インストールされた気配がありません。
出力ログを見ると
vagrant provisionを走らせんかい、このマヌケ!的な記述があるので、そのままやっていますか。
結果的に、一度vagrant haltして、再度
vagrant up –provision
を実行しました。そしたら、これ!
なんかそれっぽいですよね!
starting httpd[OK]とか言ってるし!
しかし、documentrootがどこか分からない。通常デフォルトのhttpdですと
/var/www/html
だとは思うのですが。
/etc/httpd/conf/httpd.confでその記述を見つけました。
Documentrootが空でんねん。
これでは確かめようがないので、なんかhtmlを置きます。テスト用の。
しかし、つながりません。むむむ。
出力ログから見ると、確かにhttpdは起動しているように見えます。それがホストOSからアクセス出来ないのだと、仮定すると、気になってくる一行があります。
config.vm.network ‘forwarded_port’, guest: 80, host: 8000, host_ip: ‘127.0.0.1’
これを横領して自分のVagrantfileに加えてみます。
今度は –provisionをつけてない、ただのvagrant upです。provisionは一度やっておけば変更がない限り不要のようですね。で、
これは/var/www/htmlに置いたindex.htmlが表示されています。
これで、本書でのfuelphp.confなどを使わなければ、デフォルトの/var/www/htmlがドキュメントルートになることが分かりました。
もうひとつ実験したいです。
この8000打たないで済むようにできないのかなぁ。。Vagrantfileをいじって試してみます。
config.vm.network ‘forwarded_port’, guest: 80, host: 80, host_ip: ‘127.0.0.1’
ゲストもホストも80にしちゃいました。
再起動してみます。
行けましたね。httpは80は省略できるので、localhostだけでアクセスできるようになりました。
ここまで確認作業が出来たところでいよいよプランBを練ります。
1)本書で提供されている環境をそのまま利用する
2)ドキュメントルートはデフォルトの/var/www/htmlにして、/mnt/fuelphp/public/のシンボリックリンクをドキュメントルートに置く
※ここまでやって一度動作確認です。今までと同じく動かないといけません。
3)c:\donichi\cakephpを作り、その中にcakephpの構成ファイルを配置する
4)c:\donichi\cakephpを/mnt/cakephpにマウントする
5)cakephpにもwebrootというディレクトリがあって、fuelphpでいうところのpublicフォルダと同じような役目をしそうに見えるので、そのシンボリックリンクを/var/www/htmlに置く
これで、ひとつのcentOSサーバ環境でどちらの開発も出来るんじゃね?と企みました。
作者さん、いじり倒しちゃってごめんなさいm(_ _)m
そして、楽しい環境をありがとうございますm(_ _)m
おおよその計画が出来たところで、また次回です。