さくらのVPSでCentOS 8+Nginx+WordPress環境を構築(4/4)
前回の記事でおおよそソフトのインストールが終わりましたので、次に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プラグインだけ入れた状態でインポートしました。
-おわり-
私もこの本を参考にして環境を構築しました。Cent OS 7にnginxを入れて、PHP+WordPress環境を構築したり、Let's Encryptを用いたSSL/TLSの設定方法などが詳しく載っています。
ディスカッション
コメント一覧
ありがとうございます!WordPressの移行で参考にさせていただきました。
(タイトルに「WordPress」が入っていた方が、SEO的にはヒットするかもしれませんよ)
>ta様
コメントありがとうございます、お役に立てたようでうれしいです!
確かに、WordPressの構築までをまとめた記事なので、タイトルに入れておいた方が良さそうですね。
アドバイスありがとうございます!