CentOS6の、Docker+Chef-soloでRuby+rbenvのインストールまで完了するCookbookのレシピがあり、そのレシピをVagrant+ChefというKnife soloでリモート実行する試験をしてOKだったもんが、Centos5だとエラーになる!ってことで
一応前回の日記の続き。
レシピをリモート実行するとそのレシピの状態となる事を利用して、普通にNginxとPHPを入れてみたいと思います。
失敗したらまたknifeでレシピを読ませたらいいのだ。はっはー。
epelはすでにインストール済みなので、searchで見てみる。
[takeken@localhost ~]$ yum --enablerepo=epel search php-fpm Loaded plugins: fastestmirror, security Warning: No matches found for: php-fpm No Matches found [takeken@localhost ~]$ sudo yum --enablerepo=epel search php | grep fpm [takeken@localhost ~]$
なかった。
これで終わるようではわざわざネタに選んだ意味がないというものだ。
そうそう、PHPじゃなくてPHP-FPMがなぜ要るのかというとNginx、MySQLと連動させるにはこいつが必要らしい。
epelにはなかったが、どうやらremiにあるらしい。
http://rpms.famillecollet.com/
Les RPM de Remi:
[takeken@localhost ~]$ sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi [takeken@localhost ~]$ [takeken@localhost ~]$ sudo rpm -ivh remi-release-5.rpm 準備中... ########################################### [100%] 1:remi-release ########################################### [100%] [takeken@localhost ~]$
バージョンの確認をしてみたところ、epelがCentos6に提供しているのが
php-fpm.x86_64 5.3.3 40.el6_6 updates
に対して
remiがCentos5に提供しているのが
php-fpm.x86_64 5.4.35-1.el5.remi remi
でした。
ちょっと意外。
ではホストOSに戻りまして、CookbookとBerksfileにそれぞれ追記をする。
[takeken@ubuntu]$ vi Berksfile cookbook 'yum-epel' [takeken@ubuntu]$ berks vendor cookbooks Installing yum-remi (0.1.0) [takeken@ubuntu]$ vi nodes/docker.json "recipe[yum-remi]",
今になって気づいたんだけれど、Vagrant+Chefの場合はVagrantfileにJsonを書くのが通常なようだ。それでようやくvagrant provisionが使えるようだ。
超いまさらなことだと思いますが、Docker+Chefに読み替えていたので許してくり。
だもんで、いまはknife-soloで進めるよ~。
[takeken@ubuntu]$ knife solo cook vagrant@centos5 nodes/docker.json Recipe: php-env::default * yum_package[php-fpm] action install - install version 5.4.35-1.el5.remi of package php-fpm * yum_package[php-pecl-zendopcache] action install - install version 7.0.3-1.el5.remi of package php-pecl-zendopcache * service[php-fpm] action enable - enable service service[php-fpm] * service[php-fpm] action start - start service service[php-fpm] [vagrant@localhost ~]$ php -v PHP 5.4.35 (cli) (built: Nov 14 2014 07:13:44) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
というわけで、remiのCookbookを追加という部分を増やしたら解決してしまいました。
すんなりいくと、何だか憂鬱な気分になるなぁ・・・。
では編集を
[takeken@localhost ~]$ vim /etc/nginx/nginx.conf
ここで気づいたのですが、Centos6だとyum install vimで通りますがCentos5だとvim-enhancedなりしないといけないので、コメントアウトしてたのでした。
ここで端末からsudo yum install vim-enhancedとやってしまうと、code as infrastructureにならんのでそれはご法度だ。
そこは守るぞ。
[takeken@ubuntu]$ vi site-cookbooks/base/recipes/default.rb %w{ ** ** vim-enhanced ** }.each do |p|
と、この中に追記しました。
試す、修正する。これの繰り返しですだね。
[takeken@ubuntu]$ knife solo cook vagrant@centos5 nodes/docker.json [takeken@localhost ~]$ vim --version VIM - Vi IMproved 7.0 (2006 May 7, compiled Jan 8 2013 23:55:00)
入りました。
さて、Windowsのブラウザでphpinfo();の確認をするにはどうすればいいでしょうか。
トンネリングを作るより楽なのはポートフォワードでしょう。
ログアウトして、ホストOSでVagrantfileを編集します。
forwarded_portのコメントアウトを外します。
[takeken@ubuntu]$ vi Vagrantfile config.vm.network "forwarded_port", guest: 80, host: 8080 [vagrant@localhost ~]$ sudo shutdown -h now [takeken@ubuntu]$ vagrant halt [takeken@ubuntu]$ vagrant up
ちゃんと動いたっぽいので192.168.24.58:8080にアクセスしてみます。
OKです。
レシピを作るゾと言いながらも、remiのCookbookを追加して終わった。
最近はすべて予約投稿にしているのですが、なかなかゆとりが出来ていいね。
だが日記なのに予約投稿ってのは少し矛盾している気がする。
まぁまぁ、気にしない気にしない。
今回のネタは、そもそもCentos5の環境がいま必要なのかというと全然そうでもなくて、単にいつでも触れるようにというだけの理由で作っていたので、いまいちモチベーションが上がらず、本番サーバー、すなわちこのブログがあるサーバーはCentos6なので、正直言うと、この件にそれほど時間を費やす必要もなくて、せっかくなのでやっちゃおうって事で。おそらく一筋縄ではいかないだろうなぁと予測されるので、それは面白そうってことで採用!