rhasm.net/blog

興味の赴くままに色々紹介し、解説をするブログです。

*

CentOS6でnginxとphp-fpmを設定する

      2015/08/30

CentOS6でNGINX(エンジンエックス)とPHPをインストール

CentOS6で、Apacheではなくnginx(エンジンエックス)を導入してPHPを動作させるまでの手順です。なお、使っているサーバはさくらのVPSです。

記事の構成

この記事は全4本の記事のうちのひとつです。

そして、この記事は以下の構成となっています。

  • nginxやphp、php-fpmをインストール。
  • nginxのサーバ(ドメイン)設定とphp-fpmの設定

yum installを使いまくる

とりあえず、nginxもphpもphp-fpmもリポジトリの追加なしにインストールができました。便利便利。色々と手抜きをするためにrootになっておきます。

$ su -

その後、ぽいぽいとインストール。

$ yum install nginx
$ yum install php
$ yum install php-fpm

この後、設定をしていきます。

nginxの設定

nginxの設定ファイルはこんな構成になっています。

/etc/nginx/
  +- nginx.conf
  +- /conf.d/
    +- xxxx.conf

nginx.confに直接サーバ設定を書き込んでいくのでもOKですし、/conf.d/の中に新たにconfファイルを作成すれば、それも設定として読み込まれます。
今回は/conf.d/内にあるdefault.confを書き換えます。

$ cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.back
$ emacs /etc/nginx/conf.d/default.conf

そして、サブドメインを便利にキャッチできるように、以下の構成を想定してサーバを設定していきます。
まず、サブドメインに対してディレクトリは以下のように作成しておきます。

/var/www/blog.rhasm.net/ # http://blog.rhasm.net/の内容を置く用
/var/www/hoge.rhasm.net/ # http://hoge.rhasm.net/の内容を置く用
/var/www/www.rhasm.net/ # http:/www.rhasm.net/の内容を置く用

そして、default.confの中身は次のように書きます。

server {
    listen       80;
    server_name  ~^(.*\.)?rhasm.net;

    location / {
        root   /var/www/$host;
        index  index.php;

        # この設定はwordpressのパーマリンク用です
        if (!-e $request_filename) {
           rewrite ^.+?($/-.*) $1 last;
           rewrite ^.+?(/.*\.php)$ $1 last;
           rewrite ^ /index.php last;
        }
    }

    (中略)

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/$host$fastcgi_script_name;
        include        fastcgi_params;
    }
}

これで、DNSレコードでサブドメインを増やした際にも、フォルダを作成してやるだけで問題なくアクセスできる設定になります。
ここで一旦、nginxは置いておきます。

php-fpmの設定

cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.back
emacs /etc/php-fpm.d/www.conf

以下のように書いて設定していきます。

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock

(中略)

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

なお、各サイトを参考にしつつ、nginxとphp-fpmの間の通信はUNIXドメインソケットに変更しています。

PHPのsessionディレクトリのオーナ変更

$ chown -R root.nginx /var/lib/php/session

以上を設定したら、php-fpmとnginxを起動します。

$ /etc/rc.d/init.d/php-fpm start
$ /etc/init.d/nginx start

動作確認は、さくっと以下の方法で。

$ cd /var/www/(何かしら公開サイトのフォルダ)
$ echo '<?php echo phpinfo(); ?>' > test.php

ブラウザでtest.phpにアクセスして、phpのお馴染みのあの一覧が見えたら、設定は成功です。

参考サイト

コンユウメモ:CentOS 6.4でNginx, php-fpm, MySqlでWordpressをいちから設定する手順
77 DOGS BLOG:nginxでサブドメインを使えるように設定する
.log:nginxのserver_nameで複数ドメイン運用
Linux入門:nginx + MySQL + phpMyAdmin の環境を構築する方法
Linux入門:PHP-FPMのインストールと設定
Mome:NginxとPHP-FPM間をunix socket通信にする
console.lealog();:nginxだけでWordPressを動かすための設定
WinRoad徒然草:CentOS6.4にMySQLとphpMyadminをインストール

各サイトにお礼を申し上げます。

記事のリンク

 - コンピュータ, サーバサイド ,