サーバー設定 · 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 su2 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-fpmPHP-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-xslXcache は、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 reload8 CGI/Perl スクリプト
nginx で CGI/Perl スクリプトを提供したい場合は、次のチュートリアルをお読みください: Debian Squeeze/Ubuntu 11.04 での CGI スクリプトの提供
推奨される方法は fcgiwrap を使用することです (第 4 章)。
9 リンク
- nginx: http://nginx.net/
- nginx Wiki: http://wiki.codemongers.com/Main
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- Ubuntu: http://www.ubuntu.com/
著者について
ファルコ・ティメは、Timme Hosting (超高速 nginx ウェブホスティング) のオーナーです。彼は HowtoForge のリードメンテイナー (2005 年以来) であり、ISPConfig のコア開発者の一人 (2000 年以来) でもあります。彼はまた、O’Reilly の書籍「Linux システム管理」にも貢献しています。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。