レンタルサーバー(OSはUbuntu 20.04)で動作しているWordPressのバックアップをWindows 11のWSL2で動かす手順をまとめました。WSL2でWordPressを動かすための環境構築をこちらの手順で行っていることを前提にしています。
1. レンタルサーバー(OSはUbuntu 20.04)上でのバックアップデータの準備
今回は、バックアップ手順の確認のため、手作業でWordPressのディレクトリとデータベースのバックアップを取ることにしました。
1.1. レンタルサーバー(OSはUbuntu 20.04)にsshでログインします。(下記のコマンドの例では、サーバーのホスト名をexamlple.com、ログインユーザー名をusernameとしています。)
ssh username@example.com
1.2. サーバー上のWordPressの全ファイルを下記のコマンドで/home/username等にコピーし、圧縮します。(下記のコマンドの例では、WordPressは/var/www/html/wordpressディレクトリに置かれていると仮定しています。)
sudo cp -r /var/www/html/wordpress/ . sudo chown -hR username:username wordpress tar cvzf wordpress.tar.gz wordpress/
1.3. データベース内のWordPressのデータを取得します。(下記のコマンドの例では、WordPressのデータはlocalhostのデータベースwordpressに格納されていると仮定しています。また、データベースユーザーはwordpressuser、テーブル接頭辞はwp_の場合を仮定しています。)
wordpressuserのパスワードを入力すると、WordPressのデータを格納したファイルwordpress_wp.sqlが生成されます。
mysqldump -u wordpressuser -h localhost -p wordpress wp_commentmeta wp_comments wp_links wp_options wp_postmeta wp_posts wp_siteguard_history wp_siteguard_login wp_term_relationships wp_term_taxonomy wp_termmeta wp_terms wp_usermeta wp_users > wordpress_wp.sql
データを取り出すデータベーステーブルの名前は下記のコマンドで確認できます。
上記のコマンドに並んでいるwp_で始まるデータベーステーブルの名前は、下記のコマンドで取得したデータベーステーブルの名前を並べたものになります。
$ mysql -u wordpressuser -h localhost -p wordpress Enter password: ... MariaDB [wordpress]> show tables; +-------------------------+ | Tables_in_wordpress | +-------------------------+ | wp_commentmeta | | wp_comments | | wp_links | | wp_options | | wp_postmeta | | wp_posts | | wp_siteguard_history | | wp_siteguard_login | | wp_term_relationships | | wp_term_taxonomy | | wp_termmeta | | wp_terms | | wp_usermeta | | wp_users | | wpLW_commentmeta | | wpLW_comments | | wpLW_links | | wpLW_options | | wpLW_postmeta | | wpLW_posts | | wpLW_term_relationships | | wpLW_term_taxonomy | | wpLW_termmeta | | wpLW_terms | | wpLW_usermeta | | wpLW_users | +-------------------------+
データベースwordpressを使用するWordPressが一つしかなく、データベースwordpressがそれ以外の目的では利用されていないなら、テーブル名を指定することなく、下記のコマンドで全テーブルのデータを取得できます。
mysqldump -u wordpressuser -h localhost -p wordpress > wordpress_wp.sql
下記のコマンドでWordPressデータを圧縮します。
tar cvzf wordpress_wp.sql.tar.gz wordpress_wp.sql
2. バックアップデータのPCへの保存
1.で準備したwordpress.tar.gzとwordpress_wp.sql.tar.gzをレンタルサーバーからPCにコピーします。
例えば、下記のsftpコマンドでレンタルサーバーにアクセスし、ファイルをPCにコピーします。
sftp username@example.com
sftpを使用する場合、ログイン後、下記のようなコマンドを入力してwordpress.tar.gzとwordpress_wp.sql.tar.gzをレンタルサーバーからPCにコピーします。
sftp> cd path-to-compressed-files/ sftp> get wordpress.tar.gz sftp> get wordpress_wp.sql.tar.gz
sftpコマンドは、こちらの手順でWSL2上にUbuntu 20.04の環境を用意していたら、Ubuntu 20.04のターミナルから実行することができます。
sftpコマンドが見つからないときは、下記のコマンドでsftpコマンドをインストールできます。
sudo apt install openssh-client
補足2:
Windows Terminalをインストールすると、Windowsのコマンドプロンプト、Windows PowerShell、Ubuntu 20.04のターミナルをタブを切り替えて使用することができます。
3. WordPressのバックアップデータのWSL2での確認
3.1. PCにコピーしたWordPressディレクトリの圧縮ファイルを展開し、Webブラウザから閲覧できるディレクトリに移動させます。(この後の4.の手順でPC上のWebページにlocalhostではなくwww.example.com等の公開サーバーと同じドメイン名でアクセスする方法を記載します。この方法でURLを指定したときに公開サーバー上でWordPressが置かれたURLと一致する場所に移動させます。)
tar xvzf wordpress.tar.gz sudo mv wordpress /var/www/html sudo chown -hR www-data:www-data /var/www/html/wordpress
3.2. WordPressのデータベースデータをデータベースに登録します。
このとき、使用していたpluginを全てDeactivate します。(SiteGuard WP Plugin、Site Kit by Google等、PCでのテスト環境で動作させたくないpluginを動作させないための手順になります。Activateさせたいpluginだけ後でActivateさせます。)
3.2.1. WordPressのデータベースデータを格納したSQLファイルの展開
tar xvzf wordpress_wp.sql.tar.gz
3.2.2. SQLファイル(wordpress_wp.sql)をエディターで編集し、使用していたpluginを全てDeactivateします。
wp_optionsのactive_pluginsの値を’a:0:{}’に変更します。(テーブル接頭辞がwp_の場合)
INSERT INTO `wp_options` VALUES (1, ... ), ... , (33,'active_plugins','a:0:{}','yes'), ... ;
3.2.3. 修正したSQLファイル(wordpress_wp.sql)を入力とし、PCのデータベースにWordPressデータを登録します。
mysql -u wordpressuser -p -h localhost wordpress < wordpress_wp.sql
mysqlが動作していな場合、下記のコマンドでmysqlを起動してから上記のコマンドを実行します。
sudo service mysql start
4. PC上のWebページを公開サーバーと同じURLで閲覧するための設定
PCのWebブラウザで公開サーバー上のWebページのアドレスhttps://www.example.comを指定した際、WSL2上のバックアップページが参照されるようにWindowsの設定を変更します。(この設定変更はテスト用の一時的なものです。WSL2での確認が終わったら、設定を元に戻します。)
4.1. www.example.comのIPアドレスを127.0.0.1に設定
4.1.1. エディターでWindows PCの下記のファイルを編集します。
C:\Windows\System32\drivers\etc\hosts
echo %SystemRoot%\System32\drivers\etc\hosts
4.1.2. 上記のhostsファイルの末尾に下記のように記述します。
127.0.0.1 www.example.com ::1 www.example.com
4.1.3. WSL2上のUbuntu 20.04の設定も変更します。
WSL2上のUbuntu 20.04の/etc/hostsの末尾に下記のような行を追加します。
127.0.0.1 www.example.com
4.1.4. コマンドプロンプトに下記のコマンドを入力し、保存した設定をWindows PCに反映させます。
ipconfig /flushdns
4.2. httpsでWSL2のWebサーバーにアクセスできるようにするための設定
下記のコマンドをWSL2のUbuntu 20.04のターミナルから実行します。
sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart
4.3. Webブラウザでのhttps://www.example.comの確認
4.3.1. Chrome、Edge、Firefox等のWebブラウザを起動し、URL入力欄にWordPressの置かれたアドレス(例:https://www.example.com/wordpress/)を入力します。
PCに用意したバックアップページ(全てのpluginがDeactivateされています)ではなく、公開サーバーのWebページが表示されたときは、ブラウザの履歴を消去します。
今回のテストでは、普段あまり使っていないFirefoxを使ってバックアップページの確認をしました。Firefoxの履歴は、ブラウザ右上のボタンから「履歴」、「最近の履歴を消去…」を順にクリックし、「すべての履歴」を選択して「OK」をクリックすることで消去されます。
4.3.2. httpsを指定してWebページを閲覧しようとしたときの注意点
httpsを指定してWebページを閲覧しようとした場合、今回の設定ではSSL/TLSサーバー証明書の取得と設定を行っていないため、警告が表示され、Webページが表示されません。下記の画像はFirefoxを使用した場合の例になります。
Firefoxの場合、「詳細情報…」をクリックすると下記の画像のようなページが表示されます。「危険性を承知で続行」をクリックするとPC上に用意したhttps://www.example.com/wordpress/等のWebページが表示されます。
4.3.3. pluginのActivate
ここまでの手順に問題がなければ、https://www.example.com/wordpress/等のURLをWebブラウザのURL入力欄に入力すると、pluginを全てDeactivateした状態で公開サーバーと同じWebページが表示されます。
私のWebページの例では下記のように表示されました。
WordPressのURLの末尾にwp-admin/を付加した下記の例のようなURLを入力し、WordPressの管理ページ(Dashboard)にアクセスします。
https://www.example.com/wordpress/wp-admin/
下記の画像のようにWordPressのDashboardへのログインページが表示されます。
公開サーバーと同じWordPressのログイン名とパスワードを入力してDashboardを表示します。
DashboardでPluginsを選択し、Activateしても問題なさそうなpluginをActivateさせます。
もう一度、Webブラウザで下記のURLのWebページを表示すると、Deactivateしたままのpluginの影響を除き、公開サーバーと同じWebページが表示されます。
https://www.example.com/wordpress/
5. 公開サーバーのWebページを閲覧するように設定を復旧
https://www.example.com/wordpress/等のアドレスを入力したとき、公開サーバーのWebページを表示できるようにPCのIPアドレス参照の設定を元に戻します。
具体的にはホスト名www.example.comとIPアドレス127.0.0.1の対応付けを解除します。
5.1. エディターでWindows PCの下記のファイルを編集します。
C:\WINDOWS\system32\drivers\etc\hosts
www.example.comに関する行を下記のようにコメントアウトします。
# 127.0.0.1 www.example.com # ::1 www.example.com
5.2. WSL2上のUbuntu 20.04の設定も元に戻します。
WSL2上のUbuntu 20.04の/etc/hostsのwww.example.comに関する行を下記のようにコメントアウトします。
# 127.0.0.1 www.example.com
5.3. コマンドプロンプトに下記のコマンドを入力し、保存した設定をWindows PCに反映させます。
ipconfig /flushdns
5.4. 下記のURL等をWebブラウザで指定すると、公開サーバー上のWebページが表示されるように戻ります。WSL2上のWebページが表示される場合は、ブラウザの履歴を削除します。
https://www.example.com/wordpress/