ここでは、エックスサーバ上で動作しているWordPressをAWSに移行ができるか試してみました。バックアップとしてデータを取得しておいて、元の環境だけではなく、別の環境で稼働ができると可用性がアップすると考えて試しています。なおSSHでの作業が前提ですので、悪しからず。
移行前後のサーバ環境
今回試した環境の情報です。
(移行前)エックスサーバ | (移行後)AWS | |
OS | CentOS7.9 | RedHat8.7 |
PHP | 7.4.33 | 8.0.27 |
DB | MariaDB10.5 | mysql-8.0.30-1 |
結論から、上記環境で大きなトラブルはなく移行は出来ました。今回はたまたまかもしれませんが、ご参考になれば幸いです。
エックスサーバ側でのバックアップ
エックスサーバ側でバックアップを取得します。
具体的には、コンテンツファイルとデータベースの2つを取得します。
まず、コンテンツファイルから。
SSHでサーバに接続して、public_html配下をtarコマンドで取得します。私の場合、/home/エックスサーバのID/ドメイン名/public_html/ でした。こちらを以下のコマンドでバックアップします。
$ cd dassyi.com/public_html
$ tar cvzf blog.dassyi.com_20230502.tar.gz public_html
出来上がった、blog.dassyi.com_20230502.tar.gz ファイルをPCにダウンロードします。
次に、データベースのバックアップです。エックスサーバでは、phpmyadminが標準で入っているので、こちらからデータベースのバックアップを取得しても良いのですが、今回はあえて、コマンドで実行してみます。
まず、データベースの情報を確認します。wp-config.phpファイルを開き、下記の項目を確認します。
- define( ‘DB_NAME’, ‘データベース名’ );
- define( ‘DB_USER’, ‘DBユーザ’ );
- define( ‘DB_PASSWORD’, ‘パスワード’ );
確認した情報を、以下の通りの引数にして、コマンドを実行します。
$ mysqldump -u DBユーザ -pパスワード データベース名 > db_backup_20230502.sql
こちらも、出来上がったdb_backup_20230502.sqlファイルをPCにダウンロードします。
AWS側へアップロード
ここで大前提になりますが、AWS側でWordPressが動作する環境が準備出来ている必要があります。
もし準備ができていなければ、先にご対応ください。(ここでは詳細は割愛させて頂きます)
まず、エックスサーバと同じDBユーザ、パスワード、権限を与え、データベースを作成します。
$ mysql -u root -p
> CREATE USER ‘DBユーザ’@’localhost’ IDENTIFIED BY ‘パスワード’;
> GRANT ALL PRIVILEGES ON データベース名.* TO ‘DBユーザ’@’localhost’;
> FLUSH PRIVILEGES;
# 確認
> select user, host from mysql.user;
> show grants for ‘wpkanriadm’@’localhost’;
# DB作成
> create database データベース名;
# 確認
> show databases;
次にデータベースを戻します。
$ mysql -u root -p データベース名 < db_backup_20230502.sql
特に何も表示されなければ、無事データを戻せています。
次にコンテンツファイルを配置します。AWSでは、apache標準の/var/www/html 配下に設置することにしましたので、ここにバックアップデータを展開します。またapache環境では、Wordpressのファイルの所有者、グループは、それぞれ、apacheユーザ、apacheグループにする必要があるので、変更しておきます。
$ tar xvzf ~/blog.dassyi.com_20230502.tar.gz
$ sudo mv public_html/* /var/www/html/
$ sudo mv public_html/.??* /var/www/html/
$ sudo chown -R apache:apache /var/www/html/*
$ sudo chown -R apache:apache /var/www/html/.??*
apacheのコンフィグ(httpd.conf や ssl.conf)の設定で、エックスサーバと同じドメインで動作するようになっているか確認します。またディレクティブの設定を追加します。(下記一例です)
ServerName blog.dassyi.com:443
<Directory /var/www/html> Options FollowSymLinks AllowOverride All Require all granted </Directory>
編集が終了したら、apacheのサービスを再起動して、ブラウザで確認になりますが、エックスサーバと同じドメインでAWSに移行した場合、DNSの設定変更が必要になります。検証の為だけにDNSを変更するのは手間なので、ローカルのhosts(C:\windows\system32\drivers\etc\hosts)ファイルを修正して、一時的に私からのみ確認できるようにします。
こちらで確認すると、エックスサーバと同じ画面が表示され、管理画面にも同じアカウントでログインできました。OSやPHPのバージョンが異なるので、どこかでエラーになるだろうと予想していましたが、そのようなことはなく、問題はなさそうです。
すべての機能を確認したわけではないので、どこかに不具合が存在している可能性はあります。
不要なトラブルを避けるのであれば、可能な限り移行前後で同じバージョンに合わせている方が無難だと思います。
おまけ(ドメイン名が変わる場合の対処)
もし、移行前後でドメイン名(URL)を変えたい場合は、/var/www/html/wp-config.phpのファイルに、下記の2行を追加することで、対応が可能です。もともとは、https://blog.dassyi.comで動作させていたものを、https://aws.dassyi.comに変更した例です。
define(‘WP_HOME’,’https://aws.dassyi.com’);
define(‘WP_SITEURL’,’https://aws.dassyi.com’);
WordPressで移行時にドメイン名やURLを変更する方法は、ググるとたくさん出てきます。今回紹介した手法以外にも、DBの中身を変更する方法など他にもあるので、ご自身が対応しやすいものを検索してみてください。
今回はここまでになります。最後までお読みいただきありがとうございました。