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

一応前回の日記の続きなので、簡単にあらすじを。

Docker+Chef-soloでRuby+rbenvのインストールまで完了するレシピがあり、そのレシピをVagrant+ChefというKnife soloでリモート実行する試みをしたのですが、いろいろと削らないと完走しませんでした。んで、改めてCentos6で走らせたら何の問題もなく完走できたのです。
これでCentos5だってことがエラーの原因という事は確実となりました。

前回の日記でも書いていますが、どこを端折ったかというとPHP-FPMのインストール。

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

レシピをリモート実行するとそのレシピの状態となる事を利用して、普通に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を追加して終わった。

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

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

Similar Posts:


Leave a Reply

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