<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SNS開発者の雑記帳 &#187; Rails</title>
	<atom:link href="http://www.synapz.jp/mrsy/tag/rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.synapz.jp/mrsy</link>
	<description></description>
	<lastBuildDate>Fri, 05 Mar 2010 02:11:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Railsアプリのパフォーマンスモニタ ｢New Relic｣を入れてみた</title>
		<link>http://www.synapz.jp/mrsy/2009/10/rails-new-relic/</link>
		<comments>http://www.synapz.jp/mrsy/2009/10/rails-new-relic/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 00:13:04 +0000</pubDate>
		<dc:creator>mrsy</dc:creator>
				<category><![CDATA[開発環境]]></category>
		<category><![CDATA[New Relic]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[パフォーマンス]]></category>

		<guid isPermaLink="false">http://www.synapz.jp/mrsy/2009/10/13/post59/</guid>
		<description><![CDATA[
弊社サバゲ〜るの開発では以前､開発環境にFiveRuns TuneUpをインストールしてみたことがあり､これは便利だ是非活用しようと思ったまま､なかなか手つかずの状態になっていました｡


FiveRuns TuneUpとは､Railsアプリケーションのパフォーマンスチューニングに役立つ情報を､グラフィカルに表示してくれるプラグインです｡


今回､久々にブログ更新しようと思って真っ先に思いついたのがそのFiveRuns TuneUpネタでした｡活用方法を調べようと思い､FiveRunsの本家サイトを見たら､




･Workthinkなる会社に買収されたよ､今ははそっちで新しい製品を作っているよ
･｢DASH｣というサービスは終了するのでデータをエキスポートしてね


と掲示されているページだけがあり､TuneUpプラグインはどうなるのかとか､それまで提供していたサービスについては言及されていません｡｡


TuneUpはあきらめ､類似サービスを調べたところ､masuidriveさんも利用しているという､New Relicが良さげということが分かりました｡
New Relicも TuneUp と同様に Railsアプリケーションにプラグインをインストールし､そのプラグインがNew Relic側にデータを送信し､蓄積するという仕組みです｡


料金体系は以下の通りです｡今回はお試しということでLiteアカウントを選択してみます｡





Free subscribeをクリックし､必要情報を入力し､Submitします｡
しばらくすると入力したメアドにメールが届くので､URLをクリックしアクティベーションを行います｡





アクティベーション後､Home(Myページ)にプラグインのインストール方法が載っています｡ページ上部に小さくRPM Version2が出てるよと表示されているので､せっかくなのでそれにしてみます｡





掲載されているとおりに手元の開発環境をセットアップします｡


1. Railsアプリケーションにプラグイン(Agent)を入れる
[masayuki@dev_svgr_jp /var/local/projects/svgr.jp]$ script/plugin install http://newrelic.rubyforge.org/svn/newrelic_rpm --force
+ ./CHANGELOG
+ ./LICENSE
+ ./README.md
+ ./Rakefile
+ ./bin/mongrel_rpm
+ ./bin/newrelic_cmd
+ ./cert/cacert.pem
+ ./init.rb
+ ./install.rb
+ ./lib/new_relic/agent/agent.rb
+ ./lib/new_relic/agent/chained_call.rb
-- 略 --


このプラグインが定期的に性能データをNew Relic側に送信するようです｡


2. config/newrelic.yml を作成する
HOMEからnewrelic.ymlをダウンロードし､configディレクトリに置きます｡デフォルトではproduction / staging環境のみ有効になっているので､developmentでも有効になるよう､172行目を trueにします｡


3. Railsアプリを再起動する
さて､サクッとインストールできたようなので､データが蓄積されるまで開発環境をいじっておきます｡
10分ほどいじった後､New Relicを見てみます｡


おお! どうやらデータが取得できているようです｡




My Applicationをクリックすると､概要が表示されます｡



この画面で確認できるのは､以下の通り

平均レスポンスタイム(Ruby / DB)
Apdexスコア

Apdex(Application Performance Index)とは､アプリケーションの性能を定義する標準的な指標とのこと｡

詳しくは､こちらを参照｡
スループット(request per minute ?)
ホスト毎のCPU使用率､メモリ使用量
直近のイベントノート(コメント)､デプロイ履歴など



なお､Overview以外の下記のタブは､Bronzeアカウント以上でないと見ることができません｡

Web Transaction
Database
Transaction Traces
Errors



取得したデータには､ノート(コメント)が書け､それを共有することができます｡



まとめ
FiveRuns TuneUpでは､RailsアプリのMVC毎に何ms時間が掛かっているか棒グラフで表示する非常にシンプルな機能だったのですが､New Relicは(というよりFreeアカウントでは)そこまでは提供されないようです｡ Ruby全体のレスポンス､ホスト毎のCPU使用率､メモリ使用量やApdexスコアにより､FiveRunsより大きな粒度でアプリケーションの性能を確認できます｡


注意すべき点としては､動作環境がproductionかつ1分おきにデータを取得するので､Amazon EC2など従量課金の場合でトラフィックが多いアプリケーションの場合はデータ転送量に注意が必要です｡


Railsアプリは遅いと諦める前に､どこがボトルネックなのかを見える化し､チューニングを施す｡これらを簡単に行えるツールは今後も需要があるのではないでしょうか｡
]]></description>
			<content:encoded><![CDATA[<p>
弊社<a href="http://svgr.jp">サバゲ〜る</a>の開発では以前､開発環境に<a href="http://www.fiveruns.com/">FiveRuns TuneUp</a>をインストールしてみたことがあり､これは便利だ是非活用しようと思ったまま､なかなか手つかずの状態になっていました｡<br />
<br />
<br />
<a href="http://www.fiveruns.com/">FiveRuns TuneUp</a>とは､Railsアプリケーションのパフォーマンスチューニングに役立つ情報を､グラフィカルに表示してくれるプラグインです｡<br />
<br />
<br />
今回､久々にブログ更新しようと思って真っ先に思いついたのがそのFiveRuns TuneUpネタでした｡活用方法を調べようと思い､<a href="http://www.fiveruns.com/">FiveRunsの本家サイト</a>を見たら､<br />
<br />
<img src="/blog/mrsy/2009/10/13/d20e34ade5bd968cdb7e286272267952-thumb-500x303.png" width="500" height="303" alt="d20e34ade5bd968cdb7e286272267952.png" class="mt-image-center" style="text-align: center;margin: 0 auto 20px" />
<br />
<br />
･<a href="http://www.workthink.net/">Workthink</a>なる会社に買収されたよ､今ははそっちで新しい製品を作っているよ<br />
･｢DASH｣というサービスは終了するのでデータをエキスポートしてね<br />
<br />
<br />
と掲示されているページだけがあり､TuneUpプラグインはどうなるのかとか､それまで提供していたサービスについては言及されていません｡｡<br />
<br />
<br />
TuneUpはあきらめ､類似サービスを調べたところ､<a href="http://blog.masuidrive.jp/index.php/2008/07/19/new-relic/">masuidriveさんも利用している</a>という､<a href="http://www.newrelic.com/">New Relic</a>が良さげということが分かりました｡<br />
<a href="http://www.newrelic.com/">New Relic</a>も TuneUp と同様に Railsアプリケーションにプラグインをインストールし､そのプラグインが<a href="http://www.newrelic.com/">New Relic</a>側にデータを送信し､蓄積するという仕組みです｡<br />
<br />
<br />
料金体系は以下の通りです｡今回はお試しということでLiteアカウントを選択してみます｡<br />
<br />
<br />
<img src="http://www.synapz.jp/blog/mrsy/2009/10/13/17e53e03470d2d3a3e37154801deb04c-thumb-500x641.png" width="500" height="641" alt="17e53e03470d2d3a3e37154801deb04c.png" class="mt-image-center" style="text-align: center;margin: 0 auto 20px" />
<br />
<br />
Free subscribeをクリックし､必要情報を入力し､Submitします｡<br />
しばらくすると入力したメアドにメールが届くので､URLをクリックしアクティベーションを行います｡<br />
<br />
<br />
<img alt="アクティベーション後" src="http://www.synapz.jp/blog/mrsy/2009/10/13/03.png" width="224" height="216" class="mt-image-center">
<br />
<br />
アクティベーション後､Home(Myページ)にプラグインのインストール方法が載っています｡ページ上部に小さくRPM Version2が出てるよと表示されているので､せっかくなのでそれにしてみます｡<br />
<br />
<br />
<img src="http://www.synapz.jp/blog/mrsy/2009/10/13/01.png" width="500" height="313" alt="データ取得前HOME.png" class="mt-image-center" style="text-align: center;margin: 0 auto 20px" />
<br />
<br />
掲載されているとおりに手元の開発環境をセットアップします｡<br />
<br />
<br />
<strong><big>1. Railsアプリケーションにプラグイン(Agent)を入れる</big></strong><br />
<pre><code>[masayuki@dev_svgr_jp /var/local/projects/svgr.jp]$ script/plugin install http://newrelic.rubyforge.org/svn/newrelic_rpm --force
+ ./CHANGELOG
+ ./LICENSE
+ ./README.md
+ ./Rakefile
+ ./bin/mongrel_rpm
+ ./bin/newrelic_cmd
+ ./cert/cacert.pem
+ ./init.rb
+ ./install.rb
+ ./lib/new_relic/agent/agent.rb
+ ./lib/new_relic/agent/chained_call.rb
-- 略 --
</code></pre>
<br />
このプラグインが定期的に性能データをNew Relic側に送信するようです｡<br />
<br />
<br />
<strong><big>2. config/newrelic.yml を作成する</big></strong><br />
HOMEからnewrelic.ymlをダウンロードし､configディレクトリに置きます｡デフォルトではproduction / staging環境のみ有効になっているので､developmentでも有効になるよう､172行目を trueにします｡<br />
<br />
<br />
<strong><big>3. Railsアプリを再起動する</big></strong><br />
さて､サクッとインストールできたようなので､データが蓄積されるまで開発環境をいじっておきます｡<br />
10分ほどいじった後､New Relicを見てみます｡<br />
<br />
<br />
おお! どうやらデータが取得できているようです｡<br />
<br />
<img src="http://www.synapz.jp/blog/mrsy/2009/10/13/02.png" width="500" height="132" alt="データ取得完了HOME" class="mt-image-center" style="text-align: center;margin: 0 auto 20px" />
<br />
<br />
My Applicationをクリックすると､概要が表示されます｡<br />
<img src="http://www.synapz.jp/blog/mrsy/2009/10/13/MyApplication-thumb-500x255.png" width="500" height="255" alt="MyApplication.png" class="mt-image-center" style="text-align: center;margin: 0 auto 20px" />
<br />
<br />
この画面で確認できるのは､以下の通り<br />
<ul>
<li>平均レスポンスタイム(Ruby / DB)</li>
<li>Apdexスコア<br />
<br />
Apdex(Application Performance Index)とは､アプリケーションの性能を定義する標準的な指標とのこと｡<br />
<br />
詳しくは､<a href="http://apdex.org/overview.html">こちら</a>を参照｡</li>
<li>スループット(request per minute ?)</li>
<li>ホスト毎のCPU使用率､メモリ使用量</li>
<li>直近のイベントノート(コメント)､デプロイ履歴など</li>
</ul>
<br />
<br />
なお､Overview以外の下記のタブは､Bronzeアカウント以上でないと見ることができません｡<br />
<ul>
<li>Web Transaction</li>
<li>Database</li>
<li>Transaction Traces</li>
<li>Errors</li>
</ul>
<br />
<br />
取得したデータには､ノート(コメント)が書け､それを共有することができます｡<br />
<img src="http://www.synapz.jp/blog/mrsy/2009/10/13/note-thumb-500x174.png" width="500" height="174" alt="note.png" class="mt-image-center" style="text-align: center;margin: 0 auto 20px" />
<br />
<br />
<h2>まとめ</h2>
FiveRuns TuneUpでは､RailsアプリのMVC毎に何ms時間が掛かっているか棒グラフで表示する非常にシンプルな機能だったのですが､New Relicは(というよりFreeアカウントでは)そこまでは提供されないようです｡ Ruby全体のレスポンス､ホスト毎のCPU使用率､メモリ使用量やApdexスコアにより､FiveRunsより大きな粒度でアプリケーションの性能を確認できます｡<br />
<br />
<br />
注意すべき点としては､動作環境がproductionかつ1分おきにデータを取得するので､Amazon EC2など従量課金の場合でトラフィックが多いアプリケーションの場合はデータ転送量に注意が必要です｡<br />
<br />
<br />
Railsアプリは遅いと諦める前に､どこがボトルネックなのかを見える化し､チューニングを施す｡これらを簡単に行えるツールは今後も需要があるのではないでしょうか｡</p>
]]></content:encoded>
			<wfw:commentRss>http://www.synapz.jp/mrsy/2009/10/rails-new-relic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>プロジェクト管理ツール Redmine</title>
		<link>http://www.synapz.jp/mrsy/2008/05/redmine/</link>
		<comments>http://www.synapz.jp/mrsy/2008/05/redmine/#comments</comments>
		<pubDate>Mon, 12 May 2008 12:10:47 +0000</pubDate>
		<dc:creator>mrsy</dc:creator>
				<category><![CDATA[TIPS]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Redmine]]></category>

		<guid isPermaLink="false">http://www.synapz.jp/mrsy/2008/05/12/post52/</guid>
		<description><![CDATA[
フリーで使えるBTS(バグトラッキングツール)を導入しようと思い情報収集していたところ、
Tracより良さげなRedmineにたどり着きました。
Tracと比較してのメリットは、こちらに詳しく掲載されています。
ということで、今回はRedmineインストールの顛末記です。

Tracと比較して個人的にメリットを感じたのは、

複数プロジェクトを管理できる
デフォルトで日本語対応している
ガントチャートが使える
RailsアプリでPassenger(mod_rails)に対応(v0.7より)

の4つです。Tracはプロジェクト毎に公開ディレクトリを作成してApacheのhttpd.confを書き換えたりしなければならないのに対し、Redmineは一度設置すればあとは画面上でプロジェクトを作成できます。

また、プロジェクト毎に担当者を設定できるので、社外開発者に解放しても心配ありません。

最後のPassenger対応については、mongrelサーバで動かすよりも実際簡単でした。インストール方法も公式ページに詳細が掲載されています。


■メール通知をGmailのsmtpサーバを利用するようにカスタマイズ
Gmailのsmtpを利用するには、RailsにTLSプラグインを入れなければなりません。
# gem install tlsmail

そして、Redmineの config/environment.rbの最後に以下の2行を追加します。
require "tlsmail"
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)

これで送信することができました。


■Subversionリポジトリと連携
Redmineが動作しているサーバに、Subversionリポジトリがあるので連携させようと思ったのですが、ここでハマりました。どのように設定しても、「リポジトリに、エントリ/リビジョンが存在しません。」というエラーが表示されます。


同一サーバ上にリポジトリが存在するので、URLは「file:///リポジトリへのパス」と指定すればいいはずなのですが、一向にうまくいきません。。その他スキーム（http://, svn://）も試したのですがダメでした。

エラーログは下記の通り。
You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]


エラーが出ている箇所のソースは以下の22行目です。
$REDMINE_HOME/lib/redmine/scm/adapters/subversion_adapter.rb


# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
require 'redmine/scm/adapters/abstract_adapter'
require 'rexml/document'
module Redmine
module Scm
module Adapters
class SubversionAdapter &#60; AbstractAdapter
# SVN executable name
SVN_BIN = &#34;svn&#34;
# Get info [...]]]></description>
			<content:encoded><![CDATA[<p>
フリーで使えるBTS(バグトラッキングツール)を導入しようと思い情報収集していたところ、<br />
<a href="http://trac.edgewall.org/" target="_blank">Trac</a>より良さげな<a href="http://redmine.jp/" target="_blank">Redmine</a>にたどり着きました。<br />
Tracと比較してのメリットは、<a href="http://d.hatena.ne.jp/zenpou/20080414/1208189475" target="_blank">こちら</a>に詳しく掲載されています。<br />
ということで、今回はRedmineインストールの顛末記です。<br />
<br />
Tracと比較して個人的にメリットを感じたのは、<br />
<ul>
<li>複数プロジェクトを管理できる</li>
<li>デフォルトで日本語対応している</li>
<li>ガントチャートが使える</li>
<li>RailsアプリでPassenger(mod_rails)に対応(v0.7より)</li>
</ul>
の4つです。Tracはプロジェクト毎に公開ディレクトリを作成してApacheのhttpd.confを書き換えたりしなければならないのに対し、Redmineは一度設置すればあとは画面上でプロジェクトを作成できます。<br />
<br />
また、プロジェクト毎に担当者を設定できるので、社外開発者に解放しても心配ありません。<br />
<br />
最後のPassenger対応については、mongrelサーバで動かすよりも実際簡単でした。インストール方法も<a href="http://redmine.jp/redmine_today/2008/04/13/20080413-apache-passenger/" target="_blank">公式ページに詳細が掲載されています。</a><br />
<br />
<br />
<strong><big>■メール通知をGmailのsmtpサーバを利用するようにカスタマイズ</big></strong><br />
Gmailのsmtpを利用するには、RailsにTLSプラグインを入れなければなりません。<br />
<pre><code># gem install tlsmail</code></pre>
<br />
そして、Redmineの config/environment.rbの最後に以下の2行を追加します。<br />
<pre><code>require "tlsmail"
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
</code></pre>
これで送信することができました。<br />
<br />
<br />
<strong><big>■Subversionリポジトリと連携</big></strong><br />
Redmineが動作しているサーバに、Subversionリポジトリがあるので連携させようと思ったのですが、ここでハマりました。どのように設定しても、「<strong>リポジトリに、エントリ/リビジョンが存在しません。</strong>」というエラーが表示されます。<br />
<br />
<br />
同一サーバ上にリポジトリが存在するので、URLは「file:///リポジトリへのパス」と指定すればいいはずなのですが、一向にうまくいきません。。その他スキーム（http://, svn://）も試したのですがダメでした。<br />
<br />
エラーログは下記の通り。<br />
<pre><code>You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]
</code></pre>
<br />
エラーが出ている箇所のソースは以下の22行目です。<br />
<strong>$REDMINE_HOME/lib/redmine/scm/adapters/subversion_adapter.rb</strong><br />
<br />
<br />
<pre><code># Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
require 'redmine/scm/adapters/abstract_adapter'
require 'rexml/document'
module Redmine
module Scm
module Adapters
class SubversionAdapter &lt; AbstractAdapter
# SVN executable name
SVN_BIN = &quot;svn&quot;
# Get info about the svn repository
def info
cmd = &quot;#{SVN_BIN} info --xml #{target(&#39;&#39;)}&quot;
cmd &lt; doc.elements["info/entry/repository/root"].text,
:lastrev =&gt; Revision.new({
:identifier =&gt; doc.elements["info/entry/commit"].attributes['revision'],
:time =&gt; Time.parse(doc.elements["info/entry/commit/date"].text).localtime,
:author =&gt; (doc.elements["info/entry/commit/author"] ? doc.elements["info/entry/commit/author"].text : "")
})
})
rescue =&gt; e
logger.error(e)
end
</code></pre>
<br />
16行目の、#{SVN_BIN} info &#8211;xml #{target(&#8221;)}　こいつを手動で叩くと（もちろんApache実行ユーザで）、きちんとXMLで結果が返ってきているのは確認しています。<br />
<br />
Redmineを使ってドキュメント〜ソースまで一気通貫で管理できる！と<br />
意気込んでいたのですが、諦めようかな。。<br />
どなたかヒントをお持ちでしたらご教授いただけますか？<br />
<br />
<br />
<br />
<strong><big>2008/05/15 追記</big></strong><br />
解決しました。svnの設定情報が/root配下のものを読み込んでおり、Redmineの実行ユーザがapache<br />
なのでPermissionエラーとなっていたようです。<br />
<br />
&#8211;config-dir オプションを利用して、apacheユーザーのホームディレクトリの設定情報を読み込むように変更します。<br />
<strong>$REDMINE_HOME/lib/redmine/scm/adapters/subversion_adapter.rb</strong><br />
<br />
<pre><code>require 'redmine/scm/adapters/abstract_adapter'
require 'rexml/document'
module Redmine
module Scm
module Adapters
class SubversionAdapter &lt; AbstractAdapter
# SVN executable name
#        SVN_BIN = &quot;svn&quot;
SVN_BIN = &quot;svn --config-dir /home/apache &quot; # こうする
# Get info about the svn repository
def info
</code></pre>
<br />
11行目のように書き換える。<br />
あー、すっきりした！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.synapz.jp/mrsy/2008/05/redmine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails 環境調査</title>
		<link>http://www.synapz.jp/mrsy/2008/04/rails/</link>
		<comments>http://www.synapz.jp/mrsy/2008/04/rails/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 05:19:31 +0000</pubDate>
		<dc:creator>mrsy</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.synapz.jp/mrsy/2008/04/18/post51/</guid>
		<description><![CDATA[
最近Ruby on Railsの面白さにハマり、いろいろネットで情報を収集しています。
皆さん様々な環境やサーバソフトウェアの組み合わせで試みているようですね。
今回はRailsアプリケーションを動かす環境について、自分なりのまとめです。

httpサーバ

lighttpd

その名の通り、「軽い」httpサーバ。また、安全で柔軟性もあるとされる。
Apacheとのベンチマーク比較でも、同等かわずかに上回るパフォーマンスとのこと。



Mongrel

Rails アプリケーションサーバ。Java世界で言うところの、Jakarta Tomcat。
RubyとCの拡張ライブラリで書かれている。
Apacheをリバースプロキシとして動作させ、Railsアプリはmongrel_cluster(負荷分散や複数のRailsアプリを動作させるためのMongrelプロセス複数起動)という役割で利用されることが多い。



WEBrick

Rubyに標準添付されているhttpサーバソフトウェア。
公式ページにはhttpサーバ構築のためのライブラリと記されている。主に開発用に使用する。



WEBrick is a Ruby library program to build HTTP servers. 
via: RAA &#8211; webrick


実際にWEBrickでhttpプロキシサーバを作るチュートリアルがこちらに載っている。


httpサーバと組み合わせるモジュール

FastCGI

CGIはクライアントからhttpリクエストがある都度プロセスを立ち上げ、レスポンスを返した後にそのプロセスを落とす。このオーバーヘッドを無くそうとしたものがFastCGI。FastCGIによって起動されたCGIプログラムはHTTPDプロセスとは別に起動するが、CGIの処理が終了してもプロセスは残る。そのプロセスを使い回すことでパフォーマンスの向上が図れる。
こちらにより詳細な解説があります。



Passenger(mod_ruby)

RailsアプリケーションをApache上で動作させるためのモジュール。PHPでいうところの、mod_php。これがあればMongrelやWEBrickは不要。パフォーマンスにおいてもMongrelより（ちょっと）早いらしい。


画像は公式サイトより。
インストール方法など詳細な解説はこちら。


まとめ
最近リリースされたPassengerが一番手軽そうですが、信頼性についてはまだまだ未知数です。
]]></description>
			<content:encoded><![CDATA[<p>
最近Ruby on Railsの面白さにハマり、いろいろネットで情報を収集しています。<br />
皆さん様々な環境やサーバソフトウェアの組み合わせで試みているようですね。<br />
今回はRailsアプリケーションを動かす環境について、自分なりのまとめです。<br />
<br />
<h2>httpサーバ</h2>
<ul>
<li><strong>lighttpd</strong></li>
</ul>
その名の通り、「軽い」httpサーバ。また、安全で柔軟性もあるとされる。<br />
Apacheとのベンチマーク比較でも、同等かわずかに上回るパフォーマンスとのこと。<br />
<br />
<br />
<ul>
<li><strong>Mongrel</strong></li>
</ul>
Rails アプリケーションサーバ。Java世界で言うところの、Jakarta Tomcat。<br />
RubyとCの拡張ライブラリで書かれている。<br />
Apacheをリバースプロキシとして動作させ、Railsアプリはmongrel_cluster(負荷分散や複数のRailsアプリを動作させるためのMongrelプロセス複数起動)という役割で利用されることが多い。<br />
<br />
<br />
<ul>
<li><strong>WEBrick</strong></li>
</ul>
Rubyに標準添付されているhttpサーバソフトウェア。<br />
公式ページにはhttpサーバ構築のためのライブラリと記されている。主に開発用に使用する。<br />
<br />
</p>
<blockquote><p>
WEBrick is a Ruby library program to build HTTP servers. </p>
<cite>via: <a href="http://raa.ruby-lang.org/project/webrick" target="_blank">RAA &#8211; webrick</a></cite><br />
</p></blockquote>
<p>
実際にWEBrickでhttpプロキシサーバを作るチュートリアルが<a href="http://jp.rubyist.net/magazine/?0002-WEBrickProxy#fm01">こちら</a>に載っている。<br />
<br />
<br />
<h2>httpサーバと組み合わせるモジュール</h2>
<ul>
<li><strong>FastCGI</strong></li>
</ul>
CGIはクライアントからhttpリクエストがある都度プロセスを立ち上げ、レスポンスを返した後にそのプロセスを落とす。このオーバーヘッドを無くそうとしたものがFastCGI。FastCGIによって起動されたCGIプログラムはHTTPDプロセスとは別に起動するが、CGIの処理が終了してもプロセスは残る。そのプロセスを使い回すことでパフォーマンスの向上が図れる。<br />
<a href="http://webos-goodies.jp/archives/50816782.html">こちら</a>により詳細な解説があります。<br />
<br />
<br />
<ul>
<li><strong>Passenger(mod_ruby)</strong></li>
</ul>
RailsアプリケーションをApache上で動作させるためのモジュール。PHPでいうところの、mod_php。これがあればMongrelやWEBrickは不要。パフォーマンスにおいてもMongrelより（ちょっと）早いらしい。<br />
<br />
<img alt="passenger_mongrel_thin_benchmark.png" src="http://www.synapz.jp/blog/mrsy/2008/04/18/passenger_mongrel_thin_benchmark.png" width="470" height="292" class="mt-image-center">
画像は<a href="http://www.modrails.com/documentation.html">公式サイト</a>より。<br />
インストール方法など詳細な解説は<a href="http://rails20.jp/2008/04/passenger/">こちら</a>。<br />
<br />
<br />
<h2>まとめ</h2>
最近リリースされたPassengerが一番手軽そうですが、信頼性についてはまだまだ未知数です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.synapz.jp/mrsy/2008/04/rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

