エックスサーバーからAWSへのWordPressサイトの引越し手順
AWSとWebサーバー構築の勉強を兼ねて、2017年の2月からAWSの1年間無料枠を利用してきました。
なんとかWordPressを運用できるレベルに到達したので、実験的にウェブサイトの一つ(このブログ)をエックスサーバーからAWSへ移行させました。
ブログを引越したきっかけは、利用していたシェアサーバーに対して次のような不満があったからです。
- シェアサーバーの応答時間が長い
- シェアサーバーの自由度がない
日本のブログ界隈ではエックスサーバーやロリポップのようなレンタルサーバー業者が有名ですよね。情報が多く出回っていて、初心者にも導入しやすい環境だったため、私も最初のブログはエックスサーバーで公開しました。
私は格安のシェアサーバープランを選択しましたが、アクセスを集めるようになってから(このブログとは別のサイト。2017年10月の時点で8万PV以上ある。)読み込みに10秒以上かかるページも出始め、パフォーマンスが悪い状態が続いていました。
自由にメンテナンスできない点も不満でした。
「FTP使うの面倒だな〜。。そうだgitで管理すればいいんじゃね?」
と閃いたものの、rootになれなかったり、通常とは異なる複雑なインストールが必要だったり、逆に手間がかかってしまいました。そのほかApacheのコンフィグ編集やSSL証明書の適用など、常に利用に制限があるような状態です。
VPSとして使える上位のプランに移行してもよかったのですが、Web業界全体ではAWSやGCPなどのクラウドに移行する流れがあり、現場でも利用していることからAWSへの切り替えを決めました。
AWSは料金体系やサービス内容が複雑ですが、その分自由度が高いのでカスタマイズしやすく、スケールアウトも容易です。各ソフトウェアやプログラミング言語のインストール、Webサーバーの設定やSSL証明書のアサインなど、全て自分で行うことになるので少し大変でしたが、エンジニアとしてもレベルアップできました。
途中ブログがネット上から消えて無くなったりして焦りましたが、次回以降はスムーズにできるよう、ここで手順をまとめておきます。
お引越し全体の流れ
- AWSアカウントの発行
- EC2でWebサーバー構築
- 現行のブログデータのバックアップ
- AWSへのブログデータのインポート
- SSL証明書の設定(必要なら)
- ネームサーバーの設定
- Route53へドメインの移管手続き(必要なら)
- S3の設定(必要なら)
AWSアカウントの発行
まずはAWSを利用するためのアカウント発行が必要です。アメリカAmazonのアカウントで利用できるので、すでにそれを持っている場合は簡単です。
1年間無料で利用できますが、無料枠を越える使い方をすると料金が発生するので、AWSの無料枠についてはよく確認しておいた方がいいです。
EC2でWebサーバー構築
AWSでWordPressを動かす方法としては次の3つが考えられます。私はとにかく自由にやりたかったので、3の方法で環境構築しました。
- BitnamiでWordPressが導入されているAMIを利用する
- Amazon Linux OSでインスタンスを建て、AWSのマニュアルに沿ってWordPressを導入する
- 好きなOSでインスタンスを建て、独自の構成でWordPressを導入する
BitnamiでWordPressが導入されているAMIを利用する
Bitnamiは簡単にWordPressを動かすことができるプラットフォームです。サクッと導入できるので開発環境ではよく使われます。
AWSではすでにBitnamiとWordPressがセットアップされたサービスがあるので、Linux初心者の人はとりあえずこれを利用するといいでしょう。
マニュアルがAWSで公開されています↓
Amazon Linux OSでインスタンスを建て、AWSのマニュアルに沿ってWordPressを導入する
EC2でインスタンスを建てたのち、WordPressを動作させるための必要なソフトウェアのインストールを行っていきます。
インスタンスというのは仮想マシンのことです。
VMインスタンスとは、物理的なコンピュータ上で起動され、稼動状態にある、ソフトウェアによって構築された仮想的なコンピュータ(仮想マシン、VM:Virtual Machine)のこと。実際のコンピュータと同じように、この上でOSを起動してソフトウェアを実行することができる。 - IT用語辞典より引用
Linuxを使い慣れていないと大変ですが、チュートリアルが公開されていますので、この通りやるだけでもWordPressでブログを公開できます。
Linuxを実行するAmazon EC2インスタンスのチュートリアル
好きなOSでインスタンスを建て、独自の構成でWordPressを導入する
自分で好きなOS、ソフトウェアを選んで構築します。
私は一旦Amazon Linux AMIでインスタンスを用意し、そのインスタンス内でWebサーバーとして動作するDockerのコンテナを作りました。
- インスタンスのOS: Amazon Linux AMI
- AMIにDockerをインストールし、コンテナをWebサーバーとして活用
Webサーバーとして動作させるコンテナにはNginx、PHP、MySQL、Git、Cerbotをインストールして、WordPressを動かしています。
詳細は別の記事にまとめますが、Dockerのおかげで環境の整備とバックアップが容易になるため、オススメの構成です。
現行ブログのバックアップ
引越し元のサーバーから、必要なデータをバックアップします。
WordPressの場合、最低限必要なデータは4つあります。
- WordPressのテーマ
- プラグイン
- 画像などのメディアファイル
- データベースが保存されたファイル
バックアップデータをAWSへインポート
バックアップしたデータをなんらかの方法でAWSのインスタンスへアップロードし、WordPressへインポートします。
ファイルのアップロードはターミナルからscpコマンドを叩いて送るのが簡単です。
scpコマンドの例
scp -i awsの秘密鍵 アップロードしたいファイル名 インスタンスのホスト名
scp -i myAmazonKey.pem backup-file.xml ec2-user@hogehoge.compute-1.amazonaws.com:~/.
scp以外の方法としては、S3経由でアップロードが簡単でオススメです。
SSL証明書の設定
元のブログに証明書を当てて、https化している場合に必要な作業です。
現在利用しているSSL証明書ファイルをAWSヘコピーして、ApacheまたはNginxの設定を行います。
私はコピーせず、Cerbotというツールを使い、証明書の作成から設定までを自動で行いました。
詳細な設定方法は別の記事でまとめます。
ネームサーバーの設定
Route53(AWSのドメイン管理サービス)で、引越しするドメインのホストゾーンを作成します。
するとNS(ネームサーバー)が自動で割り当てられるので、引越し元のサーバーにて、NSの設定をAWSのものに変更します。
TTLの設定にもよりますが、設定が反映されるまでは最大で1日かかる場合があります。
設定が反映されたかどうかはdigコマンドで確認できます。
digコマンドの例
dig あなたのドメイン NS @8.8.8.8
dig google.com NS @8.8.8.8
ミスるとあなたの大事なサイトがウェブ上から消失するので、いつでも切り戻せるように変更前の設定をメモしてくださいね。
Route53へドメイン移管の手続きをする
これは無理してやる必要はありませんが、私はAWSで一元管理したかったので行いました。
手順が少し複雑で時間のかかる作業なので、余裕を持って臨みます。
移管に際しては、どのレジストらでも共通している決まりごとが3つあります。
- ドメインの更新から60日が経過していること
- ドメインの有効期限の60日以上前であること
- ドメインの転送ロックが解除されていること
また、ドメイン申請後はだいたい次のような流れとなります。
[1] Whois情報のご変更(1日かかる)
[2] 認証鍵の送信
[3] レジストラロックの解除
[4] 移管先ドメイン管理業者側の、ドメイン移管手続きの実施
[5] 移管承認作業の実施(7〜10日ほどかかる)
手順をミスると全てやり直しになるので、少しでも不明点があれば移管元か移管先に問い合わせるのがいいかと思います。
S3の設定
必須ではないが、やっておいた方が良い作業になります。
ブログを運営していると画像や動画、音声などのメディアファイルがどんどんたまっていきますが、それらはファイルサイズが大きいのでインスタンスの容量を圧迫します。
シェアサーバーは100GBとかそれなりの容量が当てられていますが、AWSのインスタンスはあまりバカスカ使えません。そこでS3と呼ばれるサービスを利用します。
S3はAWSのファイル保管倉庫のようなサービスで、5GBまでなら無料で利用できます。EC2のインスタンスにWordPressの本体を設置し、画像や動画はS3からリンクを貼るのがセオリーです。
静的なウェブページを公開することもできる便利なサービスです。
まとめ
AWSは料金体系・サービス内容が複雑で、最初は辟易しました。半年間じっくりと使い倒してなんとかWebサーバー構築ができるようなレベルになりました。
全て自分で管理しないといけないので大変ですが、自由度が高くてとっても楽しいです。おわり。