このセクションでは、WordPress の環境移行について紹介していきます。
移行元と移行先の環境は以下のとおりとなります。
移行元 | 移行先 | |
OS | CentOS 7.6 | AlmaLinux release 9.2 |
WEB | Apache 2.4.6 | nginx 1.24.0 |
PHP | PHP 7.1.26 | PHP 8.0.27 |
DB | 5.5.60-MariaDB | 10.5.16-MariaDB |
WordPress | Ver 4.9.8 | Ver 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サイトへのアクセスはできますがレイアウトが崩れている可能性が高いので、適宜、レイアウトの修正は必要となります。
環境によって、移行中にエラーが発生する場合があります。
いくつかのエラーに関してはトラブルシューティングで纏めてありますので必要に応じて参照してください。