タグクラウド

2008年05月28日

Amazon EC2のすごい点

Amazon EC2は、Xenによる仮想サーバ環境を提供するwebサービスです。思い立ったらすぐに、インターネットにつながったそこそこの性能のサーバを低コストで調達ができます。他のレンタルサーバサービスと比べるといくつか目立った特長をもっています。世の中を変える画期的なサービスといってもよいでしょう。

もし私が今日からネット上のサービスを提供する事業を始めるのなら、迷わずEC2を使うと思います。


1. 高性能
もっとも低スペックな"Small Instance"でもメモリ1.7GB、ディスク160GBが利用可能。

2. 低価格
"Small Instance"で1時間10セントから。1ヶ月動かしても72ドル。
別途データ転送料金が必要ですが、サーバへのアップロードで$0.100、サーバからのダウンロードが$0.170。100GBダウンロードしても17ドルなので、一般的なサイトであればそれほどびっくりするような金額にはなりません。

3. 一時間ごとの課金
課金はインスタンスが起動している間のみ、1時間を単位として行われます。朝から夕方までの間だけ検証サーバが欲しいといった場合は1ドル程度で使えます。初期費用や基本料金も無いので、全く使わなければ請求金額は0です。

4. すぐに使える、すぐにやめれる
ブートするイメージを選んでインスタンスを起動すれば、数分内に利用できるようになります。OSをシャットダウンさせればインスタンスも終了します(再起動ではインスタンス終了とはならない)。

5. ディストリビューションを選べる
CentOS、Fedora Core、Debian、Ubuntu、OpenSolarisなど、あらかじめ用意された様々なディストリビューションが利用できます。

6. 構成を柔軟に変更可能
一つのアカウントで最大20のインスタンスが起動できます。トラフィックが急増した場合にアプリケーションサーバの追加するといった対応も迅速に行えます。
タグ:ec2
posted by maeda at 01:09| 島根 | Comment(0) | TrackBack(0) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

2008年05月25日

Amazon EC2で素のCentOS 5を動かす手順

Amazon EC2でCentOS 5のサーバを動かすまでの作業手順です。

■要約
・Rightscaleが公開しているAMIを使用する。
・以下のコマンドを使う。

ec2-describe-images -x all --- 公開イメージの一覧を表示
ec2-add-keypair 鍵名 --- 鍵ファイル作成
ec2-describe-images --- インスタンスの状態を確認
ec2-run-instances イメージ番号 -k 鍵名 --- インスタンス起動
ec2-terminate-instances インスタンス番号 --- インスタンス終了

■前提条件
・AWSのアカウント作成が完了している。
・Amazon EC2 Command-Line Toolsの導入が完了している(ec2verコマンドが動く状態)。
・Access Key ID、Secret Access Keyの取得が完了している。
・X.509証明書(certificateおよびprivate key)の取得が完了している。

■CentOS 5のイメージファイルを探す
 RightScaleが公開しているCentOS 5 base imageを使用します。必要最小限のパッケージのみインストールされているので、検証環境が必要な場合や自分で自由に環境を構築したい場合に最適です。

$ ec2-describe-images -x all | grep rightscale | less


 5月24日現在の最新のCentOS 5のイメージは、rightscale_images/CentOS5_0V2_0_1.img.manifest.xml です。ec2-describe-imagesの実行結果から次のような行を探して確認します。

IMAGE ami-5c08ed35 rightscale_images/CentOS5_0V2_0_1.img.manifest.xml 411009282317 available public i386 machine


■ssh用の鍵ファイルを作成
 ec2上のサーバにsshで接続するための鍵ファイルを作成します。鍵の名称は、ec2で動かすサーバのホスト名など、わかりやすい名前をつけます。

$ ec2-add-keypair servername | sed -e "1d" > id_servername
$ chmod 400 id_servername


・sed -e "1d"は、先頭の1行を削除します。
・chmodによるパーミッションは必ず行ってください。644など誰でも読み取りできる設定だとサーバ側のsshdでログインを拒絶されます。

■インスタンス起動
 ec2-describe-imagesで確認したイメージ番号と、ecs-ad-keypairで指定した鍵の名称を指定してインスタンスを起動します。

$ ec2-run-instances ami-5c08ed35 -k servername

■ファイアウォールの設定変更

 sshで接続するために、22/tcpを開きます。

$ ec2-authorize default -p 22


 なお、ポートを指定せずに実行すると、0から65535までのすべてのポートが開放されます。

■インスタンスの起動確認
$ ec2-describe-images
RESERVATION r-4bfb3c22 181775919748 default
INSTANCE i-b82ae3d1 ami-5c08ed35 ec2-72-44-52-225.compute-1.amazonaws.com domU-12-31-38-00-24-31.compute-1.internal running lagavulin 0 m1.small 2008-05-24T12:46:45+0000 us-east-1a


■sshでの接続
$ ssh -i id_servername root@ec2-72-44-52-225.compute-1.amazonaws.com


■インスタンス終了
$ ec2-terminate-instances i-b82ae3d1
タグ:CentOS ec2
posted by maeda at 00:34| 島根 ☔| Comment(0) | TrackBack(1) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

2008年05月23日

DovecotのPOP3ログの見方

DovecotのPOP3サーバが出力するログの説明です。
メール受信がうまくいかない場合の問題の切り分けを想定しています。


POP3サーバに接続、なにもせずに切断した場合:

dovecot: pop3-login: Aborted login: rip=192.168.1.254, lip=192.168.1.1


ユーザー名またはパスワードが誤っている場合:
何もせずに切断した場合と同じ"Aborted login"だが、ユーザー名が表示される。

dovecot: pop3-login: Aborted login: user=<username>, method=PLAIN, rip=192.168.1.254, lip=192.168.1.1


処理が正常終了した場合:
"Logged out"はQUITコマンドにより正常終了した場合のみ表示される。

dovecot: pop3-login: Login: user=<username>, method=PLAIN, rip=192.168.1.254, lip=192.168.1.1
dovecot: POP3(username): Disconnected: Logged out top=0/0, retr=1/471, del=0/1, size=455


ログイン後に何らかの原因で切断した場合:
"Disconnected"表示。正常終了の場合と異なり"Logged out"表示が無い。

dovecot: pop3-login: Login: user=<username>, method=PLAIN, rip=192.168.1.254, lip=192.168.1.1
dovecot: POP3(username): Disconnected top=0/0, retr=0/0, del=0/1, size=455


rip
クライアントのIPアドレス

lip
Dovecotを実行しているサーバのIPアドレス

top=x/y
x: TOPコマンドの実行回数
y: TOPコマンドによりサーバから転送されたバイト数

「x回のTOPコマンドによりyバイトのデータが転送された」

retr=x/y
x: RETRコマンドの実行回数
y: RETRコマンドによりサーバから転送されたバイト数

「x回のRETRコマンドによりyバイトのデータが転送された」

del=x/y
x: DELEコマンドで削除したメールの件数
y: メールボックスに蓄積されているメールの件数

「メールボックスに蓄積されているy件のメールのうちx件を削除した」

size=nnn
POP3の処理完了後のメールボックスのサイズ(バイト)。
例えば、すべてのメールを削除して終了したら0になる。
タグ:dovecot
posted by maeda at 01:00| 島根 | Comment(1) | TrackBack(0) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

2008年05月17日

Radiant CMSのアップデート方法

サーバにインストールされているRadiant CMSをアップデートしても、そのままでは以前のバージョンで作成したwebサイトでは古いRadiant CMSが使われ続けます。つまり、radiantコマンドでサイトを作成したときのバージョンが使われ続けます。

サイトで使われるRadiant CMSを更新する手順は以下の通り。http://www.radiantcms.org/download/ に記述されています。

  1. Radiant CMSのディレクトリ($RAILS_ROOT)に移動
  2. config/environment.rb中のRADIANT_GEM_VERSIONを、使いたいバージョンに変更
  3. rake radiant:update
  4. rake db:migrate RAILS_ENV=production
  5. Rails再起動
タグ:Radiant CMS
posted by maeda at 18:28| 島根 ☀| Comment(0) | TrackBack(0) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

2008年05月16日

WebryReaderが無意味にサーバにアクセスする件

BIGLOBEがサービスしているweb型RSSリーダー「WebryReader」が、Perfume blog RSSフィードでサービスしているフィードを無意味に激しくアクセスしにきてます。実害は無いですが気に入らないです。

約10秒の間に同じコンテンツを繰り返し取得しています。
まさか、購読者の数だけ繰り返し同じRSSを取得している?


60.238.6.152 - - [15/May/2008:17:47:44 +0900] "GET /blog_feeds/nocchi.xml HTTP/1.0" 200 2786 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.152 - - [15/May/2008:17:47:44 +0900] "GET /blog_feeds/nocchi.xml HTTP/1.0" 200 2786 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.152 - - [15/May/2008:17:47:44 +0900] "GET /blog_feeds/nocchi.xml HTTP/1.0" 200 2786 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.152 - - [15/May/2008:17:47:44 +0900] "GET /blog_feeds/kashiyuka.xml HTTP/1.0" 200 3469 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.152 - - [15/May/2008:17:47:45 +0900] "GET /blog_feeds/kashiyuka.xml HTTP/1.0" 200 3469 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.152 - - [15/May/2008:17:47:45 +0900] "GET /blog_feeds/kashiyuka.xml HTTP/1.0" 200 3469 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.153 - - [15/May/2008:17:58:06 +0900] "GET /blog_feeds/nocchi.xml HTTP/1.0" 200 2786 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.153 - - [15/May/2008:17:58:07 +0900] "GET /blog_feeds/nocchi.xml HTTP/1.0" 200 2786 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.153 - - [15/May/2008:17:58:07 +0900] "GET /blog_feeds/nocchi.xml HTTP/1.0" 200 2786 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.153 - - [15/May/2008:17:58:07 +0900] "GET /blog_feeds/kashiyuka.xml HTTP/1.0" 200 3469 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.153 - - [15/May/2008:17:58:07 +0900] "GET /blog_feeds/kashiyuka.xml HTTP/1.0" 200 3469 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"
60.238.6.153 - - [15/May/2008:17:58:07 +0900] "GET /blog_feeds/kashiyuka.xml HTTP/1.0" 200 3469 "-" "WebryReader/1.0 (http://webryreader.biglobe.ne.jp/)"



# 三人ともブログ更新してください...
タグ:Perfume RSS
posted by maeda at 01:59| 島根 ☁| Comment(1) | TrackBack(0) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

2008年04月27日

Radiant CMSでレスポンスキャッシュの有効期限を変更する

Radiant CMSは作成したレスポンスをキャッシュとしてディスクに保存し、次回のリクエストを高速に処理します。

キャッシュの有効期限はデフォルトで5分間ですが、config/environment.rbで設定を変更することができます。

config/environment.rb中でResponseCache.defaults[:directory]などの設定を行っている箇所がありますので、そこに下記のような記述を追加します。

ResponseCache.defaults[:expire_time] = 15.minutes

有効期限をのばすのは、テンプレート内で重い処理を行っている場合のパフォーマンス改善に有効です。
例えば、Radiant CMSを使っているゆるふわPerfumeのトップページではナタリーとはてなブックマークのRSSを取得しています。RSSの内容は5分程度では変わらないことが多い上、取得・処理にやや時間がかかるため、有効期限を15分に変更しました。
posted by maeda at 21:52| 島根 ☁| Comment(0) | TrackBack(0) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

2008年04月15日

Passenger Enterprise License(笑)

Railsアプリのデプロイを飛躍的に簡単にしてくれるPassenger(mod_rails)のEnterprise Licenseを購入しました(現在は受付中止中)。

Passenger Enterprise Edition:
http://www.modrails.com/enterprise.html

It does this by providing you with a professional Passenger enterprise logo with which you can:

* impress your colleagues, friends and even foes!
* promote Ruby on Rails without feeling guilty towards your employer.
* help your friends at Phusion survive the first coming winters.

And if that wasn't enough, scientific studies have shown that Passenger Enterprise Edition contributes to Phusion's financial well being as well!


Enterprise Licenseを購入することにより、同僚や友人さらには敵をも感動させたり、雇用主に対する罪の意識無しにRailsの普及活動をしたり、Phusionの中の人の越冬を助けたり、さらに科学的な調査によればPhusionの財務にも貢献することができるらしいです。

Passengerの素晴らしさとEnterprise Editionのネタっぷりに敬意を表して全力で釣られてみたら、"Enterprise licensees Hall of fame"、殿堂入りを果たすことができました。

passenger_enterprise_license.png


現時点で、多分私は日本国内のただ一人のEnterprise License保有者です。
タグ:passenger
posted by maeda at 01:02| 島根 ☀| Comment(0) | TrackBack(0) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

Passengerのメモリ消費

masuidrive on rails - mod_rails(passenger)はmogrelの3倍メモリを食う?:
http://blog.masuidrive.jp/index.php/2008/04/14/mod_rails_uses_triple_memory_than_mongrel/

 とりあえず、ちょっとしたサンプルをmongrelで動かしてみると、44Mほどメモリを確保しています。

 んで、同じプロセスをmod_rails(passenger)で起動すると、143Mほど確保されます。


自分のサーバのMuninのグラフながめても、単体のmongrelよりはメモリ消費が多そうです。

ardbeg.backlight.jp-memory-week.png

これまでmongrelで三つのRailsアプリ(Radiant CMS×2、Redmine×1)を動かしていたのを12日の午後にPassengerに移行したのですが、appsの値が50MB前後だったのが120〜130MB程度にあがっています。もっと異常なあがり方しているのがcommittedの値。いきなり1GBオーバーです。commitedが何を意味するのかよくわかっていませんが。

インスタンスをたくさん起動すると全体のメモリ消費に占めるPassenger自体のメモリ消費の割合は小さくなると考えられます。特に複数の異なるアプリをmongrel_clusterで動かすような場合は、Passengerが有利になる気がします。
タグ:Rails passenger
posted by maeda at 00:06| 島根 ☀| Comment(0) | TrackBack(0) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

2008年04月13日

Railsの実行環境をmod_proxy+mongrelからpassenger(mod_rails)に変更

自宅のサーバ上のRadiant CMSで動かしている二つのwebサイトを、Apache + mod_proxy + mongrelからApache + Passenger(mod_rails)に移行しました。

Passengerは4月11日(現地時間)にリリースされた、Railsアプリケーションを実行するためのApacheモジュールです。


  • Apache単独でRailsアプリケーションを実行可能。Apacheを起動するだけでRailsアプリケーションも動作可能な状態になります。
  • デプロイが簡単。サーバにアップロードするだけ。$RAILS_ROOT/tmp/restart.txtというファイルを作成すれば、次回リクエストがあった際にRailsアプリケーションが再起動されます。
  • リクエストが集中した場合、必要に応じてRailsアプリケーションが起動されます(上限値=RailsMaxPoolSize)。一定時間リクエストがなければ、Railsアプリケーションを終了します(RailsIdlePoolTime)。常に一定数のインスタンスが起動されるmongrel_clusterと異なりサーバのリソースを有効に利用できます。



Apacheの設定は下記の通り。基本の設定さえ行えば、VirtualHostディレクティブで、DocumentRootに$RAILS_ROOT/publicを指定するだけです。すごく簡単です。

/usr/local/apache2/conf/httpd.conf (一部抜粋):
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-1.0.1/ext/apache2/mod_passenger.so
RailsSpawnServer /usr/lib/ruby/gems/1.8/gems/passenger-1.0.1/bin/passenger-spawn-server
RailsRuby /usr/bin/ruby1.8
RailsMaxPoolSize 4
RailsPoolIdleTime 1800


/usr/local/apache2/conf/httpd-vhosts.conf (一部抜粋):

ServerName redmine.jp
DocumentRoot /var/lib/rails/radiant-redmine/public

タグ:Rails passenger
posted by maeda at 00:57| 島根 ☁| Comment(0) | TrackBack(1) | サーバ管理 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。