女性向けビールマガジン hipahipa が着々と人気を伸ばしてくれたおかげで、herokuの無料枠を使いきってしまった。
そのままheorkuでやるのもありなんだけど、wordpressをherokuで使うのはサイト更新が面倒だったのもあり、前々から手をつけようと思っていたAmazon Web Service(AWS) EC2を使ってみることにした。
herokuで運営していたとき、既にS3とRoute 53は使っていたけれど、EC2は初めてだったので、広大なネットの海にディープダイブしつつ、あーでもないこーでもないと移行を試みた。その軌跡を書いていく所存。
もちろん、heroku以外からEC2へ移行する人にも参考になる。
Contents
概略
EC2のセットアップ→Wordpressのインストール→既存データの移行→DNS設定更新という流れになる。
パッと終わるものではないけれど、レファレンスを読んで地道にやれば決して難しくはない。面倒ではあるけれど。
EC2のセットアップ
まずはAWS公式レファレンスのはじめの部分を終わらせる。
つらつらと他にも手順はあるけれど、土井の場合はこれだけ。
このステップが終わった段階で、EC2にあなた専用クラウドPC(インスタンス)が一つできているはずだ。デジモンで言えば、デジタマの状態。
サーバーのインストール
デジタマたるインスタンスにサーバーをインストールし、その殻を破って世界へ飛び出してもらう。(意味不明)
先のステップで作ったインスタンスにLAMP環境を構築する。
チュートリアル: Amazon Linux へのLAMP ウェブサーバーのインストール
無事に環境が構築できたら、日本語化とphpMyAdmin導入をやっておこう。phpMyAdmin先輩には、データベースのインポートでお世話になる。
先のレファレンスに書いてある方法でインスタンスに接続し、言語設定ファイルを開く。
1 |
sudo nano /etc/sysconfig/i18n |
おそらく、英語の設定が記述されているから、これをコメントアウトし、日本語設定を二行加える。
最終的にファイルの内容がこうなればOKのことよ。
1 2 3 |
#LANG=en_US.UTF-8 LANG=ja_JP.UTF-8 LC_CTYPE=ja_JP.UTF-8 |
書き終わったら、control+X(mac)でファイルを閉じる。この時に保存するかどうか聞かれるので、OKしよう。
次にPHPのタイムゾーンを日本に設定するために、PHPの設定ファイルを開く。
1 |
sudo nano /etc/php.ini |
なが〜〜〜〜〜〜いファイルの中に、”;date.timezone =”という一行があるので、セミコロンを外し、設定を書き加える。
1 |
date.timezone = 'Asia/Tokyo' |
これもさっきと同じく上書きでOK。
さて、この長かったステップもphpMyAdminをインストールすれば終わり。
1 |
yum --enablerepo=epel install -y phpMyAdmin |
これを、今までと同じくインスタンス上のコンソールで打鍵すると、あくび一つするうちにインストールが終わる。
あとは、phpMyAdminの設定ファイルを開き、アクセス許可設定をいじる。
1 |
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf |
このファイルの中に、<IfModule mod_authz_core.c>という要素があるので、これを探し、その更に下の<RequireAny>を探す。
この中身をいじってこうなればOK。
1 2 3 4 5 |
<RequireAny> #Require ip 127.0.0.1 Require all granted Require ip ::1 </RequireAny> |
WordPressのインストール
いよいよWordPressをインストールする。
これで、デフォルトテーマのWordPressサイトがこの世界に爆誕したというわけだ。アグモンぐらいにはなれたんじゃなかろうか。
固定IPアドレスの割り当て
あなたのサイトへ固定IPアドレスを割り振る。
EC2の画面、左のメニューから、”Elastic IP”を選ぶ。次に、”新しいアドレスの割り当て”を選び、”Yes, Allocate”で新しい固定IPアドレスを取得する。
このIPアドレスをインスタンスへ関連付けるわけだけれど、ちょちょちょちょっと待ってちょっと待ってお兄さん!それは、最後のステップで他の作業とまとめてやるので、このステップはここまでで良い。
サーバーファイルの移行
このステップから、いよいよwordpressを移行させていく。
「サーバーファイルの移行」と「データベースの移行」という2つのことをすれば良いだけながら、やる事はこまごま多い。
まずは、現行サーバーのwordpress関係のファイルを落としてくる。
herokuの場合は、レポジトリからプルしてきたり、ftpソフトの入っているレンタルサーバーを使っているならブラウザから落としてきたり、色々とやり方はあるけれど、一例としてBackWPupというプラグインを使った方法を紹介する。
BackWPupでサーバーファイルのダウンロード
BackWPup – WordPressを丸ごとバックアップできるプラグイン
BackWPupというプラグインを現行のWordPressサイトにインストールし、このレファレンスの”3. ファイルの自動バックアップの設定方法”で、サーバーファイルをバックアップするジョブを作る。
ジョブができたら、BackWPupのjobsメニューへ行き、ジョブメニューの”Run now”を選び、ファイルを取り出す。
取り出したファイルに少し手を加えなければいけないため、ローカルPCの適当なところへ展開しておく。
インスタンスの設定を書き写す
インスタンスへ接続し、WordPressの設定ファイルを開く。
1 |
nano /var/www/html/wp-config.php |
amazonのレファレンスでいじった部分(DB_NAME ~ DB_PASSWORD, AUTH_KEY ~ NONCE_SALT)を、BackWPupで落としてきた同名ファイル(wp-config.php)へ上書きする。
※もし、wp-config.phpでサイトのURLを設定しているなら、次のように修正しておく。
1 |
define('WP_SITEURL','http://<Elastic IPで取得したアドレス>'); |
インスタンスへアップロードする
修正し終わったWordPress関係のファイル一式(wp-config.php, index.phpなど全て)を”html”という名前のフォルダに入れて、scpコマンドでアップロードする。
1 |
scp -i <シークレットキーペアのパス(拡張子がpemのファイル> -r html ec2-user@<インスタンスのパブリックDNS>:~ |
ステップ1あたりでダウンロードしたシークレットキーペアのパスを入れて、EC2のインスタンス一覧画面で確認できるパブリックDNS(ec2ではじまり、amazonaws.comで終わる文字列)を入れる。最後の、鼻高おじさんみたいな “:~” は、インスタンスのデスクトップに保存するという意味だから忘れずにタイプタイプ!
インスタンスへ接続し、アップロードしたファイルをサーバーアカウントが読み書きできるように権限を設定する。とは言え、やることはamazonのWordPress導入レファレンスでやったことと同じで、所有権を変えるだけ。
1 2 |
sudo chown -R apache ./html/ sudo chgrp -R www ./html/ |
こうして仕上がったhtmlフォルダーを移動させて終わり。コマンド例では、今あるhtmlフォルダー(レファレンスで作ったもの)を退避させ、アップロードしたフォルダーを移している。
1 2 3 4 5 |
cd /var/www cp -r html html_copy rm -r html cd ~ sudo mv html /var/www |
データベースを移す
先のステップでサーバーファイルのダウンロードに使ったBackWPupで、データベースファイルを落としてくる。
※レンタルサーバーにphpMyAdminが入っているなら、それを使ってエクスポートしてもいい。
BackWPup – WordPressを丸ごとバックアップできるプラグイン
sqlファイルいじり
落としてきた圧縮ファイルを解凍し、更に、中にあるsqlファイル(拡張子がsqlのファイル)の圧縮を解く。
解凍されたsqlファイルをテキストエディターで開き、前のドメインを、Elastic IPで取得したアドレスで書き換える。
※hipahipaなら、”http://hipahipa.herokuapp.com/~”などと書いてあるところの”hipahipa.herokuapp.com”の部分。
データベースのインポート
前のステップで用意していたphpMyAdminにここでお世話になる。
http://<パブリックDNS>/phpMyAdmin へアクセスし、phpMyAdminを開く。
※アクセスできない場合は、<パブリックDNS>を、パブリックIPに置き換えてみて。
インスタンスのWordPressで使うデータベースを左メニューから選び、メインメニューからインポートを実行する。
インポートファイルを選べるから、さっき圧縮したsqlファイルを選べば、後は自動でやってくれる。
DNSを設定する
このステップで、移行作業も、この長い長い記事も終わる。腱鞘炎になりそうです。
まずはElastic IP画面へ行き、IPアドレスを選択して、”アクション”から”アドレスの関連付け”を選び、移行先のインスタンスを指定する。
これで、固定IPアドレスがインスタンスに割り当たり、このアドレスを通してWordPressにアクセスできるようになった。あとは、このアドレスをドメイン(~.comみたいな)でアクセスできれば完璧。
EC2の画面から、一旦AWSホームへ戻り、”ネットワーキング”欄にある”Route 53″へ行く。
あとは、Route53で取得したドメインをEC2インスタンスと紐付ける方法にあるとおり、Elastic IPのアドレスをDNS設定すれば終わり。
※www.~の形でアクセスしたい場合、このレファレンスと同じにAレコードを作り、Name欄に”www”と打って保存すべし。
最後の最後に、ドメインを取得したサイトで、ネームサーバーを変更する。
Route 53のNSレコードの”Value”欄にあるドメインを使うように設定し、しばらく待つ。
終わりに
あとは、場合にもよるけれど、1時間ぐらい待てば、元々使っていたURLでサイトへアクセスできるようになる。お疲れ様でした。
細かい手順が多いけれど、インスタンス、固定IP、DNSが綺麗にわかれているAWSの設計は美しいので、用語とかに慣れるとすごく使いやすい。
※amazon公式レファレンスの日本語のこなれ加減にも驚いた。インストールを隕〜みたいに盛大に誤字ってるのを除けば、元々日本語で書かれたんじゃないかというぐらい完璧な翻訳で、どこかの公式レファレンスとは比べ物にならないぐらい読みやすいしわかりやすかった。
それでは、また次の記事でお会いしましょう。秋刀魚に脂がのってきた今日このごろ、みなさんのAWSライフも熟していくことを願って……。
女性向けビールマガジン hipahipa
AWSの概要から入門したいという方へ