Nginx インストール · 3 min read · Dec 31, 2025

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

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

Version 1.0
Author: Falko Timme
Follow me on Twitter

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

私は、これがあなたにとって機能するという保証を出しません!

1 予備ノート

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

2 MySQL 5 のインストール

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

apt-get install mysql-server mysql-client

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

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

3 Nginx のインストール

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

apt-get install nginx

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

/etc/init.d/nginx start

デフォルトの nginx ドキュメントルートは /var/www ですが、まだ存在しないため、次のように作成する必要があります。

mkdir /var/www  
 chown www-data:www-data /var/www

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

/var/www にインデックスページがないため、403 Forbidden エラーが表示されます。

4 PHP5 のインストール

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

apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache 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 は CGI のための *実際の* PATH_INFO/PATH_TRANSLATED サポートを提供します。PHP の ; 以前の動作は PATH_TRANSLATED を SCRIPT_FILENAME に設定し、 ; PATH_INFO が何であるかを理解しませんでした。PATH_INFO についての詳細は cgi スペックを参照してください。これを 1 に設定すると、PHP CGI はそのパスを仕様に従って修正します。0 に設定すると、PHP は以前のように動作します。デフォルトは 1 です。スクリプトを修正して、PATH_TRANSLATED ではなく SCRIPT_FILENAME を使用する必要があります。 ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=1 [...] |

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

apt-get install lighttpd

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

Starting web server: lighttpd2011-02-24 01:43:18: (network.c.358) can't bind to port:  80 Address already in use  
  failed!  
 invoke-rc.d: initscript lighttpd, action "start" failed.

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

update-rc.d -f lighttpd remove

これにより、lighttpd はブート時に起動しなくなります。

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

spawn-fcgi --help

ローカルホストのポート 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; ## listen for ipv4 listen [::]:80 default ipv6only=on; ## listen for ipv6 server_name _; access_log /var/log/nginx/localhost.access.log; location / { root /var/www; 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$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$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; はドキュメントルートが /var/www ディレクトリであることを意味します。

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

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

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

/etc/init.d/nginx restart

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

vi /var/www/info.php

| |

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

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

6 リンク

著者について

Falko Timme は Timme Hosting (超高速 nginx ウェブホスティング) のオーナーです。彼は HowtoForge のリードメンテイナー (2005 年以来) であり、ISPConfig のコア開発者の一人 (2000 年以来) でもあります。また、O’Reilly の書籍「Linux System Administration」にも貢献しています。

Share: X/Twitter LinkedIn

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

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