
以前作った、Ubuntu 18.04 デスクトップPC内で動く KVM 仮想マシンに XAMPP で構築したWeb開発環境へ、 WordPress 本番環境の BackWPup プラグインによるバックアップアーカイブを 復元 検証してみました。
今回もLenovo ThinkCentre Edge 91上のUbuntu 18.04 Desktopの中に、KVM仮想マシンとして構築されたUbuntu 20.04 ServerのXAMPPを使って作業を進めます。簡単に図示すると以下の通りです。
1 2 3 4 5 6 7 8 9 10 |
--------------------------------- # Lenovo ThinCentre Edge 91 # Ubuntu 18.04 Desktop +--KVM/QEMU---------------------+ | | | +-xampp1.local------| | | |Ubuntu 20.04 Server| | | | XAMPP | | | +-------------------+ | +-------------------------------+ |
phpMyAdminが開けないエラー
仮想マシン上でXAMPPを起動すると、そのホームページにはphpMyAdminへのリンクが用意されています。
ところがここで403エラー。エラーメッセージの中に修正が必要な設定ファイルが記載されているので、ターミナルからそのファイルをroot権限で開いて編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ sudo nano /opt/lampp/etc/extra/httpd-xampp.conf 修正前 <Directory "/opt/lampp/phpmyadmin"> AllowOverride AuthConfig Limit Require local ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var </Directory> 修正後 <Directory "/opt/lampp/phpmyadmin"> AllowOverride AuthConfig Limit Order allow,deny Allow from all Require all granted </Directory> $ sudo /opt/lampp/xampp reloadapache |
修正後、XAMPPをリロードすると今度はphpMyAdminのページが表示されました。
ここで先にWordPress開発用で使うデータベースを作っておくことにします。文字コードをデフォルトの utf8mb4_unicode_ci から utf8_general_ci へ変更しました。
htdocsのパスを変更
ウェブサイトのルートディレクトリであるhtdocsへのパスはxamppでは、
1 |
/opt/lampp/htdocs/ |
と他のxamppの設定関連と同じ場所に、root権限下で配置されています。これを一般ユーザでもう少し触りやすそうな、次の場所へ設定してみます。
1 |
/media/htdocs/ |
XAMPPにおける httpd.conf の構成は、おおよそ次のようになっているようです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/opt/lampp/etc/ ├── httpd.conf ├── extra/ ├── httpd-autoindex.conf ├── httpd-dav.conf ├── httpd-default.conf ├── httpd-info.conf ├── httpd-languages.conf ├── httpd-manual.conf ├── httpd-mpm.conf ├── httpd-multilang-errordoc.conf ├── httpd-ssl.conf ├── httpd-userdir.conf ├── httpd-vhosts.conf ├── httpd-xampp.conf └── proxy-html.conf |
先ほど修正した、phpMyAdminエイリアスが記述されている httpd-xampp.conf も httpd.conf から呼び出されるインクルードの一つです。
ドキュメントルートを変更するには、 httpd.conf を次の要領で修正します。
1 2 3 4 5 6 7 |
前 DocumentRoot "/opt/lampp/htdocs" <Directory "/opt/lampp/htdocs"> 後 DocumentRoot "/media/htdocs" <Directory "/media/htdocs"> |
これでhttpリクエストに関しては変更されました。開発環境ではいわゆる「オレオレ証明書」になってしまいますが、httpsリクエストのドキュメントルートを変更するには、 extra/httpd-ssl.conf を次の要領で修正します。
1 2 3 4 5 6 7 |
前 <VirtualHost _default_:443> DocumentRoot "/opt/lampp/htdocs" 後 <VirtualHost _default_:443> DocumentRoot "/media/htdocs" |
最後にxamppのapacheをリロードすれば、変更が反映されます。
BackWPupのバックアップアーカイブ
今回検証するのは、以前WordPressに導入したBackWPupプラグインが生成した次のようなバックアップアーカイブです。
まずこの中から、 ########.sql.gz と言うデータベースのバックアップSQLを取り出します。
phpMyAdminでデータベースを復元
取り出したバックアップSQLファイルは、phpMyAdminのインポート機能を使ってアップロード、復元します。先ほど新規作成したデータベースを選び、インポートタブでアップロードするバックアップSQLファイルをセット。さらに「部分インポート」のチェックを外した上で実行しました。
数分後、エラーの赤い画面にびっくりしつつも、そのメッセージの終わりに記述されている、「mysql_upgrade」コマンドに望みを繋ぐことにしました。
1 2 3 |
#1558 - Column count of mysql.proc is wrong. Expected 21, found 20. Created with MariaDB 100108, now running 100420. Please use mysql_upgrade to fix this error |
普通にコマンド叩いても見つからないことから、ごっそりインストールするよう促されますが。
1 2 3 4 |
$ mysql_upgrade Command 'mysql_upgrade' not found, but can be installed with: sudo apt install mysql-server-core-8.0 # version 8.0.25-0ubuntu0.20.04.1, or sudo apt install mariadb-server-core-10.3 # version 1:10.3.29-0ubuntu0.20.04.1 |
当該ツールはXAMPPに含まれているものの、サンドボックス故にパスが通っていないXAMPPのフォルダ中にある為、以下の要領でフルパス指定で実行する必要がありました。そしてこの時、 -p オプション付で実行するとこれまたエラーになります。
1 2 3 4 5 |
$ sudo /opt/lampp/bin/mysql_upgrade -u root -p Enter password: Version check failed. Got the following error when calling the 'mysql' command line client ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) FATAL ERROR: Upgrade failed |
デフォルトでは空パスワードなので、セットアップの際にパスワードを設定していなければ、ユーザ指定のみで実行すると、今度はうまく走ってくれました。
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
$ sudo /opt/lampp/bin/mysql_upgrade -u root Phase 1/7: Checking and upgrading mysql database Processing databases mysql mysql.column_stats OK mysql.columns_priv OK mysql.db OK mysql.event OK mysql.func OK mysql.gtid_slave_pos OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK mysql.help_topic OK mysql.host OK mysql.index_stats OK mysql.innodb_index_stats OK mysql.innodb_table_Istats OK mysql.plugin OK mysql.proc OK mysql.procs_priv OK mysql.proxies_priv OK mysql.roles_mapping OK mysql.servers OK mysql.table_stats OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK mysql.time_zone_name OK mysql.time_zone_transition OK mysql.time_zone_transition_type OK mysql.user OK Phase 2/7: Installing used storage engines... Skipped Phase 3/7: Fixing views Phase 4/7: Running 'mysql_fix_privilege_tables' Phase 5/7: Fixing table and database names Phase 6/7: Checking and upgrading tables Processing databases dev_svcan dev_svcan.counter OK dev_svcan.photodays OK dev_svcan.photomatch OK dev_svcan.photozo OK dev_svcan.tramcars OK dev_svcan.wp1_adsense_invalid_click_protector OK dev_svcan.wp1_commentmeta OK dev_svcan.wp1_comments OK dev_svcan.wp1_filemeta OK dev_svcan.wp1_links OK dev_svcan.wp1_options OK dev_svcan.wp1_postmeta OK dev_svcan.wp1_posts OK dev_svcan.wp1_pz_linkcard OK dev_svcan.wp1_redirection_404 OK dev_svcan.wp1_redirection_groups OK dev_svcan.wp1_redirection_items OK dev_svcan.wp1_redirection_logs OK dev_svcan.wp1_siteguard_history OK dev_svcan.wp1_siteguard_login OK dev_svcan.wp1_term_relationships OK dev_svcan.wp1_term_taxonomy OK dev_svcan.wp1_termmeta OK dev_svcan.wp1_terms OK dev_svcan.wp1_usermeta OK dev_svcan.wp1_users OK dev_svcan.wp1_yoast_indexable OK dev_svcan.wp1_yoast_indexable_hierarchy OK dev_svcan.wp1_yoast_migrations OK dev_svcan.wp1_yoast_primary_term OK dev_svcan.wp1_yoast_seo_links OK information_schema performance_schema phpmyadmin phpmyadmin.pma__bookmark OK phpmyadmin.pma__central_columns OK phpmyadmin.pma__column_info OK phpmyadmin.pma__designer_settings OK phpmyadmin.pma__export_templates OK phpmyadmin.pma__favorite OK phpmyadmin.pma__history OK phpmyadmin.pma__navigationhiding OK phpmyadmin.pma__pdf_pages OK phpmyadmin.pma__recent OK phpmyadmin.pma__relation OK phpmyadmin.pma__savedsearches OK phpmyadmin.pma__table_coords OK phpmyadmin.pma__table_info OK phpmyadmin.pma__table_uiprefs OK phpmyadmin.pma__tracking OK phpmyadmin.pma__userconfig OK phpmyadmin.pma__usergroups OK phpmyadmin.pma__users OK Phase 7/7: Running 'FLUSH PRIVILEGES' OK |
これで不整合は解消されました。