passenger 2.0.2 を試す

Phusion Passenger の 2.0.2 がリリースされたということで、さっそく試してみた。
マシンは DELL SC440、OS は CentOS i386 です。

まず、Passenger をインストールする前に必要な ruby のパッケージをインストールする。

  • $ sudo /usr/bin/yum -y install ruby ruby-rdoc ruby-devel
rubygems がないと困るので、前に作った SPEC ファイル(rubygems.spec)を改良したものとパッチrubygems-prefix.prefixをあてて rubygems 1.1.1 をさくっと作る。 
  • $ /bin/mv rubygems.spec ~/rpm/SPECS
  • $ /bin/mv rubygems-prefix.prefix ~/rpm/SOURCES
  • $ /usr/bin/rpmbuild -ba ~/rpm/SPECS/rubygems.spec
ついでに、ビルドした rubygems の noarch RPM も置いておきます。rubygems-1.1.1-1.noarch.rpm

gem から、rails と passenger をインストールして確認する。

  • $ /usr/bin/sudo gem install passenger
  • $ /usr/bin/gem list –local
gem list して、passenger (2.0.2) があれば OK。Apache2 用のモジュールをビルドする。
  • $ sudo /usr/bin/yum -y install httpd-devel
  • $ sudo /usr/bin/passenger-install-apache2-module
ビルド後に、次のようなメッセージが表示されれば OK。

——————————————–
The Apache 2 module was successfully installed.

Please edit your Apache configuration file, and add these lines:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2
PassengerRuby /usr/bin/ruby

After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!

Press ENTER to continue.

そして、テスト用の rails 2.1.0 のアプリケーションを作る。

  • $ /usr/bin/rails ~/sample
とりあえず、~/sample/script/server で動かして 3000 ポートでの動作確認したら、さっそく Apache の設定をする。httpd.conf に追記してもよいが、/etc/httpd/conf.d/passenger.conf をおいた。Apache は worker で動かすために /etc/sysconfig/httpd を編集して “HTTPD=/usr/sbin/httpd.worker” の行をアンコメントする。Apache の MPM を変更するときには、httpd を止めた状態で行う必要がある。動いているときに変更すると、httpd のプロセスが動いているので sudo killall httpd する必要があるっぽい。
/etc/httpd/conf.d/passenger.conf

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2/ext/apac
he2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2
PassengerRuby /usr/bin/ruby
ServerName sample.example.com
DocumentRoot /home/test/sample/public
RackEnv production

 
設定して、Apache を起動したら、ローカルから動作確認する。確認がとれたら、すこしベンチマークを計測してみる。まず、ローカルから ab コマンドを計測してみる。ちなみに $HOME ディレクトリで実行するには $HOME ディレクトリのパーミッションを 755 に変更しておく必要がある。

  • $ curl localhost
  • $ ab -c 40 -n 10000 http://localhost/
結果は、次の通り。

Concurrency Level: 40
Time taken for tests: 2.458972 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 76581216 bytes
HTML transferred: 73909080 bytes
Requests per second: 4066.74 [#/sec] (mean)
Time per request: 9.836 [ms] (mean)
Time per request: 0.246 [ms] (mean, across all concurrent requests)
Transfer rate: 30413.52 [Kbytes/sec] received

 

 

そして、外部から LVS(NAT) + VRRP 経由でアクセスした結果は次のとおり。リアルサーバは、まったく同じスペック構成のサーバ2台。ab コマンドを実行しているときの、リアルサーバのロードアベレージは 0.00 だった。

 

Concurrency Level: 40
Time taken for tests: 69.353809 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 76534825 bytes
HTML transferred: 73869030 bytes
Requests per second: 144.19 [#/sec] (mean)
Time per request: 277.415 [ms] (mean)
Time per request: 6.935 [ms] (mean, across all concurrent requests)
Transfer rate: 1077.68 [Kbytes/sec] received

 

 

かなり回線の影響があることが分かった。

次に Apache の不要なモジュールをすべてはずして、ローカルから再度実験してみた。

 

Concurrency Level: 40
Time taken for tests: 2.390891 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 76565912 bytes
HTML transferred: 73894310 bytes
Requests per second: 4182.54 [#/sec] (mean)
Time per request: 9.564 [ms] (mean)
Time per request: 0.239 [ms] (mean, across all concurrent requests)
Transfer rate: 31273.28 [Kbytes/sec] received

 

 

そんなに変化はない、次に worker のパラメータを次のように変更して、同じくローカルから試してみた。worker のパラメータを変更するときは、必ず stop してから start する。

 

Concurrency Level: 40
Time taken for tests: 2.333074 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 76520000 bytes
HTML transferred: 73850000 bytes
Requests per second: 4286.19 [#/sec] (mean)
Time per request: 9.332 [ms] (mean)
Time per request: 0.233 [ms] (mean, across all concurrent requests)
Transfer rate: 32028.99 [Kbytes/sec] received

 

 

これはそんなには変わらない。

この状態で LVS 経由で外から試してみた結果は、次のとおり。

 

Concurrency Level: 40
Time taken for tests: 73.91778 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 76528276 bytes
HTML transferred: 73862686 bytes
Requests per second: 136.81 [#/sec] (mean)
Time per request: 292.367 [ms] (mean)
Time per request: 7.309 [ms] (mean, across all concurrent requests)
Transfer rate: 1022.47 [Kbytes/sec] received

 

 

そんなに変化はなかった。

しかし、試験しているときに httpd プロセスが落ちることがなかったので、passenger はかなり使えそう。
 

lighttpd との比較をしてみたかったが、今日のところはここまでにしておく。

 

さぁ、ROR をはじめよう!

私塾のすすめを読んで

斉藤さんと梅田さんの対談本、「私塾のすすめ」を読んだ。読み始めたら、共感する部分が多くて一気に読破してしまった。

僕もここまだ5年くらいだと思うけれど、自分のやりたいこと、何のために生きているのだろう、今日本当にやりたいことは何かと真剣に考えている。もうずっと考え続けていて、まったく答えが出ずにただ時間だけが過ぎ去って行くので内心かなり不安になっている。もしかして、見つからないのではないかなと思う瞬間もあります。

去年から、会社の同僚にすすめられてたくさんのブログを読んでいるけれど、ブログを読むのはかなり面白し、自分のためにもなると思うけれど、今自分がコードを書けるようになりたいと望んでいても実際に書かなければ書けない。例えば、Google Code Jam の問題を見てもすぐに理解できないし、コードを思い浮かばない。もし自分がプログラマーという仕事でこれからもサバイバルをしていくのなら、このままでは「負け」なのではないかと思う。

その反面もしかしたらプログラマー以外のことをしたいんじゃないかと思うことがあるけれど、具体的にやってみないと分からないし、他のことに興味がないところをみるときっとあっているのかもしれないとも思う。

さまざまな分野で本当にやりたいことをやっている人たちにはずっと憧れというか、ロールモデルというか、そういう姿で生きていたい。ちなみに、今日の夢はなぜかタイガー・ウッズと一緒にゴルフコースに向かう夢を見ていた。ゴルフコースに向かう前に僕のせいで出発が遅れてタイガー・ウッズに英語で怒られているという不思議な不思議な夢を見た。

何か好きなんだろうって、ずっと考えていても答えは見つかるはずもないので、何か全力で初めて限界まで突き詰めていって自分が何を感じるのかを知りたいと思って、今の仕事には取り組んでいるつもりだけれど他の欲求食欲とかが優先されてしまう時点で、それって違うんじゃないのとふと思ってしまう自分がいるのがとても不思議。

私塾のすすめを読んで、僕も自分の時間を何に使うかといったことを真剣に考えたい。すべてはできるはずがないので、自分の時間を使う優先順位を設定して何をして何をやらないのかを決めて遮断したい。ただ、僕も優柔不断なところがあるので、「シリコンバレーに住んでいますから無理です」と言えるのなら言いたい派であることは間違いない。
本の中で、梅田さんが「ウェブの細道」というプロジェクトを考えているとのことで、とても面白いプロジェクトだと思う。僕のところには来てくれるはずもないが、梅田さんには日本以外の国で活躍しているブログなどで情報発信している日本人にもあっていだいてぜひ書籍やブログにアップしていただきたいなと思う。

プログラマーは、プログラムを書けなければ「負け」なのでさらに全力でやってみて勝てるのかどうか見極めてみたいと、私塾のすすめを読みながらそう思った。

 

私塾のすすめ ─ここから創造が生まれる (ちくま新書 (723))

iPod Touch で iPhoto が自動起動してしまうのを防止する方法

iPod Touch 2.0 にアップグレードしてから、iPod Touch を Mac mini に接続するたびに iPhoto が自動起動するようになりました。
なぜか、iTunes が自動起動せずに iPhoto が自動起動してしまうという現象に変わりました。

iPod Touch を接続するたびに iPhoto が自動起動してしまうのをやめたいと思って、調べてみるとiPhone で同じようなことをやっているブログを見つけました。この方法を参考にして iPod Touch でやってみたのですがうまくいきませんでした。
そもそも、カメラを接続するときはあまりないので(すべて Eye-Fi 経由なので)、iPhoto の自動起動をオフにすることにしました。

やり方は、アプリケーションにある Image Capture というソフトを起動して、Image Capture Preferences で「No application」に変更するだけです。

iPod Touch 2.0 で、iPhoto が自動的に起動するのは微妙ですね…

rubygems 1.1.1 の Spec ファイルを作った

rubygems の最新版 1.1.1 を RPM で作るために Spec ファイルを作ってみた。この Spec ファイルは、ここに公開されている 0.9.4 の Spec ファイルを参考にして変更した。0.9.4 から、1.1.1 でかなり変わっていてかなり大変だったけれど、問題なく RPM がビルドできるはず。動作環境は、CentOS 5.1 x86_64 で ruby 1.8.5 の環境です。

おそらく、rubygems 1.1.1 の Spec ファイルは、世界初ではないかと思う。

よかったら、使ってください。

rubygems.spec

# どこかに Spec ファイルを共有するリポジトリってないのかな?

読んだ本たち

レバレッジ人脈術を読んだ。次の内容が印象に残った。

  • 一人では生きていけないので、いろいろな人に出会うことが大切
  • 自分が相手にどんな情報を提供できるのかよく考える
  • 「誰を知っているか」ではなく、「誰に知られているか」
  • まったく違う畑の分野の人達ではなく、なるべく同じ畑の人達にあう
  • 自己紹介は時間の無駄、自分について知ってもらう情報は公開しよう
  • 「ギブアンドテイク」ではなく、「コントリビューション」が基本
  • 自分が会いたい相手に連絡するときは、相手にどんなコントリビューションができるか伝える
Joel さんの本、ソフトウェア開発者採用ガイド。
この本は、おもによいプログラマーを集めて離職率を下げるかについて書かれていました。
  • Joel さんのインターンのお出迎え方法がすごすぎる
  • Q: When is the last time you behaved cowardly? というマイクロソフトに面接に行ったときのエピソードが興味深い
  • Joel さんは、必ず昼食と仲間たちと大きなテーブルで一緒に食べている、会社が家族と感じられるような効果があって 6 年間で会社を辞めた人は 1 人もいないそう、このエピソードは相当強烈だった
そして、佐々木さんのウェブ国産力。未来検索ブラジルの取材とライフログ携帯電話電話の考察がかなり面白かった。未来検索ブラジルは、今後もようチェックな会社です。未来検索ブラジルは、Senna の開発元なのでかなり有名ですが、社内では Hyper Estraier を採用している場面が多いです。ウェブ国産力にあったインタビューを見ると、Senna を試してみたくて仕方がなくなってきたので近いうちにレポートしたいと思う。
最初の直感がけっこう正しいという斬新な切口の本でした。本の中で、ペプシとコカコーラの話はとても興味深いかったです。中途半端な試験結果をあてにしても成功しないというエピソードです。あと、アメリカではスピードデートといういわゆるカップリングパーティがはやっているらしい。スピードデートは、初対面の男女が6分ずつ話をしていってお互いに気に入ったら連絡先が交換できるのだそう。将来のパートナー候補をわずか6分で決めるとはなかなかすごいことだなと思う。最初の印象がとても大事だということが分かるエピソードです。僕も第一感を大事にしていきたい。
トレンジスタから始まるコンピュータの歴史から、今インターネット上に行っていることがとても丁寧にまとめられている本です。そこから、これからはどういう時代になるか池田さんならではの考えがぎっしり書かれている本です。
次に仕事とプレイベートの充実をはかるための読んだ本。僕は今まで遅くまで残業することが心の奥底で仕事をしていることだとずっと思っていた。この本を読んで、それははっきりいって間違っているということに気がついた。 あと、そもそも一つのことに対する集中力は続かないことを前提して、同時に複数の仕事を進めていくことも明日から実践していきたい。
休日、平日の夜などに必ず時間厳守の予定を入れるようにしたいとして、定時に会社を出るように意識したい 。
次になかなか朝方に切替えることができないので、そのためのヒントとして読んだ「幸運を呼びよせる朝の習慣」という本。同じシリーズに夜の習慣もありました。
  • 朝、3分間自分について考える時間をもつ
  • 朝、自分の夢を口にする
  • 朝、起きるとき好きな曲か太陽の光で起きる
  • 朝、起きるときに手をぎゅっとにぎる
  • 朝、起きてすぐ10秒間正座する
  • 朝、グレープフルーツの香りを嗅ぐ
  • 朝、水かキャロットジュースは必ず飲もう
  • 朝、ガムを噛む

zsh の umount コマンドを正しく補完する方法

いつも Mac OSX 10.5 で、最新の zsh-devel を使っていますが、umout コマンドを入力してから補完させようと Tab キーを押すと、次のようなエラーが発生することに気がついた。

  readlink: illegal option — q

  usage: readlink [-n] [file ...]

たくさん、このエラーがでるので修正しようと調べてみると、mount コマンドの補完関数である _mount の不具合であることに気がついた。

そこで、自分のホームディレクトリの .zfunctions に zsh の最新版に _mount を差しかえてみた。

再度試してみると、今度は次のようなエラーが発生した。

  _mount:889: bad pattern: (#m)\[0-7](#c3)

どうも正規表現がおかしいみたい、該当コードをみてみたが複雑すぎて理解できなかったので、とりあえずコメントアウトしてみた。

さらに umount コマンド補完を試してみたら、うまくいった!!!

これで問題ないだろうと、Fedora Core のサーバの設定ファイルも同じにしてみたら、今度は /sbin/mount コマンドがないというエラーに遭遇してしまった。調べてみると、/bin/mount に配置されている。OSX は、/sbin/mount だったのに。。。仕方がないので mount コマンドをフルパスで記述しているところを mount に変更してみた。

 

iPod Touch 2.0

週末に iPhone を買うかどうかさんざん迷ったが、とりあえず今持っている iPod Touch 32GB を iPod Touch 2.0 へバージョンアップしてみることにした。
iPhone SDK もダウンロードしたので、さっそくチュートリアルをみながらアプリケーションを開発してみようと思います!!!
iPod Touch 2.0 ファームウェアは、なんと 222.6MB もあって、今ダウンロード中。

procmail 小ネタ

procmail を使っていますが、procmail.rc で次のようなルールを設定しているとなんとメールが2通届くことを知りました。どうして、まったく同じメールが2通届くのか原因が分からず困っていましたが、あっさり解決できました。

:0c

* ^From:.*hoge@example.com 

{

  :0 c

  ! naoya@example.com

}

このルールを応用すると、数通同じメールを送る用途も考えられると思います。

プロバイダのコース変更

しばらく、グローバル IP アドレスを発行してくれているプロバイダで、月々 \1,500 円のサービスを使っていたが、引越しを機会にプロバイダのコースを見てみた。
そうしたら、ウィルスチェックなどのサービスを省いたグローバル IP アドレスだけを発行してくれるシンプルな月々 \500 円のサービスが新登場していた。
おそらく、会員には何のメール通知もなかったと思いますが、とても安いし、グローバル IP アドレスだけの発行で充分なのでコース変更できるかと思いきや、前のサービスを解約してから再度申し込みしないといけないらしい。
めんどくさいが、コスト削減のため既存のコースを解約して、すぐ \500 円のコースに申し込んでみた。
すぐに接続アカウントが発行されるので、とても簡単だった。しかも、コースを解約したことにより初月は無料になった。
すばらしい!
というわけで、たまにはプロバイダのコースを確認してみることをおすすめします。

Even Faster Websites

先日、ベイエリアで行われた Google I/O のセッション一覧が公開されています。この一覧を見るには、Google アカウントが必要で Google Sites になっていますね。

その中で、Event Faster Websites という YSlow の作者講演も公開されています。実際にパーフォマンスを計測デモも公開されていて、とても興味深いです。

 

あわせて資料も公開されています。