Amazon EC2で個人サイトの作成、ボチボチ続けてます。

白石俊平(Shumpei Shiraishi) 2007-11-19 22:48:57

はい、前回の書き込みから1週間くらい空きましたが、ネットリと前進しております。

個人サイト作成。

多少は皆さんのお役に立てそうなトピックもあるので、書きとめておきます。

とりあえず今までのあらすじは、「Amazon EC2で個人サイトを作ろうと思ってたら、『公開ドメインを使いたければ、DynamicDNSを使え』と書いてあったので、VALUE DOMAINという、ドメイン管理代行&DDNSサービスを同時に提供しているサイトがあったので、"siraisi.net"ドメインを作った」というところです。

で、その続き。

まず、"siraisi.net"のIPを動的に変更できるよう、こちらのページの13ステップを忠実に実行しました。

こちらのページに書いてあるのはつまり、「今現在のサーバの公開IPを調べて、手で入力してみてよ」ということ。

ここで一つ目のポイント。Amazon EC2インスタンス内で、自分の公開IPを調べる方法ですが、以下のコマンドを実行します。



curl http://169.254.169.254/latest/meta-data/local-ipv4

この前翻訳したドキュメントを見るとわかりますが、"169.254.169.254"はAmazon EC2インスタンスが所属するLAN内のサーバを指しています。

そこにcurlでHTTPアクセスをかければ、自分の公開IPを教えてくれるというわけ。

で、このコマンドの結果表示されたIPアドレスをVALUE DOMAINに登録し、数分待ってから「http://siraisi.net」にアクセスすると・・・

表示されない。なぜだ。

当たり前だ。httpd立ち上げてなかった。と言うか、Apacheのインストールすらしてない。

僕が使用したEC2のイメージは、こちらのページで見つけたFedora Core 6 Lite Base Imageという、Fedora6インストール直後みたいな超プレーンなやつです。Xも入ってないやつ。

ということで、

yum install apache

でApacheを入れ、HTTPを立ち上げて再度アクセスすると、ページが見えました!

はーよかったよかった。手作業による実験完了。

であとは、EC2のインスタンスは再起動するたびにIPアドレスが変わってしまうので、cronで起動時にVALUE DOMAINにIPを通知するようなスクリプトを作成。

こちらによると、VALUE DOMAINは決まったURLにGETアクセスを行うだけでIPを通知できるようです。ということで、wgetでURLにGETアクセスを行うスクリプトを書きました。


#!/bin/bash

DOMAIN=siraisi.net

PASSWORD=******

HOST="*"

current_ip=`curl http://169.254.169.254/latest/meta-data/local-ipv4 2&>1 1 > /dev/null`

result=`wget -O - -q "http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=${DOMAIN}&p=${PASSWORD}&i=${current_ip}&h=${HOST}"`

result=${result:7:1}

echo $result

errMsg=""

case $result in

  0)

    exit 0

    ;;

  1)

    errMsg="Invalid request"

    ;;

  2)

    errMsg="Invalid domain name or password"

    ;;

  3)

    errMsg="Invalid IP address"

    ;;

  4)

    errMsg="Invalid password"

    ;;

  5)

    errMsg="Database server is busy"

    ;;

  9)

    errMsg="Unknown error"

    ;;

esac

if [ "$errMsg" != "" ]; then

  echo $errMsg

  logger -p cron.error "Value-Domain DDNS Error: `date` $errMsg"

fi

こんなスクリプトを、cronで起動時に実行されるよう登録します。


# crontab -e

@reboot /root/ddns_update.sh

:wq

これで、インスタンスを起動するたびにVALUE DOMAINにDDNSリクエストを投げるので、手作業によるIP更新が必要なくなりました。

なんとかこれで、ドメイン名によるサイトアクセスは実現できたようです。

今日は眠いのでこれまで。次は、いくつかアプリでもインストールしてみますか。

※このエントリはZDNetブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet編集部の見解・意向を示すものではありません。

SpecialPR