Debian 9 StretchでNginx+PHP7.0+MariaDBをインストール

2017/06/26[公開]

 Debian 9 Stretchに移行計画中です。JessieからのメジャーバージョンアップでWEBサーバー周りにずいぶん変更があるようです。PHP5はPHP7へ、MySQLはMariaDBに変わりました。また一から勉強し直しが必要そうです。

 Apache2の安定版はStretchでも2.4.25です。ちょうど現在、脆弱性問題で2.4.26ではないのが気になるので、今回はNginx(nginx.orgの最新版)で行こうと決めました。

 前回記事にしました、Debian 9 Stretchを最小構成でインストールした状態から設定した内容です。WordPressのインストールができる状態まで設定します。

スポンサー リンク

Nginxのインストール

 DebianのリポジトリのNginxはバージョンが古いので、Nginx.orgの安定版(もしくは最新版)を使います。公式のインストールガイドの通りに設定できます。

 Debian / Ubuntuの場合、まずはキーを追加します。

$ wget http://nginx.org/keys/nginx_signing.key
# apt-key add nginx_signing.key

 

/etc/apt/sources.list  に下記のどちらか(安定版か最新版のどちらか)を追記します。ちなみに私は、最新版の方の2行にしています。

 

安定版はこちら。

deb http://nginx.org/packages/debian/ stretch nginx
deb-src http://nginx.org/packages/debian/ stretch nginx

 

最新版はこちら。

deb http://nginx.org/packages/mainline/debian/ stretch nginx
deb-src http://nginx.org/packages/mainline/debian/ stretch nginx

 

インストールします。

# apt-get update
# apt-get install nginx

 

 これでインストール完了です。Apache2がインストールされていないので、Nginxが自動起動の設定になっています。念のため確認します。

# /etc/init.d/nginx restart
# systemctl status nginx

 緑が出ていればNginxが動いているのを確認できます。キーボードのCtrl+c  を押して終了します。

 初期設定のままで、ブラウザーからサーバーアドレスにアクセスしてNginxの初期ページが表示されたらインストール完了です。

nginx-start-1
ブラウザーで見ると、インストール成功の画面

PHP7.0 + PHP7.0-FPMのインストール

 続いてphp7.0のインストールをします。php7.0を単独でインストールすると、apache2も一緒にインストールされてしまうので、NginxとPHP7.0を連携させるphp7.0-fpmも一緒にインストールします。これでapache2はインストールされません。

 (追記)php7.0-mysql、php7.0-mbstring、php7.0-xml、php7.0-gd、php7.0-curl もインストールが必要でした。あくまで当方のWordPress環境で必要だったものです。

# apt-get install php7.0 php7.0-fpm php7.0-mysql php7.0-mbstring php7.0-xml php7.0-gd php7.0-curl

php7.0-fpmの設定

 php7.0-fpmの設定ファイルを変更します。/etc/php/7.0/fpm/pool.d/www.conf  を編集します。apacheのユーザー名(www-data):グループ名(www-data)になっている箇所を、nginx:nginxに変更します。

23-24行目を変更します。

user = nginx
group = nginx

 

36行目は、こうなっているはずなので確認だけです。

listen = /run/php/php7.0-fpm.sock

 

47-48行目も変更します。

listen.owner = nginx
listen.group = nginx

 

php7.0-fpmをリスタートします。

/etc/init.d/php7.0-fpm restart

Nginxの設定変更

 nginxの設定も変更します。/etc/nginx/conf.d/default.conf の設定ファイルを編集します。default.conf は初期のファイル名ですが、環境によりこの設定するファイル名は違ってきます。

 今回は、複数のWEBサイトを利用するバーチャルホストは利用せず、最初のひとつのWEBサイトしか作らない設定での説明です。

8-11行目

 9行目のドキュメントルートはnginxのデフォルト値です。ここは好きな場所に変更可です。10行目にindex.php を追加します。

(追記)11行目にWordPressのパーマリンクの設定をデフォルト以外に設定しても404エラーにならない設定を入れました。

location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
}

↓ ↓ ↓

location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm index.php;
    try_files $uri $uri/ /index.php?q=$uri&$args;
}

30-36行目

 ここで、phpファイルに関してphp7.0-fpmと連携する設定をします。

  • 30-36行間の左#を外します。
  • 31行目は9行目のドキュメントルートと同じにします。
  • 32行目と34行目は下記の通りに設定します。
#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}

↓ ↓ ↓

location ~ \.php$ {
    root           /usr/share/nginx/html;
    fastcgi_pass   unix:/run/php/php7.0-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

Nginxリスタート

 設定変更はnginxをリスタートして反映されます。

/etc/init.d/nginx restart 

PHPテスト

 ドキュメントルートのindex.htmlを退避させて、テスト用index.phpを作成します。

# mv /usr/share/nginx/html/index.html index.back
# nano /usr/share/nginx/html/index.php

 

ファイルの中はこの一行にします。

<?php echo phpinfo(); ?>

 

PCのブラウザーでサーバーアドレスを入れて開きます。

nginx-start2-1
php情報が開けばOK

MariaDBのインストール

 MariaDBをインストールします。Stretchでは、MySQLをインストールしても移行環境でMariaDBがインストールされる複雑な状況になるので、MariaDBだけをインストールします。

# apt-get install mariadb-server

 以上でインストールが完了です。

 Stretchでは、MariaDBのrootのパスワードの設定画面が出てこなくなったようです。rootのパスワードは無しがデフォルトです。それでもサーバーのrootでないとDBのrootに入れないようで、これでセキュリティが堅牢になっているようです。仕組みはわかりませんが。

PhpMyAdminは

 以上で、WordPressをインストールすることが出来る状態までのサーバー設定が完了です。

 WordPressのデータベースを操作するのにphpmyadminもインストールしたいところですが、Stretchではphpmyadminにrootでログインできないようなので、WordPress用のデータベースをphpmyadminで作成することが出来ませんでした。とりあえず、データベース作成はコンソールで操作するしかないでしょうか。

スポンサー リンク

こちらの記事もどうぞ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です