CentOS6でnginxとphp-fpmを設定する
2015/08/30
CentOS6で、Apacheではなくnginx(エンジンエックス)を導入してPHPを動作させるまでの手順です。なお、使っているサーバはさくらのVPSです。
記事の構成
この記事は全4本の記事のうちのひとつです。
1 | さくらのVPSを借りて初期設定してみる |
2 | nginxとphp-fpmを設定してサイト上でPHPが動くようにする(この記事) |
3 | MySQLとphpMyAdminを動作させる |
4 | 古いVPSからWordpressを丸ごと引越しさせる |
そして、この記事は以下の構成となっています。
- 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をインストール
各サイトにお礼を申し上げます。
記事のリンク
1 | さくらのVPSを借りて初期設定してみる |
2 | nginxとphp-fpmを設定してサイト上でPHPが動くようにする(この記事) |
3 | MySQLとphpMyAdminを動作させる |
4 | 古いVPSからWordpressを丸ごと引越しさせる |