サーバー設定 · 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] <-- y

3 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)、次のページが表示されるはずです:

Ubuntu Nginxのデフォルトページ.

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

Nginxのhttpヘッダーを確認する.

または、シェルでNginxが実行されていることを確認します:

ps aux | grep nginx

結果は次のようにNginxプロセスを表示するはずです:

Nginxプロセスを確認する.

4 PHP5のインストール

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

sudo apt-get install php5-fpm

PHP-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):

PHP-FPM情報.

ご覧の通り、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-xsl

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

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

sudo apt-get install php5-apcu

次に、PHP-FPMを再読み込みします:

sudo service php5-fpm reload

次に、ブラウザでhttp://192.168.1.100/info.phpを再読み込みし、モジュールセクションまでスクロールします。そこには新しいモジュールがたくさん見つかるはずです。MySQLモジュールも含まれています:

PHP-FPM情報 - パート2

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 reload

8 このチュートリアルの仮想マシンイメージのダウンロード

このチュートリアルは、VMWareおよびVirtualboxと互換性のあるovf/ova形式の使用準備が整った仮想マシンイメージとして利用可能です。仮想マシンイメージは次のログイン詳細を使用します:

SSH / シェルログイン

ユーザー名:administrator
パスワード:howtoforge

このユーザーにはsudo権限があります。

MariaDBログイン

ユーザー名:root
パスワード:howtoforge

VMのIPは192.168.1.100で、/etc/network/interfacesファイルで変更できます。仮想マシンのセキュリティを確保するために、上記のすべてのパスワードを変更してください。

9 リンク

Share: X/Twitter LinkedIn

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

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