サーバー設定 · 2 min read · Feb 03, 2026
NginxとPHP、MariaDB(MySQLの代替)をUbuntu 15.10(Wiley Werewolf)にインストールする - LEMP
Nginx(発音は「エンジンエックス」)は、無料でオープンソースの高性能HTTPサーバーです。Nginxは、その安定性、豊富な機能セット、シンプルな設定、低リソース消費で知られています。このチュートリアルでは、PHPサポート(PHP-FPMを通じて)とMariaDB(MySQLの代替)を使用して、Ubuntu 15.10サーバーにNginxをインストールする方法を示します。LEMPという用語は、Linux + Nginx + MySQL + PHPを表します。
1 前提条件
このチュートリアルでは、ホスト名server1.example.comとIPアドレス192.168.1.100を使用します。これらの設定はあなたの環境によって異なる場合があるため、適宜置き換えてください。
2 MariaDBのインストール
MySQLの代わりにMariaDBをインストールします。MariaDBは、元のMySQLの創設者Monty Wideniusによって維持されているMySQLのフォークであり、MySQLに比べて速度と機能の改善があります。MariaDBをインストールするには、次のコマンドを実行します:
sudo apt-get -y install mariadb-server mariadb-client現在、MariaDBにはrootユーザーのパスワードが設定されていません。mysql_secure_installationコマンドを実行して、パスワードを設定し、テストデータベースを削除します。
sudo mysql_secure_installation次の質問が表示されます:
Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y3 Nginxのインストール
NginxはUbuntu 15.10用のパッケージとして利用可能です。サーバーにapacheウェブサーバーがインストールされている場合、これが競合を引き起こす可能性があります。apacheが実行されていないことを確認してください:
ps aux | grep apache2このコマンドが結果を返さない場合は、Nginxのインストールを続行します。
上記のコマンドがいくつかのapacheプロセスを表示した場合は、次のコマンドでapacheを削除します:
sudo systemctl stop apache2.service
sudo systemctl disable apache2.service
sudo apt-get remove apache2これでNginxをインストールできます。
sudo apt-get install nginxその後、Nginxを起動します:
sudo systemctl start nginx.service
sudo systemctl enable nginx.serviceブラウザにウェブサーバーのIPアドレスまたはホスト名を入力します(例:http://192.168.1.100)、次のページが表示されるはずです:

なぜそのページに「Apache2」と表示されるのですか?ページのテキストは実際に実行されているウェブサーバーを反映していません。上記のページは、ApacheとNginxが使用するドキュメントルート/var/www/htmlのUbuntuのデフォルトページです。Nginxが実際にこのページを提供していることを確認するには、Firefoxのネットワーク分析コンソールでHTTPヘッダーを確認するか、シェルでNginxが実行されていることを確認します:

または、シェルでNginxが実行されていることを確認します:
ps aux | grep nginx結果は次のようにNginxプロセスを表示するはずです:

4 PHP5のインストール
PHP-FPMを通じてNginxでPHP5を動作させることができます。PHP-FPM(FastCGIプロセスマネージャー)は、サイトの規模に関係なく便利な追加機能を持つ代替PHP FastCGI実装です。次のようにインストールします:
sudo apt-get install php5-fpmPHP-FPMは、/var/run/php5-fpm.sockのソケットでFastCGIサーバーを実行するデーモンプログラムです。
5 Nginxの設定
Nginxの設定は、/etc/nginx/nginx.confファイルにあります。これをnanoエディタで開きます:
sudo 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ファイルに定義されています。これを次のように修正します:
sudo nano /etc/nginx/sites-available/default##
# Nginxの設定ファイルを完全に活用するために、以下のURLを確認してください。
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# 一般的に、このファイルをどこかに移動し、クリーンなファイルから始めることをお勧めしますが、
# 参照用にこのファイルを保持してください。または、sites-enabledで無効にしてください。
#
# より詳細な例については/usr/share/doc/nginx-doc/examples/を参照してください。
##
# デフォルトのサーバー設定
#
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.php 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;
# php5-cgiのみの場合:
# fastcgi_pass 127.0.0.1:9000;
# php5-fpmの場合:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# Apacheのドキュメントルートとnginxのドキュメントルートが一致する場合、
# .htaccessファイルへのアクセスを拒否します
#
#location ~ /\.ht {
# deny all;
#}
}
# example.comの仮想ホスト設定
#
# これをsites-available/の別のファイルに移動し、
# sites-enabled/にシンボリックリンクを作成して有効にできます。
#
#server {
# listen 80;
# listen [::]:80;
#
# server_name example.com;
#
# root /var/www/example.com;
# index index.html;
#
# location / {
# try_files $uri $uri/ =404;
# }
#}servername ;は、これをデフォルトのキャッチオールvhostにします(もちろん、ここにwww.example.comのようにホスト名を指定することもできます)。
index.phpをインデックス行に追加しました。root /usr/share/nginx/html;は、ドキュメントルートが/usr/share/nginx/htmlディレクトリであることを意味します。
PHPにとって重要な部分は、location ~ .php$ {}のスタンザです。これを有効にするにはコメントを外します。PHPのlocationスタンザ内で「include snippets/fastcgi-php.conf;」の行を有効にすることが重要です。これにより、ゼロデイの脆弱性を防ぐことができます(参照:http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHPおよびhttp://forum.nginx.org/read.php?2,88845,page=3)。
ファイルを保存してNginxを再読み込みします:
sudo service nginx reload次に、/etc/php5/fpm/php.iniを開きます…
sudo nano /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を再読み込みします:
sudo service php5-fpm reload次に、ドキュメントルート/var/www/htmlに次のPHPファイルを作成します:
sudo nano /var/www/html/info.php次に、ブラウザでそのファイルを呼び出します(例:http://192.168.1.100/info.php):

ご覧の通り、PHP5は動作しており、FPM/FastCGIを通じて動作しています。Server API行に示されています。さらに下にスクロールすると、PHP5で既に有効になっているすべてのモジュールが表示されます。MySQLはそこにリストされていないため、PHP5にはまだMySQLサポートがありません。
6 PHPでMariaDB / MySQLサポートを取得する
PHPでMySQLサポートを取得するには、php5-mysqlndパッケージをインストールできます。アプリケーションに必要な他のPHP5モジュールもインストールすることをお勧めします。次のように利用可能なPHP5モジュールを検索できます:
apt-cache search php5必要なものを選択して、次のようにインストールします:
sudo apt-get install php5-mysqlnd 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-sqlite php5-tidy php5-xmlrpc php5-xslAPCuは、PHP中間コードをキャッシュおよび最適化するための無料のPHPオペコードキャッシャーです。他のPHPオペコードキャッシャー(eAcceleratorやXcacheなど)と似ています。PHPページの速度を向上させるために、これらのいずれかをインストールすることを強くお勧めします。
APCは次のようにインストールできます:
sudo apt-get install php5-apcu次に、PHP-FPMを再読み込みします:
sudo service php5-fpm reload
7 PHP-FPMをTCP接続で使用する
デフォルトでは、PHP-FPMは/var/run/php5-fpm.sockのソケットで待機しています。また、PHP-FPMをTCP接続で使用することも可能です。これを行うには、/etc/php5/fpm/pool.d/www.confを開きます…
sudo nano /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を再読み込みします:
sudo php5-fpm reload次に、Nginxの設定とすべてのvhostを確認し、fastcgi_pass unix:/var/run/php5-fpm.sock;の行をfastcgi_pass 127.0.0.1:9000;に変更します。例えば、次のようにします:
sudo nano /etc/nginx/sites-available/default[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# php5-cgiのみの場合:
fastcgi_pass 127.0.0.1:9000;
# php5-fpmの場合:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
}
[...] 最後にNginxを再読み込みします:
sudo service nginx reload8 このチュートリアルの仮想マシンイメージのダウンロード
このチュートリアルは、VMWareおよびVirtualboxと互換性のあるovf/ova形式の使用準備が整った仮想マシンイメージとして利用可能です。仮想マシンイメージは次のログイン詳細を使用します:
SSH / シェルログイン
ユーザー名:administrator
パスワード:howtoforge
このユーザーにはsudo権限があります。
MariaDBログイン
ユーザー名:root
パスワード:howtoforge
VMのIPは192.168.1.100で、/etc/network/interfacesファイルで変更できます。仮想マシンのセキュリティを確保するために、上記のすべてのパスワードを変更してください。
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/
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。