サーバー設定 · 3 min read · Oct 13, 2025
Ubuntu 16.04 LTS に Nginx と PHP 7 および MySQL 5.7 (LEMP) をインストールする
Nginx (発音は「エンジンエックス」) は、無料でオープンソースの高性能 HTTP サーバーです。Nginx は、その安定性、豊富な機能セット、シンプルな設定、低リソース消費で知られています。このチュートリアルでは、PHP 7 サポート (PHP-FPM 経由) と MySQL 5.7 サポートを持つ Ubuntu 16.04 サーバーに Nginx をインストールする方法を示します (LEMP = Linux + nginx (発音は「 e ngine x」) + MySQL + PHP)。
1 予備ノート
このチュートリアルでは、ホスト名 server1.example.com と IP アドレス 192.168.1.100 を使用します。これらの設定はあなたの環境によって異なる場合があるため、適宜置き換えてください。
私はこのチュートリアルのすべての手順を root 権限で実行していますので、root としてログインしていることを確認してください:
sudo -s2 MySQL 5.7 のインストール
MySQL をインストールするために、次のコマンドを実行します:
apt-get -y install mysql-server mysql-clientMySQL の root ユーザーのパスワードを入力するよう求められます。このパスワードは、ユーザー root@localhost および [email protected] に対して有効ですので、後で手動で MySQL の root パスワードを指定する必要はありません:
MySQL “root” ユーザーの新しいパスワード: <– yourrootsqlpassword
MySQL “root” ユーザーのパスワードを再入力: <– yourrootsqlpassword

データベースサーバーを保護し、匿名ユーザーとテストデータベースを削除するには、mysql_secure_installation コマンドを実行します。
mysql_secure_installation次の質問が表示されます:
root@server1:~# mysql_secure_installationMySQL サーバーのデプロイを保護しています。ユーザー root のパスワードを入力してください: <-- MySQL root パスワードを入力VALIDATE PASSWORD PLUGIN を使用してパスワードをテストし、セキュリティを向上させることができます。パスワードの強度をチェックし、ユーザーが十分に安全なパスワードのみを設定できるようにします。VALIDATE PASSWORD プラグインを設定しますか?y|Y を押してはい、他のキーを押していいえ: <-- この機能を希望する場合は y を押し、そうでなければ Enter を押します。
既存のパスワードを使用しています。
root のパスワードを変更しますか? ((y|Y を押してはい、他のキーを押していいえ): <-- Enter を押します... スキップ中。
デフォルトでは、MySQL インストールには匿名ユーザーが含まれており、誰でもユーザーアカウントを作成せずに MySQL にログインできます。これはテスト用にのみ意図されており、インストールを少しスムーズにするためのものです。
本番環境に移行する前に、これらを削除する必要があります。匿名ユーザーを削除しますか? (y|Y を押してはい、他のキーを押していいえ): <-- y
成功。通常、root は 'localhost' からのみ接続を許可されるべきです。これにより、誰かがネットワークから root パスワードを推測できなくなります。リモートでの root ログインを禁止しますか? (y|Y を押してはい、他のキーを押していいえ): <-- y
成功。デフォルトでは、MySQL には 'test' という名前のデータベースがあり、誰でもアクセスできます。これもテスト用にのみ意図されており、本番環境に移行する前に削除する必要があります。テストデータベースとそのアクセスを削除しますか? (y|Y を押してはい、他のキーを押していいえ): <-- y
- テストデータベースを削除中...
成功。- テストデータベースの権限を削除中...
成功。権限テーブルを再読み込みすると、これまでに行ったすべての変更が即座に適用されます。権限テーブルを今すぐ再読み込みしますか? (y|Y を押してはい、他のキーを押していいえ): <-- y
成功。すべて完了!MySQL は現在保護されています。
3 Nginx のインストール
すでに Apache2 をインストールしている場合は、まず次のコマンドで削除し、その後 nginx をインストールします:
service apache2 stop
update-rc.d -f apache2 remove
apt-get remove apache2Nginx は Ubuntu 16.04 用のパッケージとして利用可能で、インストールできます。
apt-get -y install nginxその後、nginx を起動します:
service nginx startブラウザにウェブサーバーの IP アドレスまたはホスト名を入力します (例: http://192.168.1.100)、次のページが表示されるはずです:

Ubuntu 16.04 のデフォルト nginx ドキュメントルートは /var/www/html です。
4 PHP 7 のインストール
PHP-FPM (PHP-FPM (FastCGI プロセスマネージャ) は、あらゆるサイズのサイト、特に忙しいサイトに役立つ追加機能を備えた PHP FastCGI の代替実装) を通じて nginx で PHP を動作させることができます。次のようにインストールします:
apt-get -y install php7.0-fpmPHP-FPM はデーモンプロセス (init スクリプト php7.0-fpm を持つ) で、ソケット /run/php/php7.0-fpm.sock で FastCGI サーバーを実行します。
5 nginx の設定
nginx の設定は /etc/nginx/nginx.conf にあり、今開きます:
nano /etc/nginx/nginx.conf設定は理解しやすいです (詳細についてはここを参照してください: http://wiki.nginx.org/NginxFullExample および http://wiki.nginx.org/NginxFullExample2)
まず (これはオプションです) keepalive_timeout を適切な値に調整します:
[...]
keepalive_timeout 2;
[...] 仮想ホストは server {} コンテナ内で定義されます。デフォルトの vhost は /etc/nginx/sites-available/default ファイルに定義されているので、次のように修正します:
nano /etc/nginx/sites-available/default[...]
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL 設定
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# 注意: SSL トラフィックには gzip を無効にする必要があります。
# 参照: https://bugs.debian.org/773332
#
# ssl_ciphers について調べて、安全な設定を確保してください。
# 参照: https://bugs.debian.org/765782
#
# ssl-cert パッケージによって生成された自己署名証明書
# 本番サーバーでは使用しないでください!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# PHP を使用している場合は index.php をリストに追加します
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# 最初にリクエストをファイルとして提供しようとし、次に
# ディレクトリとして、最後に 404 を表示します。
try_files $uri $uri/ =404;
}
# 127.0.0.1:9000 でリッスンしている FastCGI サーバーに PHP スクリプトを渡します
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# php7.0-cgi のみの場合:
# fastcgi_pass 127.0.0.1:9000;
# php7.0-fpm の場合:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
# Apache のドキュメントルートが nginx のものと一致する場合、
# .htaccess ファイルへのアクセスを拒否します
#
location ~ /\.ht {
deny all;
}
}
[...] servername ; はこれをデフォルトのキャッチオール vhost にします (もちろん、ここに www.example.com のようなホスト名を指定することもできます)。
root /var/www/html; はドキュメントルートが /var/www/html ディレクトリであることを意味します。
PHP にとって重要な部分は location ~ .php$ {} スタンスです。これを有効にするためにコメントを外します。
ファイルを保存して nginx を再読み込みします:
service nginx reload次に /etc/php/7.0/fpm/php.ini を開きます…
nano /etc/php/7.0/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 php7.0-fpm reload次に、ドキュメントルート /var/www/html に次の PHP ファイルを作成します:
nano /var/www/html/info.phpブラウザでそのファイルを呼び出します (例: http://192.168.1.100/info.php):

ご覧の通り、PHP 7 が動作しており、Server API 行に示されているように FPM/FastCGI を通じて動作しています。さらに下にスクロールすると、すでに PHP で有効になっているすべてのモジュールが表示されます。MySQL はそこにリストされていないため、PHP にはまだ MySQL サポートがありません。
6 PHP 7 に MySQL サポートを追加する
PHP に MySQL サポートを追加するには、php7.0-mysql パッケージをインストールします。また、アプリケーションに必要な他の PHP モジュールもインストールすることをお勧めします。利用可能な PHP モジュールを次のように検索できます:
apt-cache search php7.0必要なものを選択し、次のようにインストールします:
apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettextAPCu は PHP 7 に付属の Opcache モジュールの拡張で、APC キャッシュをサポートするソフトウェア (例: Wordpress キャッシュプラグイン) の互換性機能を追加します。
APCu は次のようにインストールできます:
apt-get -y install php-apcu次に PHP-FPM を再読み込みします:
service php7.0-fpm reload次に、ブラウザで http://192.168.1.100/info.php を再読み込みし、モジュールセクションに再度スクロールします。そこには MySQL モジュールを含む多くの新しいモジュールが見つかるはずです:

7 PHP-FPM を TCP 接続で使用する
デフォルトでは、PHP-FPM はソケット /var/run/php/php7.0-fpm.sock でリッスンしています。PHP-FPM を TCP 接続で使用することも可能です。そのためには、/etc/php/7.0/fpm/pool.d/www.conf を開きます…
nano /etc/php/7.0/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 を再読み込みします:
php7.0-fpm reload次に、nginx の設定とすべての vhosts を確認し、行 fastcgi_pass unix:/ var/run/ php /php7.0-fpm.soc k; を fastcgi_pass 127.0.0.1:9000; に変更します。例えば、次のように:
nano /etc/nginx/sites-available/default[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# php7.0-cgi のみの場合:
fastcgi_pass 127.0.0.1:9000;
# php7.0-fpm の場合:
# fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
[...] 最後に、nginx を再読み込みします:
service nginx reloadこれで完了です。Nginx LEMP サーバーがインストールされました。
8 リンク
- 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/
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。