動かざることバグの如し

近づきたいよ 君の理想に

Ubuntu上でNginx+PHPを構築してみる

インストールはapt-getで一発、なんだけどどうもレポジトリに入ってるバージョンが古い可能性。それでもいいって言うなら最低限

apt-get install nginx php5 php5-fpm

拡張も入れるなら

apt-get install nginx php5 php5-fpm hp5-cgi php5-cli php5-gd php5-curl

最新安定版使いたい場合

wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key

/etc/apt/sources.list.d/sources.listに以下を追記

# nginx
deb http://nginx.org/packages/debian/ wheezy nginx
deb-src http://nginx.org/packages/debian/ wheezy nginx

「wheezy」の部分は各OSによって変わるので注意

  • Debian
    • 6.x : squeeze
    • 7.x : wheezy
  • Ubuntu
    • 10.04 : lucid
    • 11.10 : oneiric
    • 12.04 : precise
    • 12.10 quantal

あとはupdateしてインストールすれば最新安定版が入るはず。

初期設定

/etc/nginx/sites-available/defaultにて以下を変更

(コメントアウト)
listen   80;

(デフォルト:/usr/share/nginx/www;)
root /var/www;

(index.php追加)
index index.html index.htm index.php;

(初期設定ではログがないので追記)
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;

PHPの部分がデフォルトだとコメントアウトされているので以下のように変更する

location ~ \.(php|html|htm)$ { ←拡張子がPHP以外でも実行できるように
#       fastcgi_split_path_info ^(.+\.php)(/.+)$;
#       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
#       # With php5-cgi alone:
#       fastcgi_pass 127.0.0.1:9000;
#       # With php5-fpm:
(コメントアウト)
         fastcgi_pass unix:/var/run/php5-fpm.sock;
         fastcgi_index index.php;
         include fastcgi_params;
}

PHPの設定ファイルは/etc/php5/fpm/php.iniになる。以下のように変更

cgi.fix_pathinfo=0

/etc/php5/fpm/pool.d/www.confにて

(127.0.0.1:9000から変更)
listen = /var/run/php5-fpm.sock
(コメントアウト)
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
(拡張子がphp以外でも実行されるように)
security.limit_extensions = .php .html .htm

最後再起動

service nginx restart
service php5-fpm restart