はじめに
仕事でVPSサーバー上にWordpressを構築する機会があったので手順に残したいと思います。VPSサーバーでは既にRuby on Railsで作成したWebアプリが稼働していたので、NginxのVirtual Host機能で複数ドメインの振り分けを行いました。
NginxのVirtual Host機能については以下の記事で説明しています。
Wordpress構築の手順については以下のページを大いに参考にさせていただきました。ありがとうございます。
- CentOS 7.7
- Nginx 1.16.1
PHP/PHP-FPM
WordpressはPHPでできているのでPHPをインストールします。さらに、NginxでPHPを動かすにはPHP-FPMが必要なのでインストールします。
PHP-FPMとは、PHPとNginxを繋ぐFastCGIと呼ばれるものです。CGIとは異なり、処理結果をキャッシュしておくことで高速処理が可能になっています。
PHPとNginxは内部的にTCPまたはソケットで通信します。後述のNginxの設定で通信方法などの設定を行っています。
インストール
PHP/PHP-FRMをインストールするにはremiというリポジトリをインストールする必要があります。さらに、remiをインストールするにはepelというリポジトリをインストールする必要があります。
ですので、以下の順番でインストールしていきます。
- epelリポジトリのインストール
- remiリポジトリのインストール
- PHP/PHP-FPMのインストール
epelリポジトリ
以下のコマンドでインストールします。
# yum -y install epel-release
次に、epelの設定ファイルを開き、各項目のenabled=1
をenabled=0
に変更します。これは–enablerepo
を指定しなければepelリポジトリを使用できなくする設定です。
# vi /etc/yum.repos.d/epel.repo
[epel]
...
enabled=0
...
[epel-debuginfo]
...
enabled=0
...
[epel-source]
...
enabled=0
...
remiリポジトリ
以下のコマンドでインストールします。
# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
PHP/PHP-FPM
以下のコマンドでインストールします。PHP/PHP-FPM以外にもいろいろとインストールします。
# yum install --enablerepo=epel,remi-php72 php php-mbstring php-pear php-fpm php-mcrypt php-mysql
PHP-FPMの設定
PHP-FPMの設定をNginx向けに変更します。
# cd /etc/php-fpm.d/
# cp -p www.conf www.conf.org
# vi www.conf
apache
となっているところをnginx
に変更します。
...
user = nginx
...
group = nginx
...
PHP-FPMの起動
PHP-FPMを起動します。502 Bad Gateway
が表示されるほとんどの場合、PHP-FPMが起動していないことが原因です。
# systemctl start php-fpm
PHP-FPMの自動起動設定
サーバー起動時にPHP-FPMが自動起動するよう設定します。
# systemctl enable php-fpm
Wordpress
Wordpressのインストール・初期設定を行います。
インストール
まずドキュメントルートとなるディレクトリを作成します。
# cd /var/www
# mkdir example
以下のコマンドを実行してWordpressをダウンロードします。
# cd example
# curl -O https://ja.wordpress.org/latest-ja.tar.gz
ダウンロードした圧縮ファイルを解凍し、所有者を変更します。
# tar xzfv latest-ja.tar.gz
# chown -R nginx:nginx wordpress
データベース作成
Wordpress用のデータベースを作成します。なお、データベースは既にMySQLがインストールされており、初期設定や日本語化が済んでいることとします。
# mysql -uroot -p
...
mysql> CREATE DATABASE <DB名>;
作成したDBのユーザー権限を作成します。
mysql> GRANT ALL PRIVILEGES ON <DB名>.* TO <ユーザー名>@localhost IDENTIFIED BY <パスワード>;
設定
Wordpressの初期設定を行います。
# cd wordpress
# cp -p wp-config-sample.php wp-config.php
# vi wp-config.php
...
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', <DB名>);
/** MySQL データベースのユーザー名 */
define('DB_USER', <ユーザー名>);
/** MySQL データベースのパスワード */
define('DB_PASSWORD', <パスワード>);
...
「認証用ユニークキー」は既存の設定は全削除し、このリンクで生成されたユニークキーをそのまま貼り付けます。
Nginxの設定
Nginxの設定ディレクトリに移動し、Wordpress用の設定ファイルを作成します。
# cd /etc/nginx/conf.d
# touch wp.conf
# ls -l
total 8
-rw-r--r-- 1 root root 1391 Dec 9 12:28 app.conf # Railsアプリの設定
-rw-r--r-- 1 root root 434 Dec 10 13:15 wp.conf # Wordpressの設定
以下のように設定します。ご自分の環境に合わせて適宜修正してください。
server {
listen 80;
server_name www.example.com;
root /var/www/example/wordpress;
index index.php;
charset utf-8;
try_files $uri $uri/ /index.php?q=$uri&$args;
location ~* /wp-config.php {
deny all;
}
# PHP-FPMの設定
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
}
}
PHP-FPMの設定は、PHPとNginxの通信方法(今回はTCP)などを指定しています。
動作確認
ウェブブラウザからhttp://example.com/wp-admin/install.phpにアクセスしてみましょう。
このような画面が表示されたら完了です。