サイトファイルを復元
データベースに続いて、サイトファイルをバックアップアーカイブから、ドキュメントルート内のblogフォルダへ解凍復元します。 scp で母艦から仮想マシンへバックアップアーカイブを転送の後、解凍するのですがその際に、バックアップアーカイブ内のデータベースバックアップや、プラグイン一覧をワイルドカードで除外指定しておくと良いでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$ tar -zxvf --exclude=*.gz ./20210714_020604_CY5Q33PH03.tar.gz -C /media/htdocs/blog -略- $ ll /media/htdocs/blog -rw-r--r-- 1 user user 355 Jul 13 18:06 backwpup_readme.txt -rw-r--r-- 1 user user 85 Feb 15 13:52 BingSiteAuth.xml -rw-r--r-- 1 user user 675 Dec 9 2020 .htaccess -rw-r--r-- 1 user user 405 Apr 20 2020 index.php -rw-r--r-- 1 user user 19915 Apr 15 09:32 license.txt -rw-r--r-- 1 user user 5040 Jul 13 18:06 manifest.json -rw-r--r-- 1 user user 7345 May 13 02:23 readme.html -rw-r--r-- 1 user user 147 Apr 23 15:19 robots.txt -rw-r--r-- 1 user user 7165 Mar 10 11:51 wp-activate.php drwxrwxr-x 9 user user 4096 Jul 14 06:56 wp-admin/ -rw-r--r-- 1 user user 351 Apr 20 2020 wp-blog-header.php -rw-r--r-- 1 user user 2328 Dec 9 2020 wp-comments-post.php -r--r--r-- 1 user user 4014 Jul 14 07:11 wp-config.php drwxrwxr-x 6 user user 4096 Jul 14 06:56 wp-content/ -rw-r--r-- 1 user user 3939 Dec 9 2020 wp-cron.php drwxrwxr-x 25 user user 12288 Jul 14 07:00 wp-includes/ -rw-r--r-- 1 user user 2496 Apr 20 2020 wp-links-opml.php -rw-r--r-- 1 user user 3313 Mar 10 11:51 wp-load.php -rw-r--r-- 1 user user 44994 Apr 15 09:32 wp-login.php -rw-r--r-- 1 user user 8509 Apr 30 2020 wp-mail.php -rw-r--r-- 1 user user 21125 Mar 10 11:51 wp-settings.php -rw-r--r-- 1 user user 31328 Mar 10 11:51 wp-signup.php -rw-r--r-- 1 user user 4747 Dec 9 2020 wp-trackback.php -rw-r--r-- 1 user user 3236 Aug 12 2020 xmlrpc.php |
wp-config.phpの変更
復元したファイルのうち、wp-config.phpを復元先の環境に合わせて編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// ** MySQL 設定 - こちらの情報はホスティング先から入手してください。 ** // /** WordPress のデータベース名 */ define('DB_NAME', 'dev_svcan'); /** MySQL のユーザー名 */ define('DB_USER', 'root'); /** MySQL のパスワード */ define('DB_PASSWORD', ''); /** MySQL のホスト名 (ほとんどの場合変更する必要はありません。) */ define('DB_HOST', 'localhost'); /** ファイル末尾に追記 */ define('WP_SITEURL', 'https://xampp1.local/blog/'); define('WP_HOME', 'https://xampp1.local/blog/'); |
上記編集内容のうち最後に2行追記しているのは、サイトアドレスを上書き設定する定数です。この定数をwp-config.php内で設定してしまうことにより、データベース内に入っている本番サイトのURLをWordPressは使わなくなります。今回のように、本番サイトに対する開発環境構築に適した手法でしょう。
wp-config.phpのパーミッション
これでWordPress移行時の基本的な作業は終わりなので、早速サイトを開いてみますがブラウザ上に次のPHPエラーが表示されるのみでした。
1 2 3 4 |
Warning: require_once(/media/htdocs/blog/wp-config.php): failed to open stream: Permission denied in /media/htdocs/blog/wp-load.php on line 37 Fatal error: require_once(): Failed opening required '/media/htdocs/blog/wp-config.php' (include_path='.:/opt/lampp/lib/php') in /media/htdocs/blog/wp-load.php on line 37 |
WordPressの主要ファイルに対する適切なパーミッションの設定については、公式サポートにも記事が公開されていますが、さらに具体的に個々のファイルに対するパーミッションについて言及しているこちらの記事を参考にさせて頂きました。
早速 wp-config.php のパーミッションを確認してみると、本番サイトでは400に設定されていたので、これを今回のXAMPP開発環境に合わせて444に設定します。
1 2 3 4 5 6 |
$ ll /media/htdocs/blog/wp-config.php -r-------- 1 user user 4014 Jul 14 07:11 wp-config.php $ chmod 444 /media/htdocs/blog/wp-config.php $ ll /media/htdocs/blog/wp-config.php -r--r--r-- 1 user user 4014 Jul 14 07:11 wp-config.php |
これでページを再読込すると今度はサイトを正常に開けました。さらにブラウザの開発ツールを用いて、ページ内の要素が開発環境を参照していることを確認します。
管理画面ログインCAPTCHAの表示エラー
サイトコンテンツに問題は無さそうなので、続いて管理画面を開こうとすると、ログインページのCAPTCHAがまたしてもパーミッションエラーで動きません。
これはSiteguard WPプラグインが、管理画面のログイン時やユーザがコメントを入力する際に必要なCAPTCHAの画像を、プラグイン内のサブフォルダに適宜保存する際、書き込み権限が付与されていない場合に発生するエラーです。
このサブフォルダ tmp に対する権限を777へ変更すると、CAPTCHA画像が正常に書き込まれ、ログインページにも表示されました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ pwd /media/htdocs/blog/wp-content/plugins/siteguard/really-simple-captcha $ ll | grep tmp drwxrwxr-x 2 user user 4096 Jul 14 06:56 tmp/ $ chmod 777 tmp $ ll | grep tmp drwxrwxrwx 2 user user 4096 Jul 14 06:56 tmp/ $ ll tmp -r--r--r-- 1 daemon daemon 1656 Jul 14 08:02 1007759393.png -r--r----- 1 daemon daemon 97 Jul 14 08:02 1007759393.txt -rw-r--r-- 1 user user 102 May 12 12:26 dummy.png -rw-r--r-- 1 user user 41 May 12 12:26 .htaccess |
avahiによる仮想ホスト〜ゲスト間の名前解決
avahi-daemon が仮想ホスト、仮想マシン双方で正常に作動していれば、仮想ホストから仮想マシンのFQDNを使ってアクセスすることが出来るはずです(いちいち仮想マシンが仮想DHCPサーバから割り当てられたIPアドレスを調べる必要なし)。もしpingを飛ばしても名前解決されないようであれば、仮想ホスト、仮想マシン双方の当該サービスの状態を確認します。まずは仮想マシン側から確認しますが、OSインストールしたばかりなので、問題無く稼働しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
xampp1:~$ sudo systemctl status avahi-daemon ● avahi-daemon.service - Avahi mDNS/DNS-SD Stack Loaded: loaded (/lib/systemd/system/avahi-daemon.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2021-07-19 01:21:01 UTC; 4h 47min ago TriggeredBy: ● avahi-daemon.socket Main PID: 658 (avahi-daemon) Status: "avahi-daemon 0.7 starting up." Tasks: 2 (limit: 2278) Memory: 1.5M CGroup: /system.slice/avahi-daemon.service ├─658 avahi-daemon: running [xampp1.local] └─714 avahi-daemon: chroot helper Jul 19 01:21:01 xampp1 avahi-daemon[658]: New relevant interface lo.IPv6 for mDNS. Jul 19 01:21:01 xampp1 avahi-daemon[658]: Joining mDNS multicast group on interface lo.IPv4 with address 127.0.0.1. Jul 19 01:21:01 xampp1 avahi-daemon[658]: New relevant interface lo.IPv4 for mDNS. Jul 19 01:21:01 xampp1 avahi-daemon[658]: Network interface enumeration completed. Jul 19 01:21:01 xampp1 avahi-daemon[658]: Registering new address record for fe80::5054:ff:fead:e2c3 on ens3.*. Jul 19 01:21:01 xampp1 avahi-daemon[658]: Registering new address record for 192.168.122.150 on ens3.IPv4. Jul 19 01:21:01 xampp1 avahi-daemon[658]: Registering new address record for ::1 on lo.*. Jul 19 01:21:01 xampp1 avahi-daemon[658]: Registering new address record for 127.0.0.1 on lo.IPv4. Jul 19 01:21:01 xampp1 systemd[1]: Started Avahi mDNS/DNS-SD Stack. Jul 19 01:21:02 xampp1 avahi-daemon[658]: Server startup complete. Host name is xampp1.local. Local service cookie i> |
次に仮想ホスト側。こちらは長年使い倒していて色々と設定をいじっていました。当時avahiのドメインに.localを使うと不都合な機器が一時期、ネットワーク内にいたことがあり、その対策に変更した設定が以下のように残っていたので、全てコメントアウトしました。 host-name パラメータもシステムが自動的に取得・適用してくれるので、通常は設定ファイルで明示する必要はないでしょう。
1 2 3 4 |
[server] host-name=WS-0300u #domain-name=.local domain-name=alocal |
設定ファイルを修正してサービスを再起動の後、問題無く動作するようになりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
WS-0300u:~$ sudo systemctl status avahi-daemon ● avahi-daemon.service - Avahi mDNS/DNS-SD Stack Loaded: loaded (/lib/systemd/system/avahi-daemon.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2021-07-19 08:06:53 HKT; 6h ago Main PID: 933 (avahi-daemon) Status: "avahi-daemon 0.7 starting up." Tasks: 2 (limit: 4915) CGroup: /system.slice/avahi-daemon.service ├─933 avahi-daemon: running [WS-0300u.local] └─997 avahi-daemon: chroot helper Jul 19 08:06:53 WS-0300u avahi-daemon[933]: New relevant interface lo.IPv4 for mDNS. Jul 19 08:06:53 WS-0300u avahi-daemon[933]: Network interface enumeration completed. Jul 19 08:06:53 WS-0300u avahi-daemon[933]: Registering new address record for 127.0.0.1 on lo.IPv4. Jul 19 08:06:54 WS-0300u avahi-daemon[933]: Server startup complete. Host name is WS-0300u.local. Local service cooki Jul 19 08:06:57 WS-0300u avahi-daemon[933]: Joining mDNS multicast group on interface eno1.IPv4 with address 192.168. Jul 19 08:06:57 WS-0300u avahi-daemon[933]: New relevant interface eno1.IPv4 for mDNS. Jul 19 08:06:57 WS-0300u avahi-daemon[933]: Registering new address record for 192.168.26.199 on eno1.IPv4. Jul 19 08:07:00 WS-0300u avahi-daemon[933]: Joining mDNS multicast group on interface virbr0.IPv4 with address 192.16 Jul 19 08:07:00 WS-0300u avahi-daemon[933]: New relevant interface virbr0.IPv4 for mDNS. Jul 19 08:07:00 WS-0300u avahi-daemon[933]: Registering new address record for 192.168.122.1 on virbr0.IPv4. |
これにより、ターミナル上での ping や ssh はもちろん、ブラウザからもFQDNで仮想マシンを呼び出すことが出来ます。
1 2 3 4 |
$ ping xampp1.local $ ssh user@xampp1.local https://xampp1.local/blog/ |
今回は少し本題から脱線しつつも、WordPress BackWPupプラグインによって生成されたバックアップアーカイブの復元作業の流れと注意事項をまとめました。これが将来来るかもしれないサーバ移転の備えになればと思います。