こんにちは。昨日の記事では当サイト(WordPress)をHerokuからOracle Cloud infrastructure(OCI)へ引っ越しをする話の前置きを書きました。
今日は実践編として実際にHerokuからOCIに移行した過程を紹介します。
一回ですんなり移行が完了せず、何度かやり直したのでそのミスもと対策も共有したいと思います。
前提条件
今回私が行った移行環境と前提は以下の通りです。
- HerokuからOCIのVMインスタンスへ移行
- メディアストレージは外部Cloudストレージ使用(プラグイン使用)
- ドメインの変更は無し(miyacle.com)
- その他複数プラグイン使用
*環境によっては手順が異なることがあるので気をつけてください。
移行の下準備
現行サーバ(Heroku)上のWordPress設定
現行WordPressから準備を行います。今回は簡単にWordPressの引っ越しを行うことができるプラグイン「All-in-One WP Migration」を使用します。
はじめに、移行中にサイトを訪れた人にメンテナンス中であることを知らせるためにプラグイン「WP Maintenance Mode」をインストールし、設定から有効化(Activated)しておきます。
これでサイトにアクセスしてもメンテナンス画面が表示されます。
次にAll-in-One WP Migrationをインストール、有効化します。
WordPressのデータをエクスポートするのですが。ここで注意点があります。データをエクスポートする前に必ずAll-in-One WP Migration、WP Maintenance Mode以外のプラグインを全てオフにしてください。
これをしないと移行先のWordPressが正常に動かなくなり、最悪ログインできなくなります。特にログイン周りやクラウドストレージ周りのプラグインは無効化を忘れずに。
プラグインの無効化をしたら、All-in-One WP Migrationのエクスポートから、データをダウンロードします(下画像のEXPORT TO からFILEを選択しエクスポート)。
私の場合メディアライブラリは外部クラウドストレージに繋いでいたのでAdvanced optionsにてDo not export media libraryにチェックを入れました。
ドメイン-日付-数字-文字列.wpressというファイルがダウンロードされます。
現行WordPressでの操作は以上です。次は移行先のサーバ(OCI)の準備に移ります。
移行先のサーバ(OCI)
移行先のサーバの下準備を行います。
OCIのVMインスタンスの作成、PHP、Apache、MySQL等の必要なパッケージそしてWordPressのインストールを行います。こちらの過去記事に詳しく書いてあるので参照してください。
WordPressのダウンロード、公開ディレクトリに配置を行ってOCI VMインスタンスのパブリックIPアドレスにアクセスしてください。以下の画面が表示され、データベース選択、WordPressのインストールを行うのですが、その前にドメインの移行を行ってください。
DNSでドメイン設定をを行わずIPアドレスのままインストールしてしまうと、パーマリンクが正常に移行できないことがあります。
Herokuにドメインを設定している場合は、Herokuからドメインを削除し、利用しているDNSサービスからドメインを移行しておきます。
移行先サーバ(OCI)にドメインの設定ができたら、データベースの設定、WordPressのインストールに進んでください(こちらの過去記事を参考)。
WordPressのインストールが完了し、無事にダッシュボードに入ることができたら一安心です。
移行作業
下準備ができたので、新しいWordPress(OCI)にて移行作業を行います。All-in-One WP Migrationをインストールし、有効化します。
All-in-One WP Migrationのインポートを選択し、エクスポート時にダウンロードしたドメイン-日付-数字-文字列.wpressファイルをドラッグ&ドロップしてインポートします。
*最大アップロードサイズ が小さくインポートできない場合は、php.iniを編集、保存してApacheを再起動しておきます。以下は一例です。memory_limitの数値を一番大きくしてください。
sudo emacs /etc/php.ini
memory_limit = 128M
post_max_size = 100M
upload_max_filesize = 100M
sudo systemctl restart httpd
これでも変わらない場合はsudo rebootでインスタンスを再起動してみてください。
インポートが完了したら、これまで使用していたプラグインを有効化してください。これで移行作業は完了です!サイトが正常に表示されるか確認してください。
正常にインポートが完了してもパーマリンクが正常に動かない場合があります。以下のように文字化けを起こしてしまいます。これはApacheの編集で修正することができます。
公開ディレクトリのOverrideをNoneからAllに変更して保存します。完了したら再度Apacheを再起動してください。
sudo emacs /etc/httpd/conf/httpd.conf
<Directory “/var/www/html”>
AllowOverride None
↓
AllowOverride All
sudo systemctl restart httpd
これで完了です!と言いたいところですが。サイトヘルスを確認するとgdがインストールされていないとエラーが出るようです。gdをインストールしましょう。
sudo yum install php-gd
sudo systemctl restart httpd
これでサイトヘルスも良好になると思います。
最後にOCI VMインスタンスのディスク容量を見てみます。
df -h --total
Filesystem Size Used Avail Use% Mounted on
total 41G 6.2G 35G 16% -
どうでしょう。42GあってWordPressインストール完了後6.2G使用、35Gの空き容量でした。十分ですね。OCIのAlways Free枠のインスタンスでも十分WordPressを運用できると思います!
HerokuからOCIに移行して得たメリットは以下です。
- Databaseの容量を気にする必要がなくなった
- サイト表示までの時間が早まった
- プラグインのインストール、WordPressの更新が容易になった
- 細かい設定を行えるようになった
*移行完了後、過去サイトのWordPress削除を行いましょう。
*Login rebuilderでログインファイルを生成している場合は、ログインファイルを新たに作成してください。
おわりに
今日はWordPressをHerokuからOracle Cloud InfrastructureのVMインスタンスに引っ越す過程を紹介しました。何回か失敗を繰り返しましたが、それによって注意点もわかりました。何点か注意点があるのでサーバを引っ越す際は気を付けてください。
私もサーバの引越し作業は冷や冷やしました。引っ越しが終わったと思ってWordPressにログインしようとするとエラーログの滝が…となったり、パーマリンクが全く適用されずリンクがおかしくなったり。
環境によっても変わると思うので、細心の注意を払って作業を行うことをお勧めします。
ついに当ブログを立ち上げてから念願のOCIでのブログ運用ができました!ブログ作成当初できなかったことができるようになったので非常に嬉しいです。クラウドネイティブに一歩近づけた気がします。
本日も最後までご覧いただきありがとうございました。
コメント