サーバー設定 · 3 min read · Dec 27, 2025

Ubuntu 12.04 LTS に Nginx と PHP5 (PHP-FPM) および MySQL サポート (LEMP) をインストールする

Nginx (発音は「エンジンエックス」) は、無料でオープンソースの高性能 HTTP サーバーです。Nginx は、その安定性、豊富な機能セット、シンプルな設定、低リソース消費で知られています。このチュートリアルでは、PHP5 サポート (PHP-FPM 経由) および MySQL サポートを備えた Ubuntu 12.04 LTS サーバーに Nginx をインストールする方法を示します (LEMP = Linux + nginx (発音は「 e ngine x」) + MySQL + PHP)。

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

1 前提条件

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

私はこのチュートリアルのすべてのステップを root 権限で実行していますので、root としてログインしていることを確認してください:

sudo su

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 は Ubuntu 12.04 用のパッケージとして利用可能で、次のようにインストールできます:

 apt-get install nginx

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

 /etc/init.d/nginx start

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

Ubuntu 12.04 のデフォルトの nginx ドキュメントルートは /usr/share/nginx/www です。

4 PHP5 のインストール

PHP5 を nginx で動作させるために、PHP-FPM を次のようにインストールします:

 apt-get install php5-fpm

PHP-FPM は、ポート 9000 で FastCGI サーバーを実行するデーモンプロセスです (init スクリプトは /etc/init.d/php5-fpm です)。

5 nginx の設定

nginx の設定は /etc/nginx/nginx.conf にあり、今開きます:

 vi /etc/nginx/nginx.conf

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

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

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

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

 vi /etc/nginx/sites-available/default

| [...] server { listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default ipv6only=on; ## listen for ipv6 root /usr/share/nginx/www; index index.php index.html index.htm; # Make site accessible from http://localhost/ server_name _; location / { # First attempt to serve request as file, then # as directory, then fall back to index.html try_files $uri $uri/ /index.html; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; deny all; } # Only for nginx-naxsi : process denied requests #location /RequestDenied { # For example, return an error code #return 418; #} #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 /usr/share/nginx/www; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } } [...] |

両方の listen 行のコメントを外して、nginx がポート 80 の IPv4 および IPv6 をリッスンするようにします。

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

index.php をインデックス行に追加しました。root /usr/share/nginx/www; はドキュメントルートが /usr/share/nginx/www ディレクトリであることを意味します。

PHP にとって重要な部分は location ~ .php$ {} スタンザです。これを有効にするためにコメントを外してください。注意してください、私はゼロデイ攻撃を防ぐために try_files $uri =404; 行を追加しました (http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP および http://forum.nginx.org/read.php?2,88845,page=3 を参照)。代わりに try_files $uri =404; 行を使用したくない場合は、/etc/php5/fpm/php.ini で cgi.fix_pathinfo = 0; を設定できます (その後、PHP-FPM をリロードするのを忘れないでください)。

ファイルを保存して nginx をリロードします:

/etc/init.d/nginx reload

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

vi /usr/share/nginx/www/info.php

| |

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

ご覧の通り、PHP5 は動作しており、FPM/FastCGI 経由で動作しています。サーバー API 行に示されています。さらに下にスクロールすると、すでに PHP5 で有効になっているすべてのモジュールが表示されます。MySQL はそこにリストされていないため、PHP5 にはまだ MySQL サポートがありません。

6 PHP5 に MySQL サポートを追加する

PHP に MySQL サポートを追加するために、php5-mysql パッケージをインストールできます。アプリケーションに必要な他の PHP5 モジュールもインストールすることをお勧めします。次のようにして利用可能な PHP5 モジュールを検索できます:

apt-cache search php5

必要なものを選択して、次のようにインストールします:

 apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Xcache は、PHP 中間コードをキャッシュおよび最適化するための無料でオープンな PHP オペコードキャッシャーです。他の PHP オペコードキャッシャー (eAccelerator や APC など) と似ています。PHP ページの速度を向上させるために、これらのいずれかをインストールすることを強くお勧めします。

Xcache は次のようにインストールできます:

apt-get install php5-xcache

次に PHP-FPM をリロードします:

/etc/init.d/php5-fpm reload

ブラウザで http://192.168.0.100/info.php をリロードし、モジュールセクションまでスクロールします。そこには MySQL モジュールを含む多くの新しいモジュールが見つかるはずです:

7 PHP-FPM を Unix ソケットで使用する

デフォルトでは、PHP-FPM は 127.0.0.1 のポート 9000 でリッスンしています。また、TCP オーバーヘッドを回避するために PHP-FPM を Unix ソケットで使用することも可能です。これを行うには、/etc/php5/fpm/pool.d/www.conf を開きます…

vi /etc/php5/fpm/pool.d/www.conf

… そして listen 行を次のようにします:

| [...] ;listen = 127.0.0.1:9000 listen = /tmp/php5-fpm.sock [...] |

次に PHP-FPM をリロードします:

/etc/init.d/php5-fpm reload

次に、nginx の設定とすべての vhost を確認し、行 fastcgi_pass 127.0.0.1:9000; を fastcgi_pass unix:/tmp/php5-fpm.sock; に変更します。例えば、次のように:

vi /etc/nginx/sites-available/default

| [...] location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } [...] |

最後に nginx をリロードします:

/etc/init.d/nginx reload

8 CGI/Perl スクリプト

nginx で CGI/Perl スクリプトを提供したい場合は、次のチュートリアルをお読みください: Debian Squeeze/Ubuntu 11.04 での CGI スクリプトの提供

推奨される方法は fcgiwrap を使用することです (第 4 章)。

9 リンク

著者について

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

Share: X/Twitter LinkedIn

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

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