そのWordPressのバックアップは使えるの?超簡単なリストア環境の構築方法を伝授!

IT小技

その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で取得したファイルをレストアする環境構築ををしてみました。

バックアップは取得するだけではなく、確実に復旧できるのか?を確認しておくことが重要ですので、是非参考にしてみてください。

タイトルとURLをコピーしました