さくらのVPSでCentOS 8+Nginx+WordPress環境を構築(4/4)

2020年2月9日Linux,WebサイトCentOS8,nginx,WordPress

前回の記事でおおよそソフトのインストールが終わりましたので、次にWordPressを動かすための設定をしていきます。

記事一覧

その1:さくらのVPSにCentOS 8をインストール
その2:SSHの設定
その3:Nginx、MariaDBなどのインストール
その4:Nginx、MariaDBなどの設定とWordPressの配置 ←本記事

php-fpmの設定

Nginxからphpを動かすため、設定を変更します。

設定ファイルはこちらです。

sudo nano /etc/php-fpm.d/www.conf

下記の項目を変更します。

user = nginx
group = nginx

また、listen欄のファイルパスは、のちほどNginxの設定に必要となりますので、メモしておきます。

listen = /run/php-fpm/www.sock

設定を反映するため、php-fpmを再起動して有効化しておきます。

sudo systemctl restart php-fpm && \
sudo systemctl enable php-fpm

MariaDBの設定

続いて、WordPress用のデータベースを設定します。

MariaDBを起動して有効化します。

sudo systemctl start mariadb &&\
sudo systemctl enable mariadb

データベースのセキュリティー向上のため、次のコマンドを実行しておきます。こちらのコマンドを実行すると、rootアカウントのパスワードの設定、匿名ユーザーの削除などが行えます。

sudo mysql_secure_installation

質問の和訳はこちらのサイトに載っていますが、すべて「y」で良いと思います。

続いて、「wordpress」という名前のWordPress用のデータベースを作成します。

mysqladmin -uroot create wordpress -p

rootパスワードを聞かれますので、先ほど設定したrootパスワードを入力します。

また、wordpressデータベースにアクセス権を設定します。

sudo mysql -p

rootパスワードを聞かれますので入力すると、MySQL(MariaDB)のプロンプトが表示されます。「wordpress」の部分は、先ほど作成したDB名です。また、「wpadmin」と「localhost」とパスワードは、後ほどWordPressの初期設定時に使用します。

GRANT ALL PRIVILEGES ON wordpress.* TO wpadmin@localhost IDENTIFIED BY 'パスワード';
exit

Nginxの設定

次にNginxを設定します。

Nginxの設定ファイルはこちらです。

sudo nano /etc/nginx/nginx.conf

設定例として、http://example.com/にアクセスしたときに、/var/www/html/wordpress/に保存したWordPressのブログを表示させたい場合は、下記のようなlocationブロックで良いと思います。

location / {
  root         /var/www/html/wordpress;
  index index.html index.htm index.php;
  try_files $uri $uri/ =404;
  include /etc/nginx/default.d/php.conf;
}

includeしているファイルの設定が正しいか確認しておきます。上記でincludeしたphp.confを開いてみると、

fastcgi_pass php-fpm;

という記述があります。

「php-fpm」を探してみます。/etc/nginx/nginx.confを開くと、httpブロックで/etc/nginx/conf.d/*.confをincludeしていますので、それを探してみます。

/etc/nginx/conf.d/php-fpm.confというファイルがありますので、これを開きます。すると、

upstream php-fpm{
  server unix:/run/php-fpm/www.sock;
}

という記述があります。このwww.sockのファイルパスは、php-fpm設定時に確認した「listen」欄と一致している必要があります。異なっている場合は修正しておきましょう。

Nginxの設定が終わりましたので、念のためconfファイルの構文チェックをしておきます。

sudo nginx -t

エラーが表示されなければOKです。

設定反映のため、設定リロードをします。

sudo systemctl reload nginx

WordPressの配置

WordPressのファイルを配置します。wgetでWordPressの最新版をダウンロードしようとしたのですが、wgetがインストールされていなかったようなので先にインストールしています。

sudo dnf install wget &&\
wget https://ja.wordpress.org/latest-ja.tar.gz &&\
tar -xzvf latest-ja.tar.gz &&\
sudo mkdir -p /var/www/html &&\
sudo mv wordpress/ /var/www/html/wordpress/  &&\
rm latest-ja.tar.gz

WordPressを正しく動かすためには、「WordPressフォルダの所有者をnginxにする」のと、「nginxユーザーに対して、WordPressフォルダの読み書き権限を与える」のが必要です。その設定をします。

sudo chown nginx:nginx /var/www/html/wordpress -R &&\
sudo chmod -R u=rwX,g=rX,o=rX /var/www/html/wordpress

また、CentOSのSELinuxの設定も変更しないと動かないので、設定しておきます。SELinuxそのものに関してはこちらのページが、WordPressを動かすための設定についてはこちらのページが参考になります。1行目はsemanageコマンドをインストールしています。

sudo dnf install policycoreutils-python-utils &&\
sudo setsebool -P httpd_can_network_connect_db 1 &&\
sudo setsebool -P httpd_can_network_connect=on &&\
sudo setsebool -P allow_ftpd_full_access 1 &&\
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wordpress(/.*)?" &&\
sudo restorecon -R /var/www/html/

これでサーバーの設定が終了しました。VPSのIPアドレスにアクセスして、WordPress初期設定の画面が表示されれば成功です。

[さあ、始めましょう!]ボタンを押すと、設定画面に移ります。

設定画面では、MariaDBの設定時に入力したデータベース名、ユーザー名、パスワードを入力します。

後は画面に従って設定していきます。以上でWordPress環境の構築は完了です。

新サーバーにWordPress記事を移行

WordPressを新規で使用する場合は前項までで終わりですが、補足として旧サーバーから新サーバーに移行する方法もまとめます。

※この方法は、旧サーバーから画像などをダウンロードしているようです。おそらく、旧サーバーも生きている状態でないと正しく移行できないと思われます。

旧サーバーでエクスポート

旧サーバーのWordPressダッシュボードから、ツール → エクスポートを開きます。「すべてのコンテンツ」を選択し、「エクスポートファイルのダウンロード」をクリックしてxmlファイルをダウンロードします。

新サーバーでインポート

新サーバーのWordPressダッシュボードから、ツール → インポートを開き、WordPressのインポーターをインストールします。

インポーターの実行を押し、[参照]からエクスポートしたxmlファイルを選択し、画面の指示に従ってインポートします。

エラーなくインポートされれば記事の移行も完了です。

インポート時の注意

プラグインなどを入れていると、インポートに失敗することがあるようです。基本的に、WordPressをインストールした直後のまっさらな状態でインポートした方が良さそうです。

が、私の場合はAMPプラグインを入れないとインポートできなかったため、AMPプラグインだけ入れた状態でインポートしました。


-おわり-

created by Rinker
インプレス - impress top gear シリーズ
渡辺 高志 著、2017/2/16 発売
私もこの本を参考にして環境を構築しました。Cent OS 7にnginxを入れて、PHP+WordPress環境を構築したり、Let's Encryptを用いたSSL/TLSの設定方法などが詳しく載っています。