前回の記事でnginxをソースからインストールしましたが、HTMLファイルしか実行できません。 PHPを実行するためには、PHP-FPMを組み込んでnginxと連携させる必要がありますので今回はその辺りをすすめます。
PHP-FPMのインストール
PHPをソースからインストールしている場合、configureオプションに「--enable-fpm」を追加してリコンパイルしてインストールします。PHPのconfigureオプションはこちらが参考になるかと思います。 もし、インストールPHPのConfigureオプションが分からない場合は、以下のコマンドを実行することで調べることができます。
$ php -i | grep "Configure Command"
Configure Command => './configure' '--prefix=/usr/local/php-5.4.10' '--enable-bcmath' '--enable-calendar' '--enable-gd-jis-conv' '--enable-gd-native-ttf' '--enable-intl' '--enable-mbstring' '--enable-mbregex' '--enable-pcntl' '--enable-soap' '--with-curl' '--with-freetype-dir' '--with-gettext' '--with-gd' '--with-jpeg-dir' '--with-libxml-dir' '--with-mcrypt' '--with-mhash' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-openssl' '--with-pcre-dir' '--with-pear' '--with-png-dir' '--with-readline' '--with-xsl' '--with-zlib'
$ ./configure ...(オプション)
$ make
$ make test
$ sudo make install
# php-fpmコマンドのパスが通っていない場合はシンボリックリンクを貼る
$ sudo ln -s /usr/local/php-5.4.10/sbin/php-fpm /usr/sbin/php-fpm
インストールできたか確認します。
$ php-fpm -v
PHP 5.4.0 (fpm-fcgi) (built: May 4 2012 00:08:14)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
PHP-FPMの設定
自動起動の設定
ダウンロードしたPHPディレクトリにPHP-FPMの起動スクリプトがあるので、コピーして設定します。
$ sudo cp /usr/local/src/php-5.4.10/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
$ sudo chmod 755 /etc/init.d/php-fpm
起動スクリプトを一部修正します。
# /etc/init.d/php-fpm
- php_fpm_PID=${prefix}/var/run/php-fpm.pid
+ php_fpm_PID=/var/run/php-fpm.pid
自動起動の設定を行います。
$ sudo chkconfig --add php-fpm
$ sudo chkconfig php-fpm on
$ chkconfig --list php-fpm
php-fpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off
PHP-FPM単体の設定
デフォルトの設定ファイルがあるのでコピーして設定します。
$ cd /usr/local/php-5.4.10/etc
$ sudo cp -a php-fpm.conf.default php-fpm.conf
# /usr/local/php-5.4.10/etc/php-fpm.conf
# pidファイルを指定
; pid = run/php-fpm.pid
pid = /var/run/php-fpm.pid
# PHP-FPMのエラーログ先を指定
; error_log = log/php-fpm.log
error_log = /var/log/php-fpm/php-fpm.log
# 実行ユーザを指定
; user = nobody
user = nginx
# 実行ユーザグループを指定
; group = nobody
group = nginx
ログディレクトリを作成します。
$ sudo mkdir /var/log/php-fpm
nginxの設定
nginx.confを編集します。
# /etc/nginx/nginx.conf
http {
…(省略)
server {
…(省略)
# 下記追加
location ~ \.php$ {
root /etc/nginx/html; # 絶対パスで書く
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
…(省略)
}
}
PHP-FPM、nginxを起動
$ sudo service php-fpm start
Starting php-fpm done
$ sudo service nginx restart
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Stopping nginx: [ OK ]
Starting nginx: [ OK ]
PHP実行確認
/etc/nginx/html に以下のPHPスクリプトを設置し、http://localhost/test.php を実行して「Hello, World!」と表示されれば完了となります。
// /etc/nginx/html/test.php
<?php
echo 'Hello, World!';
$ wget -q -O - http://localhost/test.php
Hello, World!
最後に
前回と今回でnginxのインストールとPHPとの連携ができました。 nginxでリバースプロキシができると色々便利なことができるのでまた機会があれば記事にしたいと思います。