サーバー設定 · 3 min read · Jan 23, 2026

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

Nginx (発音は「エンジン x」) は、無料でオープンソースの高性能 HTTP サーバーです。Nginx は、その安定性、豊富な機能セット、シンプルな設定、低リソース消費で知られています。このチュートリアルでは、PHP5 サポート (PHP-FPM 経由) と MySQL サポートを持つ Ubuntu 14.04 サーバーに 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 14.04 用のパッケージとして利用可能で、インストールできます。Apache2 はデフォルトでインストールされているため、まずはそれを削除し、その後に nginx をインストールします:

service apache2 stop
update-rc.d -f apache2 remove
apt-get remove apache2

apt-get install nginx

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

service nginx start

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

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

4 PHP5 のインストール

PHP-FPM (PHP-FPM (FastCGI プロセスマネージャ) は、あらゆるサイズのサイト、特に忙しいサイトに便利な追加機能を持つ PHP FastCGI の代替実装です) を通じて nginx で PHP5 を動作させることができます。次のようにインストールします:

apt-get install php5-fpm

PHP-FPM は、ソケット /var/run/php5-fpm.sock で FastCGI サーバーを実行するデーモンプロセス (init スクリプト 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 [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; # http://localhost/ からサイトにアクセスできるようにする server_name _; location / { # 最初にリクエストをファイルとして提供しようとし、次に # ディレクトリとして、最後に 404 を表示します。 try_files $uri $uri/ /index.html; # この場所で naxsi を有効にするにはコメントを外します # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; allow ::1; deny all; } # nginx-naxsi-ui と一緒に使用される nginx-naxsi のみ: 拒否されたリクエストを処理します #location /RequestDenied { # proxy_pass http://127.0.0.1:8080; #} #error_page 404 /404.html; # サーバーエラーページを静的ページ /50x.html にリダイレクトします # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # PHP スクリプトを 127.0.0.1:9000 でリッスンしている FastCGI サーバーに渡します # location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: php.ini に "cgi.fix_pathinfo = 0;" を設定する必要があります # php5-cgi のみで: #fastcgi_pass 127.0.0.1:9000; # php5-fpm で: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } # Apache のドキュメントルートが nginx のものと一致する場合、.htaccess ファイルへのアクセスを拒否します # location ~ \/\.ht { deny all; } } [...] |

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

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

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

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 を参照)。

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

service nginx reload

次に、/etc/php5/fpm/php.ini を開きます…

vi /etc/php5/fpm/php.ini

… そして cgi.fix_pathinfo=0 を設定します:

| [...] ; cgi.fix_pathinfo は CGI に対して *実際の* PATH_INFO/PATH_TRANSLATED サポートを提供します。PHP の ; 以前の動作は、PATH_TRANSLATED を SCRIPT_FILENAME に設定し、 ; PATH_INFO が何であるかを理解しませんでした。PATH_INFO についての詳細は、cgi スペックを参照してください。これを 1 に設定すると、PHP CGI がそのパスをスペックに従って修正します。0 に設定すると、PHP は以前のように動作します。デフォルトは 1 です。スクリプトを修正して SCRIPT_FILENAME を使用する必要があります。 ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |

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

service php5-fpm reload

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

vi /usr/share/nginx/html/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

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

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

apt-get install php-apc

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

service php5-fpm reload

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

7 PHP-FPM を TCP 接続で使用する

デフォルトでは、PHP-FPM はソケット /var/run/php5-fpm.sock でリッスンしています。また、PHP-FPM を TCP 接続で使用することも可能です。そのためには、/etc/php5/fpm/pool.d/www.conf を開きます…

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

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

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

これにより、PHP-FPM は IP 127.0.0.1 (localhost) のポート 9000 でリッスンします。システムで使用されていないポートを使用してください。

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

php5-fpm reload

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

vi /etc/nginx/sites-available/default

| [...] location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: php.ini に "cgi.fix_pathinfo = 0;" を設定する必要があります # php5-cgi のみで: fastcgi_pass 127.0.0.1:9000; # php5-fpm で: #fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } [...] |

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

service nginx reload

8 CGI/Perl スクリプト

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

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

9 リンク

Share: X/Twitter LinkedIn

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

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