そのWordPressのバックアップは使えるの?超簡単なリストア環境の構築方法を伝授!
筆者は、以前からWordPressのバックアップにはAll-in-One WP Migrationを利用していますが、ブログを更新しているとバックアップデータが徐々に肥大化します。
All-in-One WP Migrationのバックアップの取得サイズは特に制限はないのですが、無料のプランではリストア(復元)サイズにサイズ制限があります。
今回は、手元に復元(リストア)環境の構築方法を、少し裏技を含めてご紹介致します。
リストア環境の構築
今回はLinux(Rocky)で環境構築を行いますが、Linuxのインストールについては割愛しています。
Rocky Linuxはこちらからダウンロードください。
構築環境の概要
なお、今回は自宅でのレストア環境構築のため、ファイアウォールやSELinuxは停止しています。
- Rocky Linux 9.4 (Diskは30GB、メモリは2GB、CPUは2コア)
- yum -y install update 済み
- firewalldを停止済み
- SELinuxを停止済み
- インターネットに接続可
現環境のWordPressの環境調査
環境構築の際の注意点としては以下の二点です。
- WordPressのバージョンを合わせる
- PHPのバージョンを(ある程度)合わせる
PHPのバージョンは、
WordPressのレストア環境を構築す場合、いくつかの注目すべき点があります。
基本は新機能の追加はメジャーリリースやマイナーリリースでしか行いません。なので、マイナーリリースまで合わせておけばあまり心配はいりません。
たとえば PHP 5.3.1 を例にとると、5 がメジャーリリースで 3 がマイナーリリース、 そして 1 がポイントリリースとなります。php.net
今回もWordPress、PHPのバージョンを合わせて構築を行います。
ということで、筆者の環境のPHPのバージョンを調べると、
$ php -v
PHP 8.2.21 (cli) (built: Jul 19 2024 10:33:10) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.21, Copyright (c) Zend Technologies
with Zend OPcache v8.2.21, Copyright (c), by Zend Technologies
ということで、PHP 8.2系がインストールされているのがわかりましたので、これに合わせて環境の構築を行います。
PHP8.2のインストール
作業はすべてrootで行っています。
dnfコマンドで現在利用可能なレポジトリを確認します。
# dnf repolist
repo id repo の名前
appstream Rocky Linux 9 - AppStream
baseos Rocky Linux 9 - BaseOS
extras Rocky Linux 9 - Extras
phpのインストールにはRemiリポジトリを利用しますので、Remiが含まれているか否かを確認します。
Rocky Linux のインストール直後では、Remiリポジトリが含まれていません。
Rocky Linux 9 に対応したRemiリポジトリをインストールします。
# dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm
Remiリポジトリを有効にし、PHP8.2 を利用可能にします。
# dnf module reset php && dnf module enable php:remi-8.2
PHP8.2をインストールします。
# dnf install php
インストールされたPHPのパッケージを確認します。
# dnf list installed | grep php
oniguruma5php.x86_64 6.9.9-1.el9.remi @remi-safe
php.x86_64 8.2.23-1.el9.remi @remi-modular
php-cli.x86_64 8.2.23-1.el9.remi @remi-modular
php-common.x86_64 8.2.23-1.el9.remi @remi-modular
php-fpm.x86_64 8.2.23-1.el9.remi @remi-modular
php-mbstring.x86_64 8.2.23-1.el9.remi @remi-modular
php-opcache.x86_64 8.2.23-1.el9.remi @remi-modular
php-pdo.x86_64 8.2.23-1.el9.remi @remi-modular
php-sodium.x86_64 8.2.23-1.el9.remi @remi-modular
php-xml.x86_64 8.2.23-1.el9.remi @remi-modular
追加のモジュールをインストールします。
# dnf -y install php-mysqlnd php-mcrypt php-devel
phpのバージョンを確認すると、php8.2.23がインストールされたことが分かります。
# php -v
PHP 8.2.23 (cli) (built: Aug 27 2024 15:32:20) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.23, Copyright (c) Zend Technologies
with Zend OPcache v8.2.23, Copyright (c), by Zend Technologies
httpdのインストールと起動
次にWEBサーバーのhttpdをインストールします。
# yum -y install httpd
インストールが完了したら、httpdを起動します。
# systemctl start httpd
OSの起動時にhttpdが起動するように起動設定を行います。
# systemctl enable httpd
mariadbのインストールと起動時の有効化、設定
次にデータベースのインストールと設定を行います。
MariaDBのインストールを行います。
# dnf install mariadb-server
MariaDBの起動と起動設定を行います。
# systemctl start mariadb
# systemctl enable mariadb
MariaDBにログインできることを確認します。
# mysql
ログインすると以下のようになります。
# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.22-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
mysql.user テーブルからすべてのデータを取得して作成済みのユーザーの一覧は以下で確認できます。
# select user, host from mysql.user;
今回は既存のアカウントであるrootアカウントを利用しますので、rootのパスワードを設定します。
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY 'XXXXXX';
--------------
ALTER USER 'root'@'localhost' IDENTIFIED BY 'XXXXXX'
--------------
Query OK, 0 rows affected (0.002 sec)
不要かもしれませんが、おまじないとして flush privileges を実行し、付与テーブルをロード後にmariaDBからログアウトします。
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit
設定したパスワードでログインが可能か確認します。
# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.5.22-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
WordPressのインストール用のデータベースを作成とデータベースが無事作成されているかを確認します。
MariaDB [(none)]> create database wp;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| wp |
+--------------------+
4 rows in set (0.001 sec)
MariaDB [(none)]>
最下段にデータベース(wp)が作成されています。
WordPressのインストール
WordPressのバージョンはWordPressのダッシュボードの更新から確認ができます。
次に、WordPressのダウンロードと展開を行います。
WordPressのバージョンはインストールするばージョンに合わせてください。
# cd /tmp
# wget http://ja.wordpress.org/wordpress-6.6.1-ja.tar.gz
# tar -zxvf wordpress-6.6.1-ja.tar.gz -C /var/www/
# cd /var/www
# chown -R apache:apache *
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
次にhttpdの設定ファイルの修正をします。
ここでは、ドキュメントルートの変更と設定の追加をします。
ドキュメントルートとは、実際にそのサーバにwebアクセスした際に表示されるディレクトリです。
# vi /etc/httpd/conf/httpd.conf
変更前
DocumentRoot "/var/www/html"
変更後
DocumentRoot "/var/www/wordpress"
<Directory "/var/www/wordpress">
AllowOverride All
</Directory>
最後にapacheを起動してインストールと設定は完了です。
# systemctl start httpd
WordPressのセットアップ
さて、いよいよWordPressのインストールをします。
WordPressのサンプルの設定ファイルをコピーして編集します。
# cd /var/www/wordpress/
# cp -p wp-config-sample.php wp-config.php
# vi wp-config.php
変更箇所は以下です。
変更前
define( 'DB_NAME', 'database_name_here' );
/** MySQL データベースのユーザー名 */
define( 'DB_USER', 'username_here' );
/** MySQL データベースのパスワード */
define( 'DB_PASSWORD', 'password_here' );
変更後
define( 'DB_NAME', 'wp' );
/** MySQL データベースのユーザー名 */
define( 'DB_USER', 'root' );
/** MySQL データベースのパスワード */
define( 'DB_PASSWORD', '設定したパスワード' );
インストールの開始
ブラウザにLinuxのIPアドレスを入力すると、WordPressのセットアップ画面が表示されます。
ここで入力するデータはリストアすると、バックアップを取得したサイトのデータに上書きされます。
セットアップ後にログインできれば問題ありませんので、適当な情報を入れてセットアップをすすめましょう。
インストールが成功すると、成功しました!と表示されるのでログインします。
設定したユーザ名、パスワードでログインします。
無事WordPressにログオンできれば完了です。
All-in-One WP Migrationのセットアップとリストア
今回新たに作成したWordPressの環境にはプラグインがほぼインストールされていません。
今回は、All-in-One WP Migrationを利用してリストアを行いますが、前述の通りAll-in-One WP Migrationの無料版はリストアのサイズに制限があります。
そこは、all-in-one wp migration ver.6.68で回避が可能という記事を見つけましたので、その手法を試してみます。
all-in-one wp migration ver.6.68もダウンロード可能にされている方がいますので、検索してみてください。
all-in-one-wp-migration.6.68を入手したら、プラグインのアップロードを選択してインストールを行います。
インストールが完了したら、プラグインの有効化を行います。
この時点でもAll-in-One WP Migrationのアップロードサイズが512MBになっています。
constants.phpファイルの編集
constants.phpファイルを検索し、ファイルの編集を行うことで、512MBのファイルサイズをより大きい値に変更します。
まずは、constants.phpを検索します。
# find / -name constants.php -print
/var/www/wordpress/wp-content/plugins/all-in-one-wp-migration/constants.php
/var/www/wordpress/wp-includes/sodium_compat/lib/constants.php
次にconstants.phpを編集します。
# vi /var/www/wordpress/wp-content/plugins/all-in-one-wp-migration/constants.php
( ‘AI1WM_MAX_FILE_SIZE’, 536870912 ) の後ろに2倍を意味する*2を追加します。
変更前
// =================
// = Max File Size =
// =================
define( 'AI1WM_MAX_FILE_SIZE', 536870912 );
変更後
// =================
// = Max File Size =
// =================
define( 'AI1WM_MAX_FILE_SIZE', 536870912 *2 );
再度、All-in-One WP Migrationのアップロードサイズを確認すると2倍の1GBになっていることが分かります。
あとはバックアップしたAll-in-One WP Migrationのデータをアップロードして、リストアできるか確認しましょう。
まとめ
今回はAll-in-One WP Migrationで取得したファイルをレストアする環境構築ををしてみました。
バックアップは取得するだけではなく、確実に復旧できるのか?を確認しておくことが重要ですので、是非参考にしてみてください。