AWS EC2上にwordpressサーバを複製する

前回wordpressのデータをAWS S3にバックアップできたので、今度はそのデータを使用してバックアップサーバをEC2上に建てます。
方針としては、wordpressやDB自体はあらかじめインストールしておき、有事の際にはバックアップしたファイル、DBをリストアすれば即座にバックアップ状態になるようにあらかじめ準備することにします。
dockerでwordpressを入れれば複数サイトが簡単に構成できると思ったのですが、名前ベースのバーチャルホストの設定をどこで持たせるとかがまだ調べられてないので、一旦は単一ホストのバックアップの事だけを考えて普通にEC2上にインストールしていきます。

EC2のインスタンスを作成する

基本的にデフォルト設定でOKですが、セキュリティグループだけhttp,httpsを追加しましょう。

S3をEC2上にマウントする

これはこちらのサイト様で紹介されていた内容をそのまま真似しただけです。

EC2にmysqlとphpをインストールする

確かhttpdは入っていたと思います。入ってなかったらインストールしましょう。
ついでにhttps用にmod_sslもインストールします。

httpd.confは現在の環境に合わせて修正しましょう。wordpressインストールと同手順なので省略。
mysqlにユーザを追加します。これもwordpressをインストールした時と同じようにやれば良いです。但し、wp_config.phpの値はそのまま引き継ぐ想定なので、ユーザ名、パスワード、DB名はバックアップと同一にしましょう。

S3のバックアップからファイルを取得する

BackWPupでバックアップ対象のファイルをデフォルトのままにしておけば、wordpressのphp自体が入っているので、改めてインストールは不要で、ドキュメントルートに展開してやればOKです。
以下、ファイル形式をtar.bz2にしている前提のコマンドです。

mysqlにデータを書き戻す

mysqlのデータも一緒にバックアップしていた場合、上記のtarコマンドでドキュメントルート上に展開されたファイルの中にwp_data.sqlができています。これがDBのバックアップです。
これをmysqlに書き戻します。

これでデータの書き戻しまで完了しました。
EC2のパブリックipアドレスへブラウザでアクセスすれば移植元のブログと同記事が見られるはずです。

ドメインをEC2の方に紐付ける

これはメインのwebサイトが本当に障害になった時の対応です。自分のドメインの向き先をバックアップとして今回作ったEC2に向けなければいけません。
やり方はDNSサービスによって異なると思います。
私はDDNSサービスのno-ipを使用していますので、APIをキックすることで向き先を変える事が可能です。

ドメインサービスによっては管理画面からIPアドレス変更の手続きを行ったりする必要があり、そうなると結局人手を介さなければサービスを復旧できなくなり、コールドスタンバイのサーバを用意しておいても価値は半減しますよね。
そういう問題がある場合は素直にオンラインバックアップサービスを使用して、サービス復旧後に書き戻すように準備しておく事をお勧めします。

次はcloud watchを使用してオンプレ上のwordpressが停止したことを検知した後、スタンバイサーバを自動起動できるように準備していきます

参考
お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。と表示された対応
EC2にApacheとPHP(mod_php)をインストールしたメモ
EC2インスタンスにS3をマウントする



シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. […] S3に格納するまでは簡単ですね。次はこれをリストアする事を考えていきます。 […]

  2. […] 前回、S3にバックアップしたファイルからEC2上にデータをリストアしてみました。 次に、本番稼働しているサーバの停止を検知したら自動でEC2上のサーバを書き戻し、データをバックア […]