phpMyAdminによるWordPressのバックアップ/リストア方法を大公開!Amazon Ligitsailのバックアップ/リストアも、レンタルサーバの引っ越しも思いのまま!

エンジニア小技

・WordPressのバックアップ/リストアを柔軟に行いたい

・プラグイン無しでレンタルサーバーの引っ越しを行いたい

・All-in-One WP Migrationの無料のリストアサイズを超過してしまった

・phpMyAdminの使い方を知りたい

こういった疑問に答えます。

スポンサーリンク

phpMyAdminによるWordPressのバックアップ/リストア方法を大公開!Amazon Ligitsailのバックアップ/リストアも、レンタルサーバの引っ越しも思いのまま!

使用する画像サイズにも依りますが、1年ほどブログを更新しているとブログのバックアップデータが大きくなってきます。

タクゾーはAll-in-One WP Migrationが便利で利用していますが、遂に無料枠での最大リカバリサイズである512MBを超えました。

以前、.htaccessの設定によるAll-in-One WP Migrationのリカバリ時のアップロードサイズの変更について解説していますが、実はAmazon Lightsailでこの手法は利用が出来ません。

Amazon Lightsailは、デフォルトでは.htaccessをbitnami上で利用できません。

そこで、アップロードサイズの変更が出来ない原因かと思い設定を色々試してみましたが、確認した限りでは、.htaccessをAmazon Lightsailで利用できるようにしても、アップロードサイズの変更はできませんでした。(もしかするとphp.iniの設定が足りなかったのかも・・・)

そこで今回は、Amazon LightsailのデータをphpMyAdminでバックアップ、リストアする方法をご紹介します。

この方法では、All-in-One WP Migrationの制限の最大アップロードサイズを気にすることなくリストアが可能になり、サイズの問題からは一切解放されます。

つまりこの方法さえ覚えてしまえば、WordPressのバックアップ・リカバリ、サイトの引っ越し案件も受注が可能になるかもしれません。

LigitsailのWordPressをphpMyAdminでバックアップする

先日こちらでphpMyAdminの接続方法をご紹介しましたので、早速phpMyAdminに接続してバックアップを取得してみます。

バックアップの手順としては、以下が必要です。

  1. 本番環境の各バージョンの確認
  2. WordPressのコンテンツデータのバックアップ
  3. phpMyAdminによるデータベースのバックアップ

All-in-One WP Migrationによるバックアップ、リストアはこのあたりを何も気にせずに対応ができるでとても楽ですね。

では、早速バックアップを実施してみます。

本番環境の各バージョンの確認

先ほどのAll-in-One WP Migrationのリンクにもありますが、リカバリする際には以下の環境を合わせておくと失敗が少なくなりますので、必ず本番環境の情報を確認しておきましょう。

  1. PHPのバージョン
  2. phpMyAdminのバージョン
  3. WordPressのバージョン

参考までに、今回の環境は以下の通りです。

phpMyAdminに接続して左側のホームボタンをクリックすると、PHPとphpMyAdminのバージョンの確認ができます。

WordPressのバージョンはWordPressのダッシュボード、更新で確認が可能です。

以上で事前の確認は完了です。

次にデータのバックアップを行います。

WordPressのコンテンツデータのバックアップ

Amazon LightsailのWordPressのディレクトリは、『/opt/bitnami/apps/wordpress/htdocs』ですので、一つ上のディレクトリに移動します。

$ cd /opt/bitnami/apps/wordpress
$ ls
bin  bnconfig  conf  htdocs  licenses  tmp  updateip

移動したらhtdocsをtarコマンドで纏めます。

All-in-One WP Migrationのバックアップを複数保存してある場合には、バックアップデータ削減のために実行前に削除しましょう。

いつのバックアップデータか分かるように、dateコマンドを利用してファイルに日付と時間を付与すると、あとで分かりやすいです。

$ sudo tar -zcvf wp_file_`date "+%Y%m%d_%H%M%S"`.tar.gz htdocs

暫くするとファイルが作成されます。

$ ls
bin       conf    licenses  updateip
bnconfig  htdocs  tmp       wp_file_20210724_094127.tar.gz

今回は『wp_file_20210724_094127.tar.gz』が、作成されたコンテンツのバックアップデータとなります。

こちらをTera Termの転送機能を利用して、ローカル(手元の端末)に転送します。

接続しているTera Termの『ファイル』から『SSH SCP』を選択するとポップアップが表示されますので、転送元のデータと先を設定します。

  • From:先ほど作成したtar.gzファイルを選択します。
    /opt/bitnami/apps/wordpress/wp_file_20210724_094127.tar.gz
  • To:ローカル(手元)の受け取り先を選択します。
    C:\Users\ユーザー名\Downloads

入力したらReceiveを選択するとデータが転送されます。

指定した通りにダウンロードにデータが転送されました。

これでコンテンツデータのバックアップは完了です。

phpMyAdminによるデータベースのバックアップ

次にデータベースのバックアップを行います。

Amazon LightsailのWordPressのデータベースは『bitnami_wordpress』なので、このデータベースをバックアップします。

データベースをbitnami_wordpressしたら、エクスポート方法は『簡易』を選び『実行』をクリックします。

するとデータベースのバックアップが作成されダウンロードされます。

以上でバックアップは完了です。

レストア環境の構築

次にレストア環境の構築を行います。

Amazon LightSailはUbuntuで構成されていますが、今回もAll-in-One WP Migrationのリストアの際と同様にCentOSで環境を構築します。

Ubuntuで構築したいのであればUbuntuで構築しても構いませんし、Windowsの方が安心なのであればWinodwsでも問題ありません。

あなたが慣れている(困ったときに情報を自身で調べられる)OSを利用しましょう。

なお、リストア環境は公開サーバーでないことを想定し、firewallやselinuxはオフにしています。

  • CPU:1コア
  • メモリ:4GB
  • ディスク:30GB
  • OS:CentOS Linux release 7.9.2009 (Core)
  • カーネル:3.10.0-1160.el7.x86_64
  • firewalld:オフ
  • selinux:オフ

CentOSのインストール方法に自信がない方はこちらを参考にしてください。

OSの準備後リストア環境には、以下の手順で環境の構築をしていきます。

WordPressが動くところまでは前回のリストア環境の構築方法と同じで、そこにphpMyAdminをインストールします。

PHP7.3のインストール

remiレポジトリを利用して、PHPの7系をインストールします。

# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

次に、PHP7.3系と関連するモジュールを合わせてインストールします。

# yum -y install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-mysqlnd

インストール完了後に、念のためバージョンの確認をします。

# php -v
PHP 7.3.29 (cli) (built: Jun 29 2021 09:30:31) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.29, Copyright (c) 1998-2018 Zend Technologies

Apacheの有効化

Apacheは先程のPHPのインストール時に同時にインストールされますので、webサーバのApacheの有効化のみをします。

# systemctl enable httpd

MariaDBのインストールと起動時の有効化と設定

Amazon LightsailのDBはmysqlですが、mysqlの後継はMariaDBとなりますのでMariaDBをインストールします。

インストールのためにレポジトリの設定をします。

# vi /etc/yum.repos.d/mariaDB.repo

mariaDB.repoに以下の設定を記入し:wq!で保存します。

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

レポジトリの設定が完了したら、MariaDBをインストールとMariaDMの有効化、起動をします。

# yum install -y MariaDB-server MariaDB-client
# systemctl enable mariadb
# systemctl start mariadb

MariaDBにログインします。

# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.48-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)]>

MarinDBにログインしたら、WordPress用のアカウントとパスワードを設定します。

# mysql
MariaDB [(none)]> update mysql.user set password=password('パスワード') where user = 'root';

成功すると以下が表示されます。

Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

設定を反映後にexitを入力し、エンターを実行してログアウトをします。

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

一度ログアウトしたら、先程設定したユーザ名・パスワードでログインします。

mysql -u root -p
Enter password:パスワードを入力

WordPressのインストール用のデータベースを作成と確認を行います。

MariaDB [(none)]> create database wp;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wp                 |
+--------------------+
5 rows in set (0.00 sec)

MariaDB [(none)]>

最下段にデータベース(wp)が作成されています。

WordPressのダウンロードとインストール

WordPressのパッケージのダウンロードにwgetコマンドを利用しますので、先にインストールします。

# yum install -y wget

WordPressのダウンロードと展開

先ほどの事前のチェックから、WordPressのバージョンは5.7.2の日本語版ということが分かっていますので、バージョンを指定してダウンロードします。

# cd /tmp
# wget http://ja.wordpress.org/wordpress-5.7.2-ja.tar.gz
# tar -zxvf wordpress-5.7.2-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

次にapacheの設定をします。

ドキュメントルートの変更と設定の追加をします。

ドキュメントルートとは、実際にそのサーバにwebアクセスした際に表示されるディレクトリです。

# vi /etc/httpd/conf/httpd.conf

【変更前】

DocumentRoot "/var/www/html"

【変更後】

#DocumentRoot "/var/www/html" <--コメントアウト 
DocumentRoot "/var/www/wordpress"
<Directory "/var/www/wordpress">
 AllowOverride All
</Directory>

iを押し、入力モードに移行後、設定変更と追加をします。その後Escを押し、:wq!を入力してエンターを押し設定を保存します。

最後にApacheを起動してインストールと設定は完了です。

# systemctl start httpd

WordPressの設定ファイルの編集

WordPressのサンプルの設定ファイル『wp-config.php』をコピーして編集を始めます。

# cd /var/www/wordpress/
# cp -p wp-config-sample.php wp-config.php
# vi wp-config.php

変更箇所は、データベース名(wp)、ユーザ名(root)とパスワード(設定したパスワード)の3か所です。

【変更前】

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', '設定したパスワード' );

iを押し、入力モードに移行後に上記の変更し、Escを押して:wq!と入力しエンターを押して保存します。

WordPressのインストール

ブラウザにLinuxのIPアドレスを入力すると、WordPressのセットアップ画面が表示されます。

ここで入力するデータはリストアすると、バックアップを取得したサイトのデータに上書きされます。

セットアップ後にログインできれば問題ありませんので、適当な情報を入れてセットアップをすすめましょう。

インストールが成功すると『成功しました!』と表示されるのでログインします。

設定したユーザ名、パスワードでログインします。

無事ログインできました。

これでWordPressのインストールは完了です。

WordPressのインストールエラー

WordPressのセットアップ時に『データベース接続確立エラー』が表示される場合には、先ほど設定したWordPressの設定ファイルに誤りがある場合があります。

再度、データベース名、ユーザ名、バスワードに誤りがないが確認しましょう。

phpMyAdminのダウンロードとインストール

phpMyAdminのバージョンは、PHPとデータベースのバージョンに合わせる必要あります。

データベースのバージョンの確認には、mysqlコマンドに–versionオプションを付与するか、MariaDBにログインしても確認することが出来ます。

# mysql --version
mysql  Ver 15.1 Distrib 10.1.48-MariaDB, for Linux (x86_64) using readline 5.1

MariaDB [(none)]> select version();
+-----------------+
| version()       |
+-----------------+
| 10.1.48-MariaDB |
+-----------------+
1 row in set (0.00 sec)

今回のレストア環境は

  • php:PHP 7.3.29
  • MariaDB:10.1.48-MariaDB

ということが分かりました。

phpMyAdminのリリースノートを確認すると、対応するphpMyAdminのバージョンは5.1.0以降のようです。

phpMyAdmin 5.1.0 is released

今回は、すでに5.1.1がリリースされていますので、phpMyAdmin-5.1.1-all-languages.tar.gzを利用します。

ダウンロードサイトは以下となります。

Downloads

ダウンロードのリンクは右クリックをするとリンクのアドレスがコピーできます。

次に、リンクアドレスをコピーしたらwgetコマンドでリストア環境にphpMyAdminをダウンロードします。

wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.tar.gz

ダウンロードしたら解凍します。

tar -zxvf phpMyAdmin-5.1.1-all-languages.tar.gz

解凍したフォルダーをドキュメントルート以下に移動します。

mv phpMyAdmin-5.1.1-all-languages /var/www/wordpress/phpmyadmin
chown -R apache /var/www/wordpress/phpmyadmin

移動したら、リストア環境にブラウザでアクセスします。

アクセス先は、http://リストア環境のサーバーのIPアドレス/phpmyadmin/ です。

ログインにはユーザ名(root)とパスワードはMariaDBの設定の際に使用したパスワードを使用します。

無事ログインできました!

簡単ですね。

エラーの修正

phpMyAdminへのログインは成功したものの、一番下にエラーと警告が表示されています。

エラーは、『設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。』と表示されています。

このエラーは設定ファイルのblowfish_secretの部分を編集することで解決ができます。

先ず設定ファイルをリネームします。

# mv /var/www/wordpress/phpmyadmin/config.sample.inc.php /var/www/wordpress/phpmyadmin/config.inc.php

次に、設定ファイルのblowfish_secretの後の部分に32文字の文字列を追加し、保存します。

# vi /var/www/wordpress/phpmyadmin/config.inc.php

文字列は適当なもので構いません。

【変更前】

 * This is needed for cookie based authentication to encrypt password in
 * cookie. Needs to be 32 chars long.
 */
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

/**
 * Servers configuration
 */

【変更後】(abcdefghijklmnopqrstuvwxyz123456を追加しています。)

 * This is needed for cookie based authentication to encrypt password in
 * cookie. Needs to be 32 chars long.
 */
$cfg['blowfish_secret'] = 'abcdefghijklmnopqrstuvwxyz123456'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

/**
 * Servers configuration
 */

追加したら:wq!で保存して完了です。

設定後に、再度phpMyAdminにログインするとエラーが消えています。

phpMyAdmin 環境保管領域のセットアップ

次に、もう一つの警告の対応をします。

phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。 代わりにデータベースの操作タブを使って設定することもできます。

エラーメッセージの『こちら』の部分をクリックして先に進むと、理由が表示されます。

問題には『phpMyAdmin 環境保管領域をセットアップ』が必要なことが、このメッセージからわかります。

先ほどど同様にメッセージにある『作成』をクリックすると、必要な処理が自動的に実施され、作業は完了です。

ホーム画面に戻ると警告が消えていますので、エラーや警告に関する作業は全て完了です。

phpMyAdminのインポート(アップロード)ファイルのサイズの変更

デフォルトでは、インポートできるファイルのサイズは2MBしかありませんのでサイズ変更をします。

設定を変更するには、『/etc/php.ini』を編集します。

変更箇所は以下の三か所です。

【変更前】

memory_limit = 128M
post_max_size = 8M
upload_max_filesize 2M

【変更後】

memory_limit = 1024M
post_max_size = 1024M
upload_max_filesize 1024M

変更したら、設定の反映のためにサーバーをリブートします。

# reboot

リブート後にphpMyAdminにアクセスると、アップロードサイズが1024MiB(1GB)に増えています。

以上でリストア環境の設定は完了です。

バックアップデータのリストア

遂にバックアップデータのリストアを行います。

作業は以下の2つです。

  1. WordPressのコンテンツデータのリストア
  2. phpMyAdminによるデータベースのリストア

WordPressのコンテンツデータのリストア

先ずは、先ほど取得したWordPressのコンテンツデータをリストア環境に転送します。

Tera Termにドラッグアンドドロップをするとデータ転送ができます。

ドラッグアンドドロップをすると、送信先の指定ができますので『/var/www』を指定し『OK』を選択ます。

次にコンテンツデータを解凍し、所有権をapacheに変更します。

# cd /var/www/
# tar -zxvf wp_file_20210724_094127.tar.gz
# chown apache:apache -R htdocs

変更しました。

# ls -la
合計 616888
drwxr-xr-x   6 root   root         102  7月 24 22:01 .
drwxr-xr-x. 20 root   root         278  7月 17 23:16 ..
drwxr-xr-x   2 apache apache         6 11月 17  2020 cgi-bin
drwxrwxr-x   5 apache apache      4096  7月 23 08:59 htdocs
drwxr-xr-x   2 apache apache         6 11月 17  2020 html
drwxr-xr-x   6 apache apache      4096  7月 24 11:48 wordpress
-rw-r--r--   1 root   root   631682741  7月 24 18:42 wp_file_20210724_094127.tar.gz

変更後に、htdocs以下のデータをwordpress以下にコピーします。

# cd htdocs
# \cp -fR ./* ../wordpress/

コピーが完了したら、wp-config.phpが上書きされてしまっているので再度編集します。

define( 'DB_NAME', 'wp' );

/** MySQL データベースのユーザー名 */
define( 'DB_USER', 'root' );

/** MySQL データベースのパスワード */
define( 'DB_PASSWORD', '設定したパスワード' );

以上で、コンテンツデータのリストアは完了です。

phpMyAdminによるデータベースのリストア

次にデータベースのインポートを行います。

MariaDBのセットアップ時に作成したデータベース『wp』を選択し、ファイルの選択をクリックしてバックアップしたwordpressのデータベース『bitnami_wordpress.sql』を選び、『実行』します。

データのインポートには少し時間が掛かります。

成功すると『インポートは正常に終了しました。』のメッセージが表示されます。

リストア環境のサーバーのIPアドレスアクセスすると、リストアが出来ていることが確認できます。

以上でリストアは完了です。

まとめ

今回は備忘録も兼ねて、WordPressのバックアップ/リストアについて纏めてみました。

こういった作業に慣れていない方は慣れるまで何度か挑戦してみましょう。

自宅サーバーがあると、いつでも好きなだけ練習ができるので安心ですよ。

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