vccwで不具合がありました
ブログはwordpressで作成しており、バックアップはvccwとwordmoveで行なっていました。
またバックアップ以外にも、ブログに大きな変更を加える際にはその変更前の状態を記録として保存していました。
ところが先日、バックアップを取るためにvccwを起動しても仮想マシンのページにアクセスできないという不具合がありました。
そのトラブル自体は仮想マシンのIPアドレスを変更することで解決しましたが、従来より
- Vagrant boxの vccw-team/xenial64 がバージョン v20180107のままアップデートされていない
- 仮想マシンのphpを7.4に更新しようとしたがうまくいかない
ということがあったので、これを機会にUbuntu20.04上にwordpressのローカル環境を作成して、保存しているブログを移行することにしました。
実際にはUbuntu20.04のPCを使うのではなく、Ubuntu18.04上で動作するVirtualBoxにUbuntu20.04をインストールして、それにwordpressをインストールします。
参考にさせていただいたのは以下のページです。
Ubuntu20.04のインストール → VirtualBoxへのUbuntuのインストール方法
wordpressのインストール → Ubuntu 20.04 LTS に WordPress 5.7 をインストール
vccwのwordpressから、プラグインの「All-in-One WP Migration」を使ってサイトを移行したのですが、多くの人が躓くところで私も同じように躓きましたので、私の場合の解決方法を書いておきたいと思います。
All-in-One WP Migrationでインポートできるデータの大きさを増やす
デフォルトの状態ではAll-in-One WP Migrationでインポートできるファイルのサイズが小さいので、How to Increase Maximum Upload File Size in WordPressには、.htaccessファイルやwp-config.phpファイルを修正してインポートできるファイルのサイズを大きくする方法が記載されています。
記載されているように.htaccessを修正してみましたが、インポートできるファイルのサイズは変わりませんでした。
.htaccessファイルでの設定よりも前に、php.iniの記述によってインポートできるファイルのサイズが設定されているように思われましたので、php.iniの記述を変更することで対応しました。
修正すべきphp.iniの場所の確認方法は以下の通りです。
<?php phpinfo(); ?>
と記述したファイルを例えば phpinfo.php という名前でApache のドキュメントルート(私の環境の場合は、/var/www/html)に保存し、ブラウザから
http://(localhost)/phpinfo.php にアクセスします。
表示された画面の中の、「Loaded Configuration File」の項目で確認します。
php.iniをテキストエディタで開くと、
upload_max_filesize = 2M
post_max_size = 8M
と記述されている部分がありますので、これらをそれぞれ
upload_max_filesize = 5120M
post_max_size = 5120M
と書き換えます。(インポートするファイルのサイズを5GBにする場合)
エクスポートする側のwordpressのphpのバージョンとインポートする側のwordpressのphpのバージョンを合わせる
インポートできるファイルの容量を増やしたところ、インポートが開始されるようにはなりましたが、途中で止まってしまって先に進みません。
そこで次の対応としてエクスポートする側のwordpressのphpのバージョンとインポートする側のwordpressのphpのバージョンを合わせてみることにしました。
Ubuntu20.04にwordpressをインストールしたときに、phpについてはバージョン7.4をインストールしていました。
前述のようにvccwのphpのバージョンは7.0であり、それを7.4にバージョンアップすることがうまくできませんでしたので、Ubuntu20.04で動作させるphpのバージョンを7.0に変更することにしました。
こちらのページを参考にさせていただきました。
→ ubuntu20.04.1 phpのバージョンを切り替える
Cocoonの場合はテーマのインポートがうまくできない
phpのバージョンを合わせてもやはりインポートは途中で止まってしまいました。
「All-in-One WP Migration」では、サイトをエクスポートする際に「高度なオプション」で、エクスポートするデータを選択することができます。それを利用して試行錯誤してみた結果、どうもテーマがCocoonである場合はそのテーマを含んだデータのインポートができないようでした。
あらかじめインポートする側のwordpressで手動でCocoonのインストールを行っておき、エクスポートする側のwordpressではテーマはエクスポートしないようにして(「テーマをエクスポートしない(ファイル)」にチェックを付ける)、インポートを行うとインポートが完了しました。
トップページは表示されるが投稿にアクセスできない
データのインポートが完了して内容を確認しようとしたところ、トップページは表示されているのに投稿のページは表示されませんでした。404 not foundになってしまいます。
この点についてインターネットで検索してみると、.htaccessファイルに以下のような記述をすれば解決する、という記事が散見されました。
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
しかしそのように.htaccessファイルを修正しても改善されませんでした。
もともと.htaccessには、私の環境では
<IfModule mod_rewrite.c>
で始まる記述がありました。(記述内容は前述のものと異なります)
以下の記事を読んで、問題はパーマリンクの設定を行うrewriteモジュールがうまく動作していない点にあることがわかりました。
WordPressのパーマリンク設定時に404になってしまった場合に確認すること
具体的な対応としては、
- rewriteモジュールを使用できるようにする
- /etc/apache2/sites-available/000-default.confの修正
- /etc/apache2/apache2.confの修正
の3つです。(私の場合は1.と2.を行うことで投稿のページが表示されるようになりました。)
参考にしたのは以下のページです。
How to Enable Apache mod_rewrite Module in Ubuntu?
また、rewriteモジュールを有効化する仕組みについては、以下のページに詳しく書かれています。
→ Apache/a2enmodとa2dismodコマンドの動作について
phpのバージョンを合わせなくてもインポートできたかも知れない
自分が実際に行った対応の順番に書いていますので仕方がないのですが、もしかしたらphpのバージョンを合わせる、ということをしなくてもその他の対応だけでデータのインポートができたのかも知れません。