Amazon EC2/S3を使ってみる(2)

(1)の続き。なお、このシリーズ、キーワードしか書かないんで、適宜ググって下さい。ウチより詳しいサイトがいっぱいあるんで…

EC2起動用の環境設定

  • Amazon EC2 API Toolsの導入
  • 環境変数の設定
    • EC2_HOME=C:\ec2-api-tools
    • PATH=%PATH%;C:\ec2-api-tools\bin
    • EC2_PRIVATE_KEY=C:\ec2-api-tools\pk-XXX.pem
    • EC2_CERT=C:\ec2-api-tools\cert-XXX.pem
    • JAVA_HOME=C:\Program Files\Java\jre1.6.0_07
  • DOS窓から ec2-add-keypair 叩いてKEYを作成。これがないとSSHでアクセスできない。
  • SSHアクセス用にPuttyのインストール。TTSSH→さくら / Putty→EC2 と棲み分ける予定。
  • PuttygenでPutty用にKeyの変換

EC2インスタンス起動

  • Elasticfox:Imagesからec2-public-images/fedora-8-i386-base-v1.08.manifest.xmlを選択してLaunch
  • あっさりと起動。あまりにあっさりしすぎていて面白くない(ぉ
  • Security Groupsから sshとHTTPの接続を0.0.0.0/0で許可。まぁ、アドレスブロック切った方がいいんだろうけど、まぁ、テストフェーズだし。
  • Puttyでアクセスしてみる。設定:接続:SSH:認証でKeyファイル設定して、ElasticfoxでPublic IPをコピーしてアクセス
  • サーバに進入成功。構成眺めたりする
  • まず、タイムゾーンを日本にする。 cp /usr/share/zoneinfo/Japan /etc/localtime
  • yum update。あんまり古いパッケージはなかった。
  • yum install emacs。古いのがないというより最低限しかインストールされてないようだ。
  • yum install gcc。次節のインストールで嵌るので

Apache

  • これは自前で入れる。configureはいつもの形態でやっとかないと動かないプログラムとか出るだろうし。
  • ./configure --enable-mbstring --enable-mbstr-enc-trans --enable-mbregex --enable-zend-multibyte --with-pgsql --with-apxs2=/usr/local/apache2/bin/apxs --enable-trans-sid --with-curl --with-mysql=/usr/local/mysql --with-gd --with-zlib-dir=shared --with-jpeg-dir=shared --with-freetype-dir=shared --enable-gd-native-ttf --enable-gd-jis-conv
  • よくよく考えたらgdは使ってないが、まぁいいか。
  • make;make install;
  • /usr/share/apache2/conf/httpd.conf の編集。現状のnog.jp鯖を参照しつつ、とりあえず動かすのに必要な部分を設定。
  • 公開ディレクトリで、echo 'test' > test.txt とかしてチェック用ファイルを作る。
  • /usr/share/apache2/bin/apachectl start
  • ブラウザからアクセス → でけたー

システムのイメージ保存

  • EC2を止めると一切合切消えてしまうので、保存しておく必要がある。
  • まず、鍵ファイルをsftpで送る。
  • 適当な場所へシステムイメージを保存する。ec2-bundle-vol -d /mnt --privatekey /fullpath/pk-xxxx.pem --cert /fullpath/cert-xxxx.pem --user xxxx-xxxx-xxxx -r i386 -p nogjp-v1 な感じのシェルスクリプトを作って実行(まぁコマンドから打ってもいいんだけど)。10分くらいかかる。
  • S3へ保存するシェルも作る。ec2-upload-bundle --bucket nog --manifest /mnt/nogjp-v1.manifest.xml --access-key XXXXXXX --secret-key XXXXX よくよく考えたら上のシェルと一本にしたほうが楽だった(というのをこの記事書いてて気付いた)
  • サーバ側での処理は以上で、あとはローカルマシンDOS窓で、ec2-register nog/nogjp-v1.manifest.xml とか打ってイメージを登録する
  • するとイメージ一覧にPrivateなイメージも登場するので自由にいくつでも起動可能になる(課金されるけど)

実際の開発時のイメージは、Privateなイメージを起動 → いろいろインストールだのなんだのする → イメージ保存 → インスタンス停止、な感じでやるわけですな。サンデープログラマ的には、移行するまでは平日分のサーバ代が課金されないってのはイイ感じ。移行後にしても、本番の直接メンテでなく、開発環境をもひとつ起動してからやってみれば、より大胆な改造とかもテストできるようになるし良い環境なのかも。(もともと本番を直接メンテしてるのはどうかという話はありますが) なるほど便利便利。

ということで、今回はおしまい。次はPHPMySQLを入れて、WordPress MEのEUCデータを、WordPress最新版へ移行させるあたりをやろうかな。