WordPress EC2 AMIでバックアップを作ってステージング環境立上げまで

「あ〜腹減った〜」(ライゼン)

どうもカマスです。

久しぶりってかAWS系は初めてかw 書きマーース

なんか検索しても全然出てこなかったので、備忘録がてらに書いてみます。

やりたかったこと

EC2上で作ったWordPressのサイト(ここでは https://example.com としておく)をAMIでバックアップを取ってそれをさらに新しいインスタンスとして立ち上げてステージング環境を作りたいなーって話。あ、ステージングって言うのは副機とかバックアップ機とか言うやつ。要は本番を丸っとコピーしてもう一個サーバを作ろうってこと。

よくAMIまでの作り方はたくさんあるんだけど、一連で詳しく載ってないんだよね〜 1番の問題はドメインが変わるからどうやって変えるの?ってところ。

あとやっていってつまづいたところも数箇所あったので記載しておきます。

状況と環境

話せる範囲で書きます。

本番環境
SSL のアドレス https://example.com
・自作でwordpressを入れた。(Amimotoは使っていない)
・Nginxとphp-FPMとMySQL

ステージング環境
SSLなし http://staging.example.com (EC2インスタンスのパブリックDNSを使ってもok)
・AMIで作成

私自身はちょっと事情があってEC2のパブリックDNSを代用しました。本当はサブドメイン使った方が良いんだけど別に公開するわけじゃないし良いかなと。あとすぐ消すし。

もしサブドメイン使う場合はRoute53とかで事前に作っておくんだよ!!

手順

  • AMIでイメージ(バックアップ)を作成
  • AMIからインスタンス(新しいサーバ)を作成
  • Nginxの修正
  • wp-config.phpを一時修正
  • SEARCH REPLACE DBを入れるためにFTP接続
  • SEARCH REPLACE DBでドメイン変更
  • ログイン確認とインデックス外し

こんな感じ、では早速やっていきましょ〜ーーー

AMIでイメージ(バックアップ)を作成

これはたくさん参考サイトがあるからサクッとやっちまいます。

はいEC2開いて〜

AMIを作りたいインスタンス選択〜

アクション押して〜

イメージ押して〜

イメージ作成押して〜

f:id:kamasukun:20161209145430p:plain

イメージ名テキトーに書いて〜

イメージの説明テキトーに書いて〜

再起動しないにチェック!しない奴はバカーーーー

f:id:kamasukun:20161209145900p:plain

DONE!

はい次ー

AMIからインスタンス(新しいサーバ)を作成

ここもサクサク行っちゃうよ〜〜〜

はいAMIクリック〜

さっき作ったイメージ選んで〜

作成ポン!!

f:id:kamasukun:20161209150135p:plain

あとは今までインスタンス作ったことある人なら流れは同じなので割愛。

ちなみに私の本番環境はt2.smallで今説明しているステージング環境はt2.microで安いのを指定しています。

はい、そしたらインスタンス出来上がってるはずだからインスタンスへGO!!

*注意:もしElastic IPを割り振る時はインスタンスがちゃんと出来上がってからここで設定してね!

Nginxの修正

このままだとブラウザーでアクセス出来ないので、ターミナルでNginxを編集します。

まあこれはそれぞれ違うと思いますが私の場合、本番環境がSSLを使っているものでそれを削除(コメントアウトしなきゃいけない。

これ全部コメントアウトします。
編集ソース /etc/nginx/nginx.conf

続きまして〜 ステージング環境のドメインをぶっ込みます。
編集ソース /etc/nginx/nginx.conf

あの〜rootとか自分の環境にちゃんと合わせね!

ではNginxを再起動

# service nginx restart

wp-config.phpを一時修正

このままだとまだ設定したドメインにアクセスできないはず。なので、wordpressのwp-config.phpで臨時的にドメインを変えましょう。

wp-config.phpの1番下に貼り付け

これだけだとwp-login.phpにはアクセスできないはず・・・

さあお次はWordPressのデータベース(DB)を変更しましょー まだもうちょっとだけ続くぞい!

SEARCH REPLACE DBを入れるためにFTP接続

これクッソ便利!だけど危険! なので大事に扱ってね! そして使い終わったら削除しておいたほうがいい

何をするものかって言うと、DBにあるデータをサーチしてリプレイス(痴漢いや置換)してくれるツール。画像のURLとか結構たくさんあるから面倒くさいよね〜でもこれなら一発!

ここからダウンロードしてね。

Database Search and Replace Script in PHP / Interconnect IT – WordPress Consultants, Web Development and Web Design

んで解凍しましょう。

f:id:kamasukun:20161209154118p:plain

ではソースをFTPでステージング環境にアップします。

FTPツールはCyberduckを使用しています。
ログイン!!
f:id:kamasukun:20161209153540p:plain

で全部ソースが入ったらそのソースたちはWordPress配下に移動させます。

もしwordpressの場所が

/var/www/wordpress

だったら

/var/www/wordpress/Search-Replace-DB とディレクトリーを作って入れ込みましょう。

ファイルの移動はmv コマンドを調べてね!

で移動されたファイルたちの所有者をnginxに変更

chown -R nginx:nginx ディレクトリー名(ここはSearch-Replace-DB)ってやればその配下のファイルたちも全部変わる(ちょっと気をつけてね)

f:id:kamasukun:20161209154605p:plain

そしたらhttp://staging.example.com/Search-Replace-DBへアクセス。

こんな画面出てくるかな〜?
f:id:kamasukun:20161209154953p:plain

下の方にボタンが幾つかあるけど、基本的にはdry runとlive runで大丈夫かと思う。

dry run は置換は行わないで検索対象を探して、各テーブルに何件出たか教えてくれる
live run は実行になるので、必ずdry runで確認してOKな場合にlive runをしよう!

ちなみにテーブル選択もできるので選択したい場合は select tableにチェックしてみて。あともう使わないと思ったらこのツールは削除することをお勧めします。

そんでさっきwp-config.phpに入れ込んでいたdefineをコメントアウト(削除でもok)

出来たらデータベースのすべてのドメインがステージング環境に入れ替わっているはずなので〜

http://staging.example.com/wp-login.phpにアクセスできるかチェック!

終わり!!

最後につまづいたところがあって・・・

上記が終わった後にURLにアクセスできるんだけど、画像が全く読み込まれない404事件が発生。

調べても調べてもよくわからんかったんだけど原因はnginxの設定だった

本番環境で expire の設定をしていたのがダメだったらしい。なのですべてコメントアウトをした。

そしたら直った!! こいつのせいで1時間くらい食いましたな。

あともう一個、先にも言った通りステージング環境なので、本番環境よりもスペックの低いt2.microを使用してる。
そのせいで、wordpressが落ちるというか作業した瞬間表示が出来なくなってしまった。

やはりスペックが低いせいでphp-FPMがの処理が重くなっていた。

これは下記のrhasmさんのお力を頂きました。これで解決した。ありがとうございます。

blog.rhasm.net

さーて今日は花金!!何食うかな〜〜あ、バンド練習だった〜〜!ギターひこ

コメントを残す

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