【AWS/KUSANAGI】WordPress本番機から開発機を複製し、テスト確認!!

当サイトはAWS+WordPress(KUSANAGI)を利用しております。

Webサイトですので、基本的には24時間365日稼働させていますし、あまり止めたくはありません。

また、「テーマのメジャーバージョンアップ」「プラグインの動作確認」「PHPコーディング」など、本番機で直接実施したくない作業も多々あります。

そんな時は、AWS(などのクラウド)ならではの「コピーして開発機を準備」→「確認」→「開発機を削除」ということを行いましょう。

なお、下記のやり方は1つの方法でしかありませんので、環境や手間の度合いに応じて色々とお試しください。

AWSで複製

AMIの作成

AWS > EC2 > インスタンス

複製元のインスタンスにチェックを入れ、アクション > イメージ > イメージの作成

「再起動しない」にチェックを入れないと、複製元のインスタンスが再起動しますのでご注意ください。

作成したAMIを使ってEC2を構築

EC2 > イメージ > AMI

に、上記で指示したイメージのレコードが増えています。

ステータスが「available」になるまで待ちましょう。(状況によっては10分程度かかります。)

「available」となったら、チェックを入れて「起動」しましょう。

インスタンスタイプの設定やネットワークの設定を行い、インスタンスの稼働となります。

ネットワークは本番機とは別のVPCとしておくと安全でしょう。

EC2 インスタンスを起動

作成したインスタンスを起動します。

セキュリティグループのインバウンドルールが「SSH」しか空いていないと思われますので、「HTTP」「HTTPS」も追加しましょう。

合わせて、Elastic IPも紐付けましょう。

これでインターネット経由でサーバにアクセスできます。

テスト利用に向けた微修正

本番ドメインのまま作業をすると事故りそうですので、テスト用ドメインの設定に変更します。

テスト用ドメインは適当なドメイン名を使用します。
(あくまで、自分の端末からしかアクセスしないため)

端末のhostsを利用して接続します。

KUSANAGIの設定変更

以下はKUSANAGIの設定によるかと思いますので、ご参考程度に。

#テストドメインでWordPressにアクセスできるように設定追加(nginx)
cd /etc/nginx/conf.d/
vim kusanagi_html_http.conf

#以下の行に「テスト用ドメイン」を追記
server_name xxx.xxx テスト用ドメイン;

#KUSANAGIのFQDN設定を変更
#SSL証明書を取得する必要はないので、エラーが出ても無視でOK
kusanagi setting --fqdn テスト用ドメイン プロビジョニング名(省略可)

#KUSANAGI再起動
kusanagi restart

端末hostsの書き換え(Mac)

#【Macで作業】
# ターミナル.app で作業
sudo vim /private/etc/hosts

# hostsに以下を追記
# ファイルの末尾でOK
EC2のElastic IP アドレス テスト用ドメイン

# 作業結果の確認
# IPアドレスがテスト用のElastic IPになっていればOK
# ICMPの穴開けはしていないため、応答はTimeoutになるはず。
ping テスト用ドメイン

WordPress設定の変更

本番設定のままではマズい設定を変更します。
外部サービスによっては、ドメイン名を指定しての契約になっていることがあります。
十分ご留意ください。

例)

  • Google Analytics設定を解除
  • 広告設定を解除

あと、本番機と間違えて作業しないように、WordPress管理画面の背景色を変えておくなど、工夫をしておきましょう。
(WordPress管理画面 > ユーザー > あなたのプロフィール > 管理画面の配色)

後片づけ

確認が終わったら、きちんとゴミ掃除しておきましょう。(忘れると課金され続けます・・・)

EC2の削除

EC2 > インスタンス > インスタンスの状態

停止 → 終了です。

インスタンスの状態が「terminated」となればOKです。

しばらく経過すると、インスタンスの一覧から勝手に行が消えます。

Elastic IPの解放

使用していないElastic IPは課金されます。

EC2 > Elastic IP > 該当のレコード

にて、Actions > Elastic IP アドレスの解放 を行いましょう。

AMIの削除

EC2 > AMI > 該当のレコード

にて、アクション > 登録解除 を実行。

端末hostsのレコード削除

害はなさそうですが、置いておくと忘れてしまいますので削除しておきましょう。

ハマったこと

wordpressの画面が表示されない

ブラウザから「直接IPアドレスで接続」「テスト用ドメインで接続」しても、WordPressのトップページが表示されません。
(そのような設定になっていました。。)

上述の通り、nginxやKUSANAGIの設定を変更して回避します。

mariaDBが起動しない?

ブラウザからWordPressに接続したはずが、「データベース接続確立エラー」。

「複製しただけなのに、何故???」と思いましたが、原因は「ケチさ」にありました。笑

本番機と比べて開発機はメモリの割り当てをケチったため(利用料の問題)、メモリが足りなくてmariaDBが起動できませんでした。

view /var/log/mysql/mysqld.log

>[ERROR] InnoDB: Cannot allocate memory for the buffer pool
>[ERROR] Plugin 'InnoDB' init function returned error.
>[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

設定を見直すのも手間ですので、本番機と同じスペックでEC2を再作成しました。
(ずっと使うわけではないので、誤差レベルの利用料)

※ご回答希望の場合は、ご連絡先も記入ください
"意見が持てる" デジタルコラム
絶賛配信中!

メルマガ詳細はこちら >>>

送信時点で「Privacy Policy」に同意したものとみなします。
広告を含むご案内のメールをお送りする場合があります。
   
         
最後までお読みいただき、ありがとうございました。
以下も、ぜひご活用ください^^
出版物
ITmedia
メルマガ
Site Access Log by HTTP Header

    >情報システムの

    情報システムの"教科書"本を発売中!


    ■ 情シス、システムコンサルタント、システムエンジニアの方へ
    情シスの定石(技術評論社)

    ■ システムエンジニア、情シスの方へ
    システム設計の教科書(技術評論社)

    CTR IMG

    株式会社グロリア ご紹介