はじめに
久々にITの記事を書きます。というのは、結構なドハマリをしたので、備忘録としても残したいと思い、この記事を書くことにしました。
さくらインターネットのサーバーレンタルを開始して、早10年。静的HTMLのみで作っていたサイトから始まり、時代は移り行きまして、Wordpressを用いてブログまで始めてしまいました。SSL化したこともありました。
今回は、PHPモジュール化によるWordpress高速化を実現するため、さくらインターネットのスタンダードプラン間でのお引越しをすることにしましした。
【最新版】さくらインターネット・SnapupでWordPress移行とURL正規化リライトルール設定
WordPress移行作業後、URLの正規化をリライトルールで設定しています。詳細は以下でご覧ください。
PHPモジュールによる高速化
背景としては、色々設定を変更してもWordpressのレスポンス速度改善がないなと思っていたところ、そういえばさくらインターネットからのお知らせでPHPのモジュール化がどうのと書いてあったなと思ったので、改めて確認したことに始まります。
メールでのお知らせがきていたけれど、そういえばちゃんと見ていないな、と思ったので再確認しました。
現状
800番台のサーバーが割り当てられていました。
そして、PHPもCGI版・・・。
そりゃ、10年前から契約していればね・・・。
PHPモジュール利用のための条件
私が、契約しているのは「さくらインターネットのサーバーレンタル スタンダードプラン」ですので、PHPモジュールを利用するためには以下の条件が必要になるとのことでした。
- 「www3701.sakura.ne.jp」以降の番号のサーバーが割り当てているスタンダードプラン
※「www3701.sakura.ne.jp」以前の番号のサーバーが割り当てているスタンダードプランは、別途スタンダードプランを新規契約し、移行する必要がある(プラン内におけるサーバーの変更は不可)
https://www.sakura.ad.jp/information/announcements/2018/04/18/1929/
「スタンダードプランのお客様へは新スタンダードプランを初期費用+スタンダードプラン1ヶ月分相当額を値引きするクーポン」の配布が終了したということなので、見逃していた自分が悪いと諦めることにしました。そして今回は上述の通り、「別途スタンダードプランを新規契約し、既存サーバーから移行する」ことにしました。
移行開始
早速新しいサーバーを仮契約しました。さくらインターネットは、2週間の仮契約後、本登録することが可能です。2週間の間に解約すれば無料で使用することが出来ます。
早速ですが、仮契約で割り当てられたサーバーは、200番台・・・
若返った・・・。
でも、PHPモジュールは使えると書いてある。
これは相談だ!と思い、別件も合わせて確認したいことがありましたので、さくらインターネットサポートセンターに相談してみました。
PHPモジュール利用可否
PHPをモジュール版を利用できる条件は?
さくらインターネットコントロールパネル「PHPのバージョン選択」で 「PHP 7.X.X (モジュール版) 」と出ていればモジュール版が使えます。
仮契約状態では、他(さくらインターネット以外)で取得した独自ドメインを利用したウェブ公開が不可
仮契約状態(無料お試し期間)では、さくらインターネットで管理しているドメイン・外部で管理しているドメイン問わず、独自ドメインを利用したウェブ公開は制限されています。本登録に移行した段階で、独自ドメインを利用したウェブ公開が可能になります。
移行プランA:マニュアル移行
ここまでの情報を踏まえ、「コンテンツ + データベース」をマニュアルで移行するというプランで早速テストしてみました。
コンテンツ移行はSCPで行うもよし、SFTPでコツコツと移行してもよし、なのですがどうも気になったのはデータベースを旧環境からエクスポートして、新環境php MyAdminからデータベースへインポートしようとしたところ、エラーになりました。
データベースインポート:エラーの理由
よく見てみると、インポート用ファイルの上限が16MiBという容量制限が記載されていました。
ですので別手段の検証として以下を試してみました。
- 既存環境php MyAdminからエクスポート(SQLファイル)
- 新環境のインポート先となるデータベースを、さくらインターネットコントロールパネルで作成
- 上記1.)でエクスポートされたSQLファイルを環境へアップロード
- 自身のMacintoshから新サーバーへSSH接続
- コンソールでMySQLデータベースへ接続、上記3.)でアップロードしたSQLファイルインポート
上記は問題なくインポートできました。しかしながら、既存環境と新環境でバージョンが異なるためだとは思いますが、データベースの容量が若干異なったことと、Wordpressコンテンツとの整合性が一部取れなかったので、この方法は見送りしました。
移行プランB:Snapupを利用した移行
はて、どう移行するかと考えてみたところ、さくらインターネット上でSnapupが使えるということを見つけました。
コントロールパネルからリンクがあったので、試してみることにしました。移行プランとしては以下を想定していました。
手順にすると以下のようになります。
移行手順
- 新環境にあるSnapupを開く
- 「サイト追加」で、既存環境のWordpressへの接続を作成する
- 既存環境のスナップショットを作成する
- 新環境移行先階層に、新規Wordpressをインストールする
- Snapupで「サイト追加」し、上記3.)で作成したスナップショットを基に新環境のWordpressへの接続及びスナップショットを作成する
- 上記5.)で作成したスナップショットを、ステージングサーバーへマウントする
- 上記6.)で作成したステージングサーバーを確認する
- スナップショットを新環境本番へ反映する
- wp-admin.phpを編集する
それぞれの手順を画面キャプチャと共に記載します。
1.新環境にあるSNAP UPを開く
さくらインターネットコントロールパネル(https://secure.sakura.ad.jp/rscontrol/)からログインし、左メニュー「運用に便利なツール」から「バックアップ & ステージング」を選択します。
すると右側に「Snapupで開く」のボタンが出現します。
クリックするとSnapupが開きます。既存契約のサーバーインスタンスは、既に設定されています。
2.「サイト追加」で、既存環境のWordpressへの接続を作成する
「ADD SERVER」をクリックします。
既存環境への接続情報として、以下を記載します。
- サーバー名:任意でわかりやすく入力
- 接続するサーバー名、ホスト名 またはIPアドレス:契約情報にあるホスト名かIPアドレス
- ユーザー名:契約情報にあるアカウント名
- パスワード:契約情報にあるアカウント名のパスワード
入力したら、「追加」をクリックします。
3.既存環境のスナップショットを作成する
既存環境のスナップショットを作成するため、「サイトを追加する」をクリックします。
サイト名は任意で入力し、サイトタイプから「WordPress」を選択すると、自動的にWordpressがインストールされているパスのスキャンが開始されます。
「WPパスを選択」から、移行元となるWordpressのインストールパスを選択し、「追加」をクリックします。
WordPressインストール先のパスが正しく認識されると、以下のプロセスを開始するための質問が表示される場合があります。ここでは「キャンセル」をクリックします。
追加されたサイトを選択し、「スナップショットを追加、作成する」をクリックします。
スナップショットに、わかりやすいコメントを入力し、「実行」をクリックします。
完了するまでの間、インターネットに接続された状態で、上記「OK」の画面を出したままにしておくことを推奨します。
完了すると以下のような画面になります。
Snapupのホーム画面は以下のようになります。
左側(www2XX.sakura.ne.jp)が新環境、右側(旧Kengenius)が旧環境になります。
なお、契約に紐付いている新環境(左側:www2XX.sakura.ne.jp)のサーバー名の表示は変更できません。
4.新環境移行先階層に、新規Wordpressをインストールする
ここまでで、移行元となる旧環境からのデータ(スナップ)は取得できました。今後は取得したデータを新環境に移行する必要がありますが、移行先となる新環境の階層にWordpressがインストールされていないと、Snapupの手順を進めることが出来ません。
そのため、新規でWordpressを仮想的にインストールする必要があります。手順は以下です。
1. 移行先となる新環境のさくらインターネットコントロールパネルで、Wordpress用データベースを新規作成します。
2. 移行先となる名称で新規作成した上で、とりあえずWordpress公式サイト(https://ja.wordpress.org/)から最新版をダウンロード、デフォルトで構いませんのでインストールします。
5.SNAP UPで「サイト追加」し、上記3.)で作成したスナップショットを基に新環境のWordpressへの接続及びスナップショットを作成する
今度は、新環境のWordpressへの接続とスナップショット作成のためのサイトを追加します。
契約に紐付いている新環境(左側:www2XX.sakura.ne.jp)をクリックします。
「サイトを追加する」をクリックします。
上記4.で新環境移行先階層に新規Wordpressをインストールする必要があったのはこの画面のためです。サイトタイプでWordPressを押下した際、「WPパスを選択」に移行先として表示させる必要があるためです。
同様にサイト名は任意で入力し、サイトタイプから「WordPress」を選択すると、自動的にWordpressがインストールされているパスのスキャンが開始されますので、「WPパスを選択」から、移行元となるWordpressのインストールパスを選択し、「追加」をクリックします。
追加されたサイトを選択し、「スナップショットを追加、作成する」をクリックします。
「他サイトから取得…」をクリックします。
上記3.の手順で取得した、旧環境のスナップショット(この場合、サーバー:旧Kengenius、サイト:kengenius.com)を選択し、「次へ」をクリックします。
すると画面が遷移し、以下のように表示されます。
完了するまでの間、インターネットに接続された状態で、上記「OK」の画面を出したままにしておくことを推奨します。
完了すると以下のような画面になります。
6.上記5.)で作成したスナップショットを、ステージングサーバーへマウントする
「ステージングサーバーを作成する」をクリックします。
ステージングサーバー名は、自動で割り振られるもので問題ありません。
本番環境に合わせるべく、https、MySQLは5.7、PHPは7.3を選択し、「追加」をクリックします。
あとは待つだけです。完了したら、以下のような画面になります。
このままではテストサーバーは空っぽですので、旧環境から取得したスナップショットを、新環境のステージングサーバーに反映させるために、「ステージングサーバーにセット」をクリックします。
以下の画面が出現したら、「サイトURLの書き換えを行わない」を選択し、「OK」をクリックします。
7.上記6.)で作成したステージングサーバーを確認する
ステージングサーバーが完成したら、右上のURLリンクで、サイトの表示を確認します。
8.スナップショットを新環境本番へ反映する
問題がなければ、「本番サーバーへリリース」をクリックして、新環境本番へ反映します。
ここまでで、ほとんど移行作業は終了しています。
9.wp-admin.phpを編集する
しかしながら、移行されたWordpressコンテンツと、新環境データベースの接続設定は整合性が取れていません。そのため、Wordpressの設定ファイルであるwp-admin.phpを編集します。wp-admin.phpはデフォルトで、WordPressをインストールしたディレクトリ直下に存在しています。
wp-admin.php
以下の項目で赤字になっている箇所を、自身の新環境に合わせて変更します。
// ** MySQL 設定 – この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define(‘DB_NAME’, ‘データベース名‘);/** MySQL データベースのユーザー名 */
define(‘DB_USER’, ‘データベース接続ユーザ名‘);/** MySQL データベースのパスワード */
define(‘DB_PASSWORD’, ‘パスワード‘);/** MySQL のホスト名 */
define(‘DB_HOST’, ‘MySQLサーバーホスト名‘);/** データベースのテーブルを作成する際のデータベースの文字セット */
define(‘DB_CHARSET’, ‘utf8‘);/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define(‘DB_COLLATE’, ”);
SSL証明書発行・設定
今回、JPRS SSLから無料のLet’s Encryptにすることにしました。Let’s Encryptをさくらインターネット上で利用する方法に変更する場合、どうしてもサイトとしてのダウンタイムは発生してしまいます。
ダウンタイムが発生する理由
理由は、SSL証明書を既に利用しているかどうか、独自ドメインを利用しているか、さらにその独自ドメインがさくらインターネット上で管理されているかどうかに関係なく、さくらインターネットネームサーバー上「ns1.dns.ne.jp」と「ns2.dns.ne.jp」のレコードであることが伝搬され、以下の情報が確認され次第、Let’s Encryptが発行開始、設定されます。
Let’s Encryptを利用する場合
独自ドメインを利用しているか、さらにその独自ドメインがさくらインターネット上で管理されているかどうかに関係なく、以下のDNS設定をする必要があります。
- サーバー情報のIPアドレス持ったAレコードのみを設定する
- ネームサーバーは「ns1.dns.ne.jp」と「ns2.dns.ne.jp」のみを設定する
上記で最大2日、何もせずに待ちます。
すると、そのうちタイミングでLet’s Encryptに申し込めるようになります。Let’s Encrypt利用申請開始から発行完了まで、SSLでの接続を試行するとさくらインターネット上では以下のような画面を表示するのが仕様となっています。
注意事項:忍耐とブラウザのキャッシュ
SSL証明書が発行・設定完了されるまでのダウンタイムは、しばらくの間、忍耐です。ここで焦って設定を変更したりすると、また振り出しに戻ってしまいます。また、キャッシュも非常に強く効いていますので、SSL証明書が発行・設定完了した場合には、ブラウザのプライベートモード等でアクセステストを行うことを推奨します。
ちなみに、私の場合はこのSSL証明書設定に約6時間のダウンタイムが発生しました。
CDNを利用する場合の制限
また、Let’s Encryptを使用する場合、Cloud Flare等のCDNによるSSL、ネームサーバー設定を解除する必要があります。これは、Let’s Encryptを初回設定する場合は上述の通り、必須となります。Let’s Encryptの仕様として自動更新されますが、Cloud Flare等のCDNによるSSL、ネームサーバー設定がされている場合においては、自動更新ができなくなる可能性があり、さくらインターネットでは動作保証しない、とのことでした。
【最新版】さくらインターネット・SnapupでWordPress移行とURL正規化リライトルール設定
ここまで出来たあと、Wordpress移行作業後、URLの正規化をリライトルールで設定しています。詳細は以下でご覧ください。
DNS設定を実施する
最後に、Let’s Encryptのために削除した、もしくは追加しないでおいたDNS設定をこのタイミングで反映します。あとは、DNSの伝播を待つのみです。
さいごに
最終的にこのkengenius.comがPHPモジュールで動作するようになり、非常に軽快に動くようになりました。最後までやり切ってよかった、と思えるようになりました。
ハマりそうな注意事項がたくさんあり、かつキャッシュが強く効くようになっている昨今の環境では、自身の行った設定が正しいのか、もしくは反映されていないのかということが判断しにくくなっています。
この記事をご覧の方が、エラーログを確認したり、公式サポートを利用しつつ、それでも困ったときの情報となり、スムーズな移行ができることを願っています。
コメント