このセクションでは、WordPress の環境移行について紹介していきます。

移行元と移行先の環境は以下のとおりとなります。

移行元移行先
OSCentOS 7.6AlmaLinux release 9.2
WEBApache 2.4.6nginx 1.24.0
PHPPHP 7.1.26PHP 8.0.27
DB5.5.60-MariaDB10.5.16-MariaDB
WordPressVer 4.9.8Ver 6.3

(移行元の環境で収集した情報です)

[root@hp ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[root@hp ~]# 
[root@hp ~]# php -v
PHP Warning:  Module 'mbstring' already loaded in Unknown on line 0
PHP 7.1.26 (cli) (built: Jan  9 2019 08:02:33) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
[root@hp ~]# 
[root@hp ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Nov  5 2018 01:47:09
[root@hp ~]# 
[root@hp ~]# mysql --version
mysql  Ver 15.1 Distrib 5.5.60-MariaDB, for Linux (x86_64) using readline 5.1
[root@hp ~]# 

(移行先の環境で収集した情報です)

[user@pub-web ~]$ sudo cat /etc/redhat-release 
AlmaLinux release 9.2 (Turquoise Kodkod)
[user@pub-web ~]$
[user@pub-web ~]$ nginx -v
nginx version: nginx/1.24.0
[user@pub-web ~]$ 
[user@pub-web ~]$ php -v
PHP 8.0.27 (cli) (built: Jan  3 2023 16:17:26) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.27, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.27, Copyright (c), by Zend Technologies
[user@pub-web ~]$ 
[user@pub-web ~]$ mysql --version
mysql  Ver 15.1 Distrib 10.5.16-MariaDB, for Linux (x86_64) using  EditLine wrapper
[user@pub-web ~]$ 

移行元の環境での作業

WordPress の環境をフォルダ毎、バックアップします。
ここでは、一旦フォルダを別の場所にコピーし、コピーしたフォルダを丸ごと圧縮しています。

[root@hp ~]# cp -pr /var/www/wordpress/ /tmp/backup/wordpress
[root@hp ~]# 
[root@hp ~]# tar czvf /tmp/backup/wordpress_file_back.tar.gz /tmp/backup/wordpress
ーー(省略)ーー
/tmp/backup/wordpress/wp-includes/ms-default-constants.php
/tmp/backup/wordpress/wp-includes/class-snoopy.php
/tmp/backup/wordpress/wp-config-sample.php
/tmp/backup/wordpress/wp-mail.php
/tmp/backup/wordpress/wp-comments-post.php
/tmp/backup/wordpress/wp-trackback.php
/tmp/backup/wordpress/wp-signup.php
/tmp/backup/wordpress/info_mb.php
/tmp/backup/wordpress/info_php.php
/tmp/backup/wordpress/.tmb/
/tmp/backup/wordpress/.quarantine/
/tmp/backup/wordpress/wp-config.php
/tmp/backup/wordpress/.htaccess
[root@hp ~]# 

WordPress のデータベースをバックアップします。

[root@hp ~]# mysqldump -u root -p -h localhost (DB名) > /tmp/backup/wordpress_db_back.sql
Enter password: 
[root@hp ~]# 

移行先の環境へSCPでデータ転送します。

[root@hp ~]# scp /tmp/backup/wordpress_file_back.tar.gz user@192.168.1.100:~/wordpress_backup/
wordpress_file_back.tar.gz                         100%  373MB 186.4MB/s   00:02    
[root@hp ~]# 
[root@hp ~]# scp /tmp/backup/wordpress_db_back.sql user@192.168.1.100:~/wordpress_back/
wordpress_db_back.sql                              100%  151MB 150.5MB/s   00:01    
[root@hp ~]# 

移行先の環境での作業

最新バージョンのWordPressをダウンロードします。
(補足)
移行するWordPressのバージョンが古かったせいか、バックアップした環境を移行先へ持っていっただけではどうしてもうまくいきませんでした(移行したWordPress環境にアクセスすると真っ白の画面やら内部エラーが出て最終的には挫折しました)。なので、最新バージョンのWordPressを使い、ほぼ環境も作り直すことにしました。ただ、以前のデータはそのまま引き継ぎます。

[user@pub-web ~]$ sudo wget https://ja.wordpress.org/latest-ja.tar.gz
--2023-08-17 20:48:10--  https://ja.wordpress.org/latest-ja.tar.gz
Resolving ja.wordpress.org (ja.wordpress.org)... 198.143.164.253
Connecting to ja.wordpress.org (ja.wordpress.org)|198.143.164.253|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 24291263 (23M) [application/octet-stream]
Saving to: ‘latest-ja.tar.gz’

latest-ja.tar.gz                 100%[==========================================================>]  23.17M  6.37MB/s    in 4.2s    

2023-08-17 20:48:15 (5.52 MB/s) - ‘latest-ja.tar.gz’ saved [24291263/24291263]

[user@pub-web ~]$ 

ダウンロードした最新バージョンのWordPressを解凍します。解凍すると現在いるディレクトリ直下にwordpressフォルダが作成されます。

[user@pub-web ~]$ [yuji@pub-web ~]$ tar zvxf latest-ja.tar.gz 
wordpress/wp-includes/PHPMailer/Exception.php
wordpress/wp-includes/PHPMailer/SMTP.php
wordpress/wp-includes/class-wp-recovery-mode.php
wordpress/wp-includes/class-wp-simplepie-sanitize-kses.php
wordpress/wp-includes/class-wp-date-query.php
wordpress/wp-includes/class-walker-comment.php
wordpress/wp-includes/nav-menu.php
wordpress/wp-includes/class-wp-paused-extensions-storage.php
wordpress/wp-includes/class.wp-dependencies.php
wordpress/wp-signup.php
wordpress/wp-links-opml.php
[user@pub-web ~]$ 

解凍したwordpress フォルダの中身を WEBサーバー(NGINX)の location ディレクティブで指定するフォルダへ丸ごとコピーします。

[user@pub-web ~]$ sudo cp -rp wordpress/* /var/www/wordpress/
[user@pub-web ~]$ 

次に、移行元のWordPress 環境の一部(wp-content )を移植していきます。
移行元の環境から転送したバックアップファイルがあることを確認します。

[user@pub-web ~]$ ls -la ~/wordpress_backup/
total 535948
drwxr-xr-x. 2 user user        77 Aug 16 21:31 .
drwx------. 6 user user      4096 Aug 16 08:42 ..
-rw-r--r--. 1 user user 157859840 Aug 16 21:31 wordpress_db_back.sql
-rw-r--r--. 1 user user 390944288 Aug 16 21:32 wordpress_file_back.tar.gz
[user@pub-web ~]$ 

移行元で圧縮したファイルを解凍します。

[user@pub-web ~]$ cd ~/wordpress_backup/
[user@pub-web wordpress_backup]$ 

[user@pub-web wordpress_backup]$ 
[user@pub-web wordpress_backup]$ tar zvxf wordpress_file_back.tar.gz 
ーー(省略)ーー
tmp/backup/wordpress/wp-signup.php
tmp/backup/wordpress/info_mb.php
tmp/backup/wordpress/info_php.php
tmp/backup/wordpress/.tmb/
tmp/backup/wordpress/.quarantine/
tmp/backup/wordpress/wp-config.php
tmp/backup/wordpress/.htaccess
[user@pub-web wordpress_backup]$ 

解凍した移行元のWordPressのフォルダ内にあるwp-content 直下を全て、先程作成したWordPressへ移植します。

[user@pub-web wordpress_backup]$ sudo cp -rp tmp/backup/wordpress/wp-content/* /var/www/wordpress/wp-content/
[user@pub-web wordpress_backup]$  

WordPress フォルダのアクセス権限と所有者をWebサーバー起動ユーザー(nginx)に変更します。

[user@pub-web ~]$ sudo chown -R nginx:nginx /var/www/nginx/wordpress/*
[user@pub-web ~]$ 

[user@pub-web ~]$ sudo ls -la /var/www/nginx/wordpress/
total 212
drwxr-xr-x.  5 root  root   4096 Aug 16 21:48 .
drwxr-xr-x.  3 root  root     96 Aug 16 21:34 ..
-rw-r--r--.  1 nginx nginx   418 Sep 24  2013 index.php
-rw-r--r--.  1 nginx nginx    33 Dec  8  2018 info_mb.php
-rw-r--r--.  1 nginx nginx    24 Dec  8  2018 info_php.php
-rw-r--r--.  1 nginx nginx 19935 Jan  6  2018 license.txt
-rw-r--r--.  1 nginx nginx 10303 Aug  2  2018 readme.html
-rw-r--r--.  1 nginx nginx  5458 May  1  2018 wp-activate.php
drwxr-xr-x.  9 nginx nginx  4096 Aug  2  2018 wp-admin
-rw-r--r--.  1 nginx nginx   364 Dec 19  2015 wp-blog-header.php
-rw-r--r--.  1 nginx nginx  1889 May  2  2018 wp-comments-post.php
-rw-r--r--.  1 nginx nginx  3886 Aug  2  2018 wp-config-sample.php
-rw-r--r--.  1 nginx nginx  4581 Aug 16 04:01 wp-config.php
drwxr-xr-x.  8 nginx nginx   138 Aug 16 09:57 wp-content
-rw-r--r--.  1 nginx nginx  3669 Aug 20  2017 wp-cron.php
drwxr-xr-x. 18 nginx nginx  8192 Aug 16 11:58 wp-includes
-rw-r--r--.  1 nginx nginx  2422 Nov 20  2016 wp-links-opml.php
-rw-r--r--.  1 nginx nginx  3306 Aug 22  2017 wp-load.php
-rw-r--r--.  1 nginx nginx 37794 Jul 16  2018 wp-login.php
-rw-r--r--.  1 nginx nginx  8048 Jan 11  2017 wp-mail.php
-rw-r--r--.  1 nginx nginx 16246 Oct  3  2017 wp-settings.php
-rw-r--r--.  1 nginx nginx 30091 Apr 29  2018 wp-signup.php
-rw-r--r--.  1 nginx nginx  4620 Oct 23  2017 wp-trackback.php
-rw-r--r--.  1 nginx nginx  3065 Aug 31  2016 xmlrpc.php
[user@pub-web ~]$ 

移行先のWordPress 環境の wp-config.php を編集します。編集する内容は、DB接続情報とデバッグモードです。
DB接続情報は、移行元のDB接続情報と同じです。デバッグモードは、必須ではありませんがトラブルシュートのためにここでは一時的に有効にします。

[yuji@pub-web ~]$ sudo cp -rp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php
[yuji@pub-web ~]$ 
[yuji@pub-web ~]$ sudo vi /var/www/wordpress/wp-config.php 

// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'WordPressのDB名' );

/** Database username */
define( 'DB_USER', 'WordPressのDB接続ユーザー' );

/** Database password */
define( 'DB_PASSWORD', 'DB接続ユーザーのパスワード' );

/** Database hostname */
define( 'DB_HOST', 'localhost' );

/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );

/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

ーー(省略)ーー
/**
 * For developers: WordPress debugging mode.

define( 'WP_DEBUG', true );   ← false から true に変更

以上で、ひとまず WordPress のWeb周りの環境移行は終わりです。
次は、WordPress のDB環境を移行していきます。

まず、WordPressのDBを作成します。

[user@pub-web ~]$ sudo mysql -u root -p
Enter password: 

# WordPressのDBを作成します
MariaDB [(none)]> create database (WordPressのDB名) character set utf8;
Query OK, 1 row affected (0.001 sec)

# DB接続ユーザーを作成します
MariaDB [(none)]> create user 'DB接続ユーザー'@'localhost' identified by 'パスワード';
Query OK, 0 rows affected (0.003 sec)

# WordPressのDBに対するユーザーの権限を設定し反映します
MariaDB [(none)]> grant all privileges on (DB名).* to 'ユーザー'@'localhost';
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> 
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)

DBとユーザーが作成されていることを確認します。

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wordpressのDB      |
| *****         |
+--------------------+
6 rows in set (0.000 sec)

MariaDB [(none)]> 
MariaDB [(none)]> select user,host from mysql.user;
+--------------+-----------+
| User         | Host      |
+--------------+-----------+
| ****     | localhost |
| 作成ユーザー | localhost |
| mariadb.sys  | localhost |
| mysql        | localhost |
| root         | localhost |
+--------------+-----------+
6 rows in set (0.002 sec)

MariaDB [(none)]> 

移行元のDBのバックアップデータを作成したDBにリストアします。
リストアが終われば、WordPress のDB環境の移行も終わりです。

[user@pub-web ~]$ sudo mysqldump -u root -p (DB名) > ~/wordpress_backup/wordpress_db_back.sql 
Enter password: 
[user@pub-web ~]$ 

移行先のWordPressへのアクセス

環境の移行が一通り終わったら、いよいよ移行先のWordPressへアクセスします。
アクセスすると下記のような画面が表示されますので、[ さあ、始めましょう! ] ボタンを押します(※もしかしたら表示されず次の画面が表示されるかもしれません)。

[ 今すぐインストールを実行 ] リンクをクリックします。

WordPressのWEBおよびDB環境の移行が正常であれば、インストール済みという下記のような画面が表示されます。

[ ログイン ] リンクを押して次へ進めば、Webサイトへのアクセスはできますがレイアウトが崩れている可能性が高いので、適宜、レイアウトの修正は必要となります。

環境によって、移行中にエラーが発生する場合があります。

いくつかのエラーに関してはトラブルシューティングで纏めてありますので必要に応じて参照してください。