Nginx インストール · 2 min read · Dec 30, 2025

Debian Lenny に PHP5 と MySQL サポートを持つ Nginx をインストールする

Debian Lenny に PHP5 と MySQL サポートを持つ Nginx をインストールする

バージョン 1.0
著者: Falko Timme

Nginx (エンジン x と発音) は、無料でオープンソースの高性能 HTTP サーバーです。Nginx は、その安定性、豊富な機能セット、シンプルな設定、低リソース消費で知られています。このチュートリアルでは、PHP5 サポート (FastCGI 経由) と MySQL サポートを持つ Debian Lenny サーバーに Nginx をインストールする方法を示します。

これがあなたにとって機能するという保証はありません!

1 予備ノート

このチュートリアルでは、ホスト名 server1.example.com と IP アドレス 192.168.0.100 を使用します。これらの設定はあなたの環境によって異なる場合があるため、適宜置き換える必要があります。

2 MySQL 5.0 のインストール

MySQL をインストールするために、次のコマンドを実行します。

aptitude install mysql-server mysql-client

MySQL の root ユーザーのパスワードを提供するように求められます。このパスワードは、ユーザー root@localhost と [email protected] に対して有効であるため、後で手動で MySQL の root パスワードを指定する必要はありません。

MySQL “root” ユーザーの新しいパスワード: <– yourrootsqlpassword
MySQL “root” ユーザーのパスワードを再入力: <– yourrootsqlpassword

3 Nginx のインストール

Nginx は、次のようにインストールできる Debian Lenny 用のパッケージとして利用可能です。

aptitude install nginx

その後、nginx を起動します。

/etc/init.d/nginx start

ブラウザにウェブサーバーの IP アドレスまたはホスト名を入力します (例: http://192.168.0.100)。nginx のウェルカムページが表示されるはずです。

4 PHP5 のインストール

FastCGI を通じて nginx で PHP5 を動作させることができます。幸いなことに、Debian Lenny には FastCGI 対応の PHP5 パッケージが用意されており、次のようにインストールします (MySQL を PHP スクリプトから使用する場合に必要な php5-mysql などのいくつかの PHP5 モジュールと共に):

aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

次に、/etc/php5/cgi/php.ini を開き、ファイルの最後に cgi.fix_pathinfo = 1 の行を追加します。

vi /etc/php5/cgi/php.ini

| [...] cgi.fix_pathinfo = 1 |

Debian Lenny にはスタンドアロンの FastCGI デーモンパッケージがないため、lighttpd の spawn-fcgi プログラムを使用します。次のように lighttpd をインストールします。

aptitude install lighttpd

lighttpd がポート 80 で既に使用されているため、起動できないというエラーメッセージが表示されます。

Starting web server: lighttpd2009-03-19 15:58:09: (network.c.300) can't bind to port: 80 Address already in use  
 failed!

これは、nginx がすでにポート 80 でリッスンしているため、当然のことです。

update-rc.d -f lighttpd remove

と実行して、lighttpd がブート時に起動しないようにします。

lighttpd をインストールしたのは、パッケージに付属するプログラム /usr/bin/spawn-fcgi が必要だからです。次のコマンドを実行して、詳細を確認します。

spawn-fcgi --help

localhost のポート 9000 でリッスンし、ユーザーおよびグループ www-data として実行される PHP FastCGI デーモンを起動するには、次のコマンドを実行します。

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

もちろん、システムを起動するたびにこのコマンドを手動で入力したくはないので、ブート時に自動的にコマンドを実行するようにするために、/etc/rc.local を開きます…

vi /etc/rc.local

… そして、ファイルの最後にコマンドを追加します (exit 行の前):

| [...] /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid [...] |

5 nginx の設定

nginx の設定は /etc/nginx/nginx.conf にあります。これを今開きます。

vi /etc/nginx/nginx.conf

設定は理解しやすいです (詳細については、こちらを参照してください: http://wiki.codemongers.com/NginxFullExample および http://wiki.codemongers.com/NginxFullExample2)

まず (これはオプションです)、ワーカープロセスの数を増やし、keepalive_timeout を適切な値に設定します:

| [...] worker_processes 5; [...] keepalive_timeout 2; [...] |

仮想ホストは server {} コンテナ内で定義されます。デフォルトの vhost は /etc/nginx/sites-available/default ファイルに定義されています - 次のように修正します。

vi /etc/nginx/sites-available/default

| [...] server { listen 80; server_name _; access_log /var/log/nginx/localhost.access.log; location / { root /var/www/nginx-default; index index.php index.html index.htm; } location /doc { root /usr/share; autoindex on; allow 127.0.0.1; deny all; } location /images { root /usr/share; autoindex on; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/nginx-default; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { #proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } } [...] |

servername ; はこれをデフォルトのキャッチオール vhost にします (もちろん、ここに www.example.com のようなホスト名を指定することもできます)。

location / 部分では、index 行に index.php を追加しました。root /var/www/nginx-default; は、ドキュメントルートが /var/www/nginx-default ディレクトリであることを意味します。

PHP にとって重要な部分は location ~ .php$ {} スタンザです。これを有効にするためにコメントを外してください。fastcgi_param 行を fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; に変更してください (あなたの vhost のドキュメントルートで /var/www/nginx-default を置き換えてください)。さもなければ、PHP インタープリターはブラウザで呼び出す PHP スクリプトを見つけることができません。

include と fastcgi_params; の間にスペースがいくつかあることを確認してください - デフォルトファイルではこれが一語として書かれているため、バグです。

ファイルを保存し、nginx を再起動します。

/etc/init.d/nginx restart

次に、ドキュメントルート /var/www/nginx-default に次の PHP ファイルを作成します。

vi /var/www/nginx-default/info.php

| |

次に、ブラウザでそのファイルを呼び出します (例: http://192.168.0.100/info.php):

ご覧のとおり、PHP5 は動作しており、Server API 行に示されているように FastCGI 経由で動作しています。さらに下にスクロールすると、MySQL モジュールを含む、すでに PHP5 で有効になっているすべてのモジュールが表示されます。

6 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。