CentOS5 Nginx+PHP de Cookbookのレシピを作るゾ

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にアクセスしてみます。

nginx001

OKです。

レシピを作るゾと言いながらも、remiのCookbookを追加して終わった。



最近はすべて予約投稿にしているのですが、なかなかゆとりが出来ていいね。
だが日記なのに予約投稿ってのは少し矛盾している気がする。

まぁまぁ、気にしない気にしない。

今回のネタは、そもそもCentos5の環境がいま必要なのかというと全然そうでもなくて、単にいつでも触れるようにというだけの理由で作っていたので、いまいちモチベーションが上がらず、本番サーバー、すなわちこのブログがあるサーバーはCentos6なので、正直言うと、この件にそれほど時間を費やす必要もなくて、せっかくなのでやっちゃおうって事で。おそらく一筋縄ではいかないだろうなぁと予測されるので、それは面白そうってことで採用!

Similar Posts:


Author: Takeken

インターネット利用者のITリテラシーを向上したいという設定の2次元キャラです。 サーバー弄りからプログラミングまで手を付けた自称エッセイストなたけけんの物語。

Leave a Reply

Your email address will not be published. Required fields are marked *