サーバー設定 · 3 min read · Jan 05, 2026
Debian 8 に Nginx (PHP-FPM として) と MariaDB (LEMP) をインストールする
このチュートリアルでは、Debian 8 に Nginx ウェブサーバーをインストールする方法を示します。Nginx(発音は「エンジンエックス」)は、無料でオープンソースの高性能 HTTP サーバーです。Nginx は、その安定性、豊富な機能セット、シンプルな設定、低リソース消費で知られています。このチュートリアルでは、PHP サポート(PHP-FPM を通じて)と MySQL の代替としての MariaDB を使用して Nginx をインストールする方法を示します。このセットアップは、LEMP = Linux + nginx(発音は「 e ngine x」) + MySQL + PHP)と呼ばれることがよくあります。
前提条件
このチュートリアルでは、ホスト名 server1.example.com と IP アドレス 192.168.1.100 を使用します。これらの設定はあなたの環境によって異なる場合があるため、適宜置き換えてください。Debian 8 サーバーを持っている必要があります。私はこのチュートリアルの基本システムとして Debian ミニマルサーバーを使用します。
システムの更新
Nginx のセットアップを開始する前に、パッケージリストを更新し、保留中の更新をインストールすることをお勧めします。以下のコマンドを実行して、保留中の更新をインストールします。
apt-get update
apt-get upgrade -y後で設定ファイルを編集するために nano エディタを使用します。Nano は次のコマンドでインストールできます:
apt-get -y install nano MariaDB のインストール (MySQL の代替として)
MariaDB をインストールするために、次のコマンドを実行します:
apt-get -y install mariadb-server mariadb-clientMariaDB の root ユーザーのパスワードを提供するように求められます。このパスワードは、ユーザー root@localhost および [email protected] に対して有効ですので、後で手動で MariaDB の root パスワードを指定する必要はありません:
MariaDB “root” ユーザーの新しいパスワード: <– yourrootsqlpassword
MariaDB “root” ユーザーのパスワードを再入力してください: <– yourrootsqlpassword

Nginx のインストール
Nginx は Debian Jessie 用のパッケージとして利用可能で、次のようにインストールできます:
apt-get -y install nginxその後、Nginx を起動します:
systemctl start nginx.serviceブラウザにウェブサーバーの IP アドレスまたはホスト名を入力します(例:http://192.168.1.100)。次のページが表示されるはずです:

Debian 8 のデフォルトの nginx ドキュメントルートは /var/www/html です。
PHP のインストール
PHP5 を nginx で動作させるために、PHP-FPM を次のようにインストールします:
apt-get -y install php5-fpmPHP-FPM は、/var/run/php5-fpm.sock ソケット上で FastCGI サーバーを実行するデーモンプロセスです(systemd ユニットファイル php5-fpm.service)。
nginx の設定
nginx の設定は /etc/nginx/nginx.conf にあり、今開きます:
nano /etc/nginx/nginx.conf設定は理解しやすいです(詳細については、こちらを参照してください:http://wiki.nginx.org/NginxFullExample およびこちら:http://wiki.nginx.org/NginxFullExample2)
まず、keepalive_timeout を 2 秒のような妥当な値に設定します:
[...]
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-cert パッケージによって生成された自己署名証明書
# 本番サーバーで使用しないでください!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# PHP を使用している場合は index.php をリストに追加します
index index.html index.htm index.nginx-debian.html index.php;
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;
}
}
[...] servername ; はこれをデフォルトのキャッチオール vhost にします(もちろん、ここに www.example.com のようなホスト名を指定することもできます)。
index.php をインデックス行に追加しました。root /var/www/html; はドキュメントルートが /var/www/html ディレクトリであることを意味します。
PHP にとって重要な部分は location ~ .php$ {} スタンスです。上記のようにコメントを外して有効にします。
ファイルを保存して Nginx をリロードします:
systemctl reload nginx.service次に、/etc/php5/fpm/php.ini を開きます…
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 はそのパスを仕様に合わせて修正します。
; ゼロに設定すると、PHP は以前のように動作します。デフォルトは 1 です。
; スクリプトを修正して PATH_TRANSLATED ではなく SCRIPT_FILENAME を使用する必要があります。
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...] PHP-FPM をリロードします:
systemctl reload php5-fpm.service次に、ドキュメントルート /var/www/html/ に次の PHP ファイルを作成します:
nano /var/www/html/info.phpブラウザでそのファイルを呼び出します(例:http://192.168.1.100/info.php):

ご覧の通り、PHP5 は動作しており、FPM/FastCGI を通じて動作しています。サーバー API 行に示されています。さらに下にスクロールすると、PHP5 ですでに有効になっているすべてのモジュールが表示されます。MySQL はそこにリストされていないため、PHP にはまだ MariaDB / MySQL サポートがありません。
PHP で MySQL / MariaDB サポートを取得する
PHP で MySQL サポートを取得するために、php5-mysqlnd パッケージをインストールできます。アプリケーションに必要な他の PHP モジュールもインストールすることをお勧めします。利用可能な PHP モジュールを次のように検索できます:
apt-cache search php5必要なものを選択して、次のようにインストールします:
apt-get -y install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xslAPCu は、PHP 中間コードをキャッシュおよび最適化するための無料でオープンな PHP オペコードキャッシャーで、PHP opcache を拡張します。APC キャッシュを置き換え、eAccelerator や Xcache などの他の PHP オペコードキャッシャーと似ています。PHP ページの速度を向上させるために、これらのいずれかをインストールすることを強くお勧めします。
APCu は次のようにインストールできます:
apt-get install php5-apcu次に PHP-FPM をリロードします:
systemctl reload php5-fpm.serviceブラウザで http://192.168.1.100/info.php をリロードし、再度モジュールセクションまでスクロールします。そこには MySQL モジュールを含む多くの新しいモジュールが見つかるはずです:

PHP-FPM を TCP 接続で使用する(オプション)
デフォルトでは、PHP-FPM は /var/run/php5-fpm.sock ソケットで待機しています。PHP-FPM を TCP 接続で使用することも可能です。そのためには、/etc/php5/fpm/pool.d/www.conf を開きます…
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 をリロードします:
systemctl reload php5-fpm.service次に、nginx の設定とすべての vhosts を確認し、行 fastcgi_pass unix:/var/run/php5-fpm.sock; を fastcgi_pass 127.0.0.1:9000; に変更します。例えば、次のようにします:
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;
fastcgi_pass 127.0.0.1:9000;
}
[...] 最後に、Nginx をリロードします:
systemctl reload nginx.service仮想マシンイメージ
このチュートリアルは、Howtoforge のサブスクライバー向けに OVA / OVF 形式の使用可能な仮想マシンとして提供されています。VM 形式は VMWare や Virtualbox など、この形式をインポートできる他のツールと互換性があります。ダウンロードリンクは右メニューの上部にあります。ファイル名をクリックしてダウンロードを開始します。
VM のログイン詳細は次のとおりです:
SSH ログイン
ユーザー名:root
パスワード:howtoforge
MariaDB ログイン
ユーザー名:root
パスワード:howtoforge
最初の起動後にパスワードを変更してください。
VM は静的 IP 192.168.1.100 に設定されており、IP は /etc/network/interfaces ファイルで変更できます。
リンク
- nginx: http://nginx.net/
- nginx Wiki: http://wiki.codemongers.com/Main
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MariaDB: https://mariadb.org/
- Debian: http://www.debian.org/
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。