2012年6月15日金曜日

2012年4月6日金曜日

[AWS]S3 で静的な Web サイトを構築する方法

S3 に静的な Web サイトを構築してみる。十分な帯域を持ち、大量アクセスにも耐えられ、一瞬で準備できるということでキャンペーンサイトなどに向いていると思う。

とりあえず、ドメイン名を取得しよう。レジストラはどこでもいい。とりあえず、僕は legna.org というドメイン名をもっているのでそれを使用する。

1. Web サーバーを作成 (Amazon S3)
  1. Amazon Management Console にアクセス
  2. Amazon S3 タブをクリック
  3. Create Bucket をクリック
  4. Bucket Name に取得したドメイン名に www を付けたサブドメイン名を入力
    (例:example.com を取得している場合、www.example.com を入力する。)
  5. Region で Tokyo を選択
  6. Create をクリック
  7. Bucket パネルの Actions > Properties をクリック
  8. Properties パネルの Website タブをクリック
  9. Enabled をチェック
  10. Index Document にインデックスドキュメント名を入力
    (例:index.html)
  11. Error Document にエラードキュメント名を入力
    (例:error.html)
  12. Endpoint をメモ
  13. Save をクリック
2. Web サイトをアップロード (Amazon S3)
  1. Objects and Folders パネルの Upload をクリック
  2. インデックスドキュメントとエラードキュメントを Add Files をクリックして追加
  3. Set Details をクリック
  4. Set Permissions をクリック
  5. Make Everything Public をチェック
  6. Start Upload をクリック
  7. Endpoint の URL にアクセスし、インデックスドキュメントが表示されることを確認
  8. Endpoint に存在しないファイル名を付けた URL にアクセスし、エラードキュメントが表示されることを確認
3. DNS のゾーンを作成 (Amazon Route 53)
  1. Amazon Route 53 タブをクリック
  2. Create Hosted Zone をクリック
  3. 取得したドメイン名を Domain Name に入力
  4. 適宜コメントを Comment に入力
  5. Create Hosted Zone をクリック
  6. Delegation Set のネームサーバー名をメモ
  7. レジストラのドメイン名管理画面でネームサーバー名を登録
4. DNS のレコードを作成 (Amazon Route 53)
  1. 作成したゾーンをチェック
  2. Go to Record Sets をクリック
  3. Create Record Set をクリック
  4. Name に www を入力
  5. Type で CNAME を選択
  6. Value に Endpoint のホスト名部分を入力
    (例:www.example.com.s3-website-ap-northeast-1.amazonaws.com)
5. ブラウザからアクセスして確認
(例:http://www.example.com)
補足1. Web サーバーへのアップロードに Enhanced Uploader を使用する方法 (Mac OS X Lion)
これを使用するとフォルダごとアップロードできる。
  1. アプリケーション > ユーティリティ > Java Preferences を起動
  2. 「アプレットプラグインおよび Web Start アプリケーションを有効にする」をチェック
  3. Java Preferences を終了
  4. Safari を再起動(起動していた場合)
  5. S3 の Upload ポップアップウィンドウで Enable Enhanced Uploader をクリック
  6. アプレットの実行について警告が出るので、許可をクリック
これだけで、静的な Web サイトのための Web サーバーが準備できる。また、アカウントのアクセスキーを新しめのバージョンの Cyberduck に設定すれば、Cyberduck からもアップロードできるので試してみてほしい。

2012年3月30日金曜日

AirMac Express の速度調査

今さらだけど、AirMac Express を新しいのにした。有線接続(直接)で 80Mbps 出ている回線で、旧型 AirMac Express (M9470J/A) で 4Mbps しか出ないのは寂しすぎるので。新型 AirMac Express (MB321J/A) にして、新旧の速度と新型のワイヤレス設定変更したときの速度を計測してみたので、ここに書きとめておく。

Mac 側は、MacBook Pro 13 (Early 2011)、Mac OS X Lion という感じ。計測は3回計測した結果の平均で、計測サイトは USEN スピードテストを使用。アパートの回線環境は UCOM のようだけど、詳細は不明。(入居時に資料があった気がするけど……。)
  • 有線接続(直接):79.892Mbps
  • 旧型 AirMac Express - 802.11g のみ:5.625Mbps
  • 新型 AirMac Express - 802.11n(802.11b/g 互換):36.557Mbps
  • 新型 AirMac Express - 802.11n のみ(2.4GHz):43.661Mbps
  • 新型 AirMac Express - 802.11n(802.11a 互換):61.452Mbps
  • 新型 AirMac Express - 802.11n のみ(5GHz):62.986Mbps
安定して有線接続は速いわけだけど、新型は十分な無線での接続速度を出してくれてるね。全部 5GHz にできれば最強なんだけど、iPhone 4 が対応していないということもあるので、ワイヤレス設定は「802.11n のみ(2.4GHz)」にしておいた。Windows PC は Mini PCI Express カードを買い替えて付け直す方針。HP のプリンタは、Canon のプリンタにいずれ買い替えよう。最近使ってないから、必要になったら買い替える方針で。

2012年3月22日木曜日

AWS Elastic Beanstalk for PHP #1

AWS Elastic Beanstalk が PHP 環境をサポートしたようなので、とりあえず試してみる。

どうやってデプロイすんのかなと思ってたんだけど、どうやら Git を使用するらしい。「Git を知らないのが許されるのって高校生までだよねー」とか言われそうだけど、Git 使ったことないぞ……。

とりあえず、Windows 7 環境で試してみた。(Windows XP Professional SP3 で試したらうまく行かなかったよ……。)

Getting Started Using AWS Elastic Beanstalk > Get Set Up > AWS DevTools のところに、Windows は次のような手順でやってねって書いてあった。
  1. 必要なソフトウェアのインストール
  2. AWS DevTools のダウンロード
  3. セットアップスクリプトの実行
  4. Git リポジトリディレクトリの作成
  5. リポジトリセットアップスクリプトの実行
では、順番にやっていこう。

1. 必要なソフトウェアのインストール

必要なソフトウェアのインストールということで、次の2つをインストールした。とりあえず、git コマンドのパスを通すところ(画像参照)以外はデフォルトインストールだね。

2. AWS DevTools のダウンロード

AWS Elastic Beanstalk Command Line Tool をダウンロードする。ダウンロードしたら、ZIP ファイルを解凍する。

3. セットアップスクリプトの実行

解凍したディレクトリ内の elasticbeanstalk-cli¥AWSDevTools¥Windows¥AWSDevTools-OneTimeSetup.bat をダブルクリックして実行する。

4. Git リポジトリディレクトリの作成

デスクトップにある Git Bash アイコンをダブルクリックして Shell を起動する。下記のコマンドをホームディレクトリで実行する。

$ mkdir sample $ cd sample $ git init .

5. リポジトリセットアップスクリプトの実行

解凍したディレクトリ内の elasticbeanstalk-cli¥AWSDevTools¥Windows¥AWSDevTools-RepositorySetup.bat を sample ディレクトリにコピーし、ダブルクリックして実行する。



ここまでで、AWS DevTools の設定は完了した。
早速、サンプルの PHP ファイルをデプロイしてみよう。

作成した sample ディレクトリで下記のような感じで作業し、サンプルとなる PHP ファイルを作成した。(Hello, World と表示するだけのサンプルw)すべてのコマンドは、Git Bash から実行した。

$ vim index.php
$ git add .
$ git commit -m "initial check-in"

次に、AWS Management Console > AWS Elastic Beanstalk > Create New Applicationで適当なアプリケーションを作成する。僕は、Hello というアプリケーションを作成した。環境は HelloEnv にしといた。

その内容で、下記コマンドを実行し、デプロイの設定をする。

$ git aws.config
AWS Access Key: (アクセスキーを入力する。)
AWS Secret Key: (シークレットキーを入力する。)
AWS Region [default to us-east-1]: (デフォルトのまま Enter を入力する。)
AWS Host [default to git.elasticbeanstalk.us-east-1.amazonaws.com]: (デフォルトのまま Enter を入力する。)
AWS Elastic Beanstalk Application: Hello
AWS Elastic Beanstalk Environment: HelloEnv

最後に、下記コマンドでデプロイ!

$ git aws.push

そして、下記の URL をブラウザで開いて実行されていることを確認する。

http://(環境の名前).elasticbeanstalk.com/index.php

環境構築には手間取ったけど、慣れてしまえば効率的に開発環境も本番環境も作成できるね。シンプルな Web アプリケーションだったら、サーバーエンジニアの仕事はなくなっていくな。AWS がわかるエンジニアが居ればね。

参考文献:
AWS Developers Guide Elastic Beanstalk

追記(2012年3月22日):
ELB のヘルスチェックを sample/index.php に設定してやらないとダメみたい。
追記(2012年4月19日):
Git を理解してなかったためにいろいろと間違ってたので修正。ELB のヘルスチェックも index.php になってれば大丈夫。