デモ環境で構築したWordPressサイトを一瞬で本番環境に移行する方法。

Pocket

wpslot_ttl
前回Azure WebSitesのステージング(スロット)の記事を書いた時に「WordPressはうまくいかなかった」と書いたのですが、スロット機能をうまく使えばWordPressでサイト構築をした場合の本公開作業がかなり楽になると思って諦めきれなかったので @kazumihirose さんに相談して方法を教えてもらいました。

というわけで、WordPressにちょっと仕掛けをすることで「ステージング環境と本番環境を一瞬で入れ替えできる」ように!
「一般的なコーポレートサイトの構築例」を使って実務に近い状況を作って検証してみました。

テスト用にステージング環境と本番環境を作る

今回はプライム・ストラテジーさんの「本格ビジネスサイトを作りながら学ぶ WordPressの教科書2」で紹介されている内容をそのまま使わせていただきます。書籍を参考に構築したサイトはこちら。

▼アジアンパシフィック旅行社
http://test-pacific.azurewebsites.net/

このサイト例がいいなと思うのは「WordPressでサイト構築時に使うと思う要素がほぼ網羅されていること」です。
書籍からの変更点として、「MySQL」を採用するようになっていますが今回は「SQLite」を採用しました。
投稿用のデータのインポートはもちろん、サイトの動作自体問題ないので、これくらいの規模感であれば「SQLite」でいけるかな?と思います。

1.本番環境とステージング環境を作る

詳しい手順はこちらの記事を参考いただければ。
▼Azure WebSitesの「ステージング」をWeb制作な視点で使ってみました
http://zuvuyalink.net/nrjlog/archives/1723

2.アップロードするWordPressの「wp-config.php」を一部変更

下記の内容を「wp-config.php」に追記します。

▼ドメイン直下にWordPressを置く場合

define('WP_HOME', 'http://'.$_SERVER['HTTP_HOST']);
define('WP_SITEURL', 'http://'.$_SERVER['HTTP_HOST']);

▼ディレクトリ内にWordPressを置く場合

define('WP_HOME', 'http://'.$_SERVER['HTTP_HOST'].'/ディレクトリ名');
define('WP_SITEURL', 'http://'.$_SERVER['HTTP_HOST'].'/ディレクトリ名');

ベースになるサイトURLを自動生成するようにします。
ちなみに、静的に書かれているURLは書き変えることができないので注意!

WordPressの準備はコレでOK。

3.本番・ステージング、それぞれの環境に同じWordPressをアップロード

まずはベースになるWordPressをそれぞれにアップロードして準備。
「wp-config.php」はさきほど書き換えたものに両方共しておきます。
(片一方だけになるとうまくいかないので!)
今回は「ステージング環境」で構築を進めるので、本番環境はデフォルトの設定のままにしておきます。

ステージング(デモ)環境でサイトを構築する

WordPressを使ったサイト構築はデモ環境のサーバを用意するかローカル環境(XAMPP使うとか)で構築すると思いますが、Azure WebSitesのスロットを使えば「本番環境と同じ環境のサイト構築」ができます。

今回は「本格ビジネスサイトを作りながら学ぶ WordPressの教科書2」の手順に沿って構築しており、書籍の中で出てきたプラグインも全部使っています。(ブログ部分は今回含めてませんが…)

今回のテストサイトで使用したプラグイン

  • Editor Templates
  • Trust Form
  • WordPress HTTPS
  • WordPress Importer
  • WP-Mail-SMTP
  • WP Multibyte Patch
  • WP SiteManager
  • SQLite Integration

※「SQLite Integration」のみ今回追加したプラグイン

ステージング環境で構築したサイト構成

  • MySQLを使わずSQLiteで構築
  • 投稿する記事、画像などは全てインポート済
  • カスタムフィールドを使用
  • カスタム投稿タイプを使用
  • 各種プラグインの設定
  • メールフォームの動作確認(テスト送信)
<注意>
「お問い合わせフォームのページにSSLの設定(WordPress HTTPSの設定)」をステージング環境でやってしまうと、スワップがうまくいきません。
なので、本番環境に移行後に設定します。(プラグインがURLを固定にしてしまう模様)

「スワップ」する

staging008
Azure管理ポータルの下方メニューに、ステージングがあるサイトを選ぶと「スワップ」というメニューが出ますのでクリック。
誇張でもなんでもなく、10秒程度で「ステージング環境」と「本番環境」の入れ替えが完了!
本公開作業はこれだけです。

Azure WebSitesのステージング(スロット)を使う利点

今までデモ環境でサイト構築したデータを再度アップロードし直したり、その上でWordPressの設定しなおし&再度テストやったり…と「本公開時の手間」が結構あったと思うのですが、ステージング(スロット)機能を使えばこの手間が全くいらなくなります。
(一応、崩れがないかとか最終チェックはした方がいいと思いますが)

実際にデモ環境で構築して本番環境へ…というのをやっている人だったら、実際に試してもらうとホントに一瞬で終わるので感動すると思います!
たった2行追加するだけであの手間が無くなるとか、個人的にそーとー感動しました!(もう普通のサーバー環境で構築やりたくないレベルw)

最後に

以前SQLiteを使うとWebデザイナー的に色々助かるって記事を書きましたけど、専門知識を持たずにAzure WebSitesのスロット機能を最大限活かす運用を考えたときにやっぱりSQLiteとの組み合わせはいいなぁと。
そして今回の「仕掛け」ですが、キチンとWordPressやサーバのことを理解してればすぐに答えが見つかるものだったんだなぁ…と…。(一人でだいぶ悩んだ)
自分で考えることって大事だと思うのですが、あんまりハマる場合はやっぱり専門の方に意見を聞いてみるのがいいと思いますー。
@kazumihirose さん、今回も的確なご指導ありがとうございました!

今回の方法は、Web制作者的にはより実務的なWebSitesの使い方ではないかと思うので、WordPressでサイト構築する場合に是非活用してみてください!

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>