読者です 読者をやめる 読者になる 読者になる

tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【php】nginxとphp-fpmが動く環境を手っ取り早く入れるメモ

はじめに

nginxやphp-fpm(php)はソースから入れることも多いですが、
サービス自体は他のものを使っていてphp製品のphpMyAdminやadminerを
サクっと入れたいためだけにnginxやphp-fpmを使いたいこともありますよね。

そんなときのyumでお手軽に入れてしまうメモ

アジェンダ

  1. php-fpmとは
  2. php-fpmいれる
  3. php-fpm設定
  4. 確認用のindex.phpを適当な場所に作成
  5. nginxの設定を変更
  6. 確認してみる

タイトルとは裏腹にnginxはすでに入ってる前提です。
nginxも入れるだけなら比較的サクっと入るのでそれは別記事におまかせを。

1. php-fpmとは

いつも通り他サイトの引用です

FPM (FastCGI Process Manager) は PHPFastCGI 実装のひとつで、
主に高負荷のサイトで有用な追加機能を用意しています。
参考 : FastCGI Process Manager (FPM)

2. php-fpmいれる

yumるだけですね

$ sudo yum -y install php-fpm

3. php-fpm設定

php-fpmの設定を少しだけ変えます。
ほとんどデフォルトのまま動かしてみます。

※ 念のためバックアップとっておく
$ sudo cp -ap /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.bk.20150628

※ nginxでのuser設定をしてないとnobodyで起動されるので
※ それに合わせてphp-fpmもnobodyにしておきます。 
※ nginxでちゃんとuserを設定したらそれに合わせます
$ vi /etc/php-fpm.d/www.conf 
---- vi編集 ----
group = apache
↓ 変更
;group = apache
group = nobody
---------------

※ php-fpmを起動
$ sudo /etc/init.d/php-fpm start

※ php-fpmの自動起動の設定
$ sudo chkconfig php-fpm on

※ 自動起動の設定を念のため確認
$ sudo chkconfig --list php-fpm
php-fpm         0:off   1:off   2:on    3:on    4:on    5:on    6:off

4. 確認用のindex.phpを適当な場所に作成

nginxとphp-fpmが動作しているか確認するためのindex.phpを適当な場所に作ります

※ 適当なディレクトリを作成&移動
$ mkdir ~/tmp
$ cd ~/tmp

※ index.php作成
$ vi index.php
---- vi作成 ----
<?php
    phpinfo();
?>
---------------

5. nginxの設定を変更

ドキュメントルートの設定やらphp関連の設定だけします。
nginxの設定ファイルの場所は入れたnginxに合わせて読み替えてください。

また、今回はhoge.sample.comがすでにサービスなんかで使っているとして、
新たにサブドメインとか設定せずにサービスの邪魔せず起動したかったのでポート5050番台で追加しました。

※ 下記をまるっと追記
$ sudo vi /usr/local/nginx/conf/extra/vhost.conf
---- vi追記 ----
server {
    listen 5050;
    server_name hoge.sample.com;
    root        /home/hoge/tmp;

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
---------------

※ nginx再起動
$ sudo /etc/init.d/nginx restart
5050番台のポート開放

iptablesの設定が必要なので下記を参考に追加してみてください
さくらvpsの設定自分メモ - iptables②(パケットフィルタリング)

一応かるく書いておきます

※ 5050番のポートを開放
$ sudo vi /etc/sysconfig/iptables
---- vi追記 ----
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5000  -j ACCEPT
---------------

※ iptables再起動
$ sudo /etc/init.d/iptables restart
普通に何も考えずやる場合

hoge.sample.comのドメインもまだ使ってなく、 何も気にせずいれてみるだけであれば下記で良いかと思います。

ポートが80になるだけですね。

$ sudo vi /usr/local/nginx/conf/extra/vhost.conf
---- vi追記 ----
server {
    listen 80;
    server_name hoge.sample.com;
    root        /home/hoge/tmp;

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
---------------

6. 確認してみる

http://hoge.sample.com:5050/index.phpにブラウザでアクセスしてみます。
phpお決まりのこれがでればOKです。
f:id:tweeeety:20150705224808p:plain

うごかなかったら

動かない場合もよくあります。
そんなときはこんな順番で見てみると良いかと思います。

  1. まずはiptablesのログでportに対するアクセスがきてるか見る
  2. nginxのログを出してアクセスがきてるか、エラーがないか見る
  3. 権限の設定を見直す
    • index.phpを置いてるrootディレクトリやindex.phpを775とかにしてみましょう

まとめ

ということでphp-fpmを入れてかるく動かしてみました。
phpはあまりやらないけどphp製品が使いたいって場合はあるので
そういう場合にはサクっと動いていいですね!