Debian Squeeze に nginx + php-fpm な Web サーバーを構築する
環境:
- Debian 6.0 Squeeze
- nginx 0.8.54
- PHP 5.3.6-6~dotdeb.1
最近はデスクトップは Ubuntu ,サーバーは Debian ,という感じで使い分けています.
可愛い Debian に Apache を入れるのはなんか嫌だよねー,という事で, nginx + php-fpm な環境を構築しました.
以前,nginx + spawn-fcgi な環境を構築する記事を書きましたが,現在は nginx + php-fpm の方が簡単に構築できるかと思います. というのも,元々サードパーティのツールだった FPM(FastCGI Process Manager) が PHP 5.3.3 から PHP に統合されて余計な設定をほとんど行わずに利用することができるようになったからです.fpm と spawn-fcgi は良く比較されていましたが,こうなってくると spawn-fcgi を使う理由もあまり無いのではないでしょうか.
以下の作業はすべて root にて行っています.
リポジトリの追加
Debian Squeeze 標準のリポジトリでは少し古い nginx や PHP がインストールされるので, dotdeb というリポジトリを追加して使用します.
設定ファイルにソースを追加:
% vim /etc/apt/sources.list
# 最後に追加
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all
GnuPG キーの追加:
% wget http://www.dotdeb.org/dotdeb.gpg
% cat dotdeb.gpg | apt-key add -
OK
# リポジトリ情報のアップデート
% aptitude update
nginx のインストール
% aptitude show nginx
Package: nginx
State: not installed
Version: 0.8.54-3.dotdeb.1
Priority: optional
Section: httpd
Maintainer: Guillaume Plessis <gui@dotdeb.org>
Uncompressed Size: 57.3 k
Depends: nginx-full
Provided by: nginx-extras, nginx-full, nginx-light
Description: small, but very powerful and efficient web server and mail proxy
Nginx (engine x) is a web server created by Igor Sysoev and kindly provided to
the open-source community. This server can be used as standalone HTTP server and
as a reverse proxy server before some Apache or another big server to reduce load
to backend servers by many concurrent HTTP-sessions.
This is a dummy package that selects nginx-full.
Homepage: http://nginx.net
Stable version の 0.8.54 がインストールされます.nginx-light/nginx-full/nginx-extras という 3 つのバージョンのパッケージがあり,aptitude install nginx
すると, nginx-full というパッケージがインストールされるようです.
今回は nginx-full をインストールします.
% aptitude install nginx-full
PHP のインストール
% aptitude show php5-common
Package: php5-common
State: not installed
Version: 5.3.6-6~dotdeb.1
Priority: optional
Section: php
Maintainer: Guillaume Plessis <gui@dotdeb.org>
Uncompressed Size: 746 k
Depends: sed (>= 4.1.1-1), libc6 (>= 2.4)
Recommends: php5-suhosin
Conflicts: php5-json, php5-mhash
Provides: php5-json, php5-mhash
Description: Common files for packages built from the php5 source
This package contains the documentation and example files relevant to all the other packages built from the php5
source.
PHP5 is a widely-used general-purpose scripting language that is especially suited for Web development and can be
embedded into HTML. The goal of the language is to allow web developers to write dynamically generated pages quickly.
This version of PHP5 was built with the Suhosin patch.
Homepage: http://www.php.net/
2011/4/10 現在の最新バージョンである PHP 5.3.6 がリポジトリに登録されています. 以下のパッケージをインストールします.
% aptitude install php5-common php5-cli php5-cgi php5-fpm
インストールが終わったら,php5-fpm を動かしてみましょう.
% /etc/init.d/php5-fpm start
% ps -aux | grep php
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
root 2353 0.5 0.7 77472 3932 ? Ss 09:48 0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 2354 0.0 0.6 77464 3508 ? S 09:48 0:00 php-fpm: pool www
www-data 2355 0.0 0.6 77464 3508 ? S 09:48 0:00 php-fpm: pool www
www-data 2356 0.0 0.6 77464 3508 ? S 09:48 0:00 php-fpm: pool www
www-data 2357 0.0 0.6 77464 3508 ? S 09:48 0:00 php-fpm: pool www
www-data 2358 0.0 0.6 77464 3508 ? S 09:48 0:00 php-fpm: pool www
www-data 2359 0.0 0.6 77464 3508 ? S 09:48 0:00 php-fpm: pool www
www-data 2360 0.0 0.6 77464 3508 ? S 09:48 0:00 php-fpm: pool www
www-data 2361 0.0 0.6 77464 3508 ? S 09:48 0:00 php-fpm: pool www
www-data 2362 0.0 0.6 77464 3508 ? S 09:48 0:00 php-fpm: pool www
www-data 2363 0.0 0.6 77464 3508 ? S 09:48 0:00 php-fpm: pool www
www-data 2364 0.0 0.6 77464 3508 ? S 09:48 0:00 php-fpm: pool www
www-data 2365 0.0 0.6 77464 3508 ? S 09:48 0:00 php-fpm: pool www
www-data 2366 0.0 0.6 77464 3508 ? S 09:48 0:00 php-fpm: pool www
www-data 2367 0.0 0.6 77464 3512 ? S 09:48 0:00 php-fpm: pool www
www-data 2368 0.0 0.6 77464 3512 ? S 09:48 0:00 php-fpm: pool www
www-data 2369 0.0 0.6 77464 3512 ? S 09:48 0:00 php-fpm: pool www
www-data 2370 0.0 0.6 77464 3512 ? S 09:48 0:00 php-fpm: pool www
www-data 2371 0.0 0.6 77464 3512 ? S 09:48 0:00 php-fpm: pool www
www-data 2372 0.0 0.6 77464 3512 ? S 09:48 0:00 php-fpm: pool www
www-data 2373 0.0 0.6 77464 3512 ? S 09:48 0:00 php-fpm: pool www
root 2375 0.0 0.1 11324 916 pts/0 S+ 09:48 0:00 grep php
どうやら動いていますね.
nginx の設定
デフォルトの設定ファイルを削除:
% rm /etc/nginx/sites-enabled/default
サイト用のファイルやログを置くディレクトリの作成:
% mkdir -p /var/www/test/{logs,public_html}
設定ファイルの作成:
% vim /etc/nginx/sites-available/test
server {
listen 80;
server_name localhost;
access_log /var/www/test/logs/access.log;
error_log /var/www/test/logs/error.log;
location / {
root /var/www/test/public_html;
index index.html index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/test/public_html$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
サイトの有効化:
# sites-enabled ディレクトリにシンボリックリンクを貼ると,nginx に読み込まれるようになる
% ln -s /etc/nginx/sites-available/test /etc/nginx/sites-enabled/
# 設定ファイルのシンタックスチェック
% nginx -t
the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is successful
# 設定ファイルのリロード
% nginx -s reload
/var/www/test/public_html/ に
<?php phpinfo(); ?>
などを記述したファイルを設置し,ブラウザからアクセスして表示されれば完了です.