CentOSにWordpressをインストールしてNginxで動かす方法【Virtual Host対応】

2019年12月18日 14:24

はじめに

仕事で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というリポジトリをインストールする必要があります。
ですので、以下の順番でインストールしていきます。

  1. epelリポジトリのインストール
  2. remiリポジトリのインストール
  3. PHP/PHP-FPMのインストール

epelリポジトリ

以下のコマンドでインストールします。

# yum -y install epel-release

次に、epelの設定ファイルを開き、各項目のenabled=1enabled=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にアクセスしてみましょう。

このような画面が表示されたら完了です。

関連記事

関連記事はありません。