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の初期ページが表示されたらインストール完了です。
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のブラウザーでサーバーアドレスを入れて開きます。
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で作成することが出来ませんでした。とりあえず、データベース作成はコンソールで操作するしかないでしょうか。
(追記)続いてサイト全体をSSL対応にする場合はこちらをご覧ください。
現行WordPressでは推奨PHPバージョンが7.2以上です。