mod_railsでは、Gemsで新しいパッケージを導入した場合、Apache自体を再起動しないと、アプリからそのパッケージを読み込めない模様。 p.s Passenger architectural overviewを見ると大体の構造が分かるみたい。ちゃんと読んでみよう。 Ruby Enterprise Editionなんかも出る予定なのか。matzの日記で言及されているパッチとかが取り込まれたRubyなのかな?CoWが効くなら、Railsの様なサーバプロセスのメモリ削減には効果的だろうな。
Monthly Archives:: April 2008
mod_rails(passenger)はmogrelの3倍メモリを食う?
Rails運用時で気になるのは、安定性とパフォーマンス。安定性はいろいろ負荷テストをして時間が経たないと分からないので、まずはメモリのパフォーマンスから調べてみます。 とりあえず、ちょっとしたサンプルをmongrelで動かしてみると、44Mほどメモリを確保しています。 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 1003 14412 0.0 2.2 44316 23556 ? Sl Apr10 0:01 /usr/bin/ruby1.8 /var/lib/gems/1.8/bin/mongrel_rails start んで、同じプロセスをmod_rails(passenger)で起動すると、143Mほど確保されます。 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 23423 0.0 0.5 21720 9172 ? Sl 06:24 0:00 Passenger spawn server root 25426 9.0 1.2… Read more »
FriendFeed始めました
masahikoさんにFriendFeedのアカウントなに?って聞かれたので、作ってみました。 私のアカウントはいつもの通りmasuidriveです。もし良かったら追加してください。 クライアントは、私もALERT THINGYをインストール。サブディスプレイでの表示にはちょうどいい。
mod_rails用のdeploy.rbとapache用設定ファイルジェネレータ
Railsで一番めんどくさかったアプリの公開を、Apache httpdが動いているサーバに、普通にアップロードするだけで行える様にするモジュール、mod_railsがリリースされました。 いままで似たようなものにmod_rubyがあったのですが、ずっとメンテナンスされていない上に、構造的にRailsには向かないようになっていたので、Phusion社が新しく作ったものです。 日本語での紹介はmoongiftさんの記事をご覧ください。インストール方法や使い方は、こちらの記事を参考にしてください。 このモジュールの評価が高まれば、レンタルサーバでもRailsサポートをしてくれる所が増えるんじゃないかと期待してます。 早速、自分のサーバ(EC2)に入れてみた所、特に問題もなくあっさり動きました。 ただ、Capistranoを使っている場合、mongrelの時のままだと、サーバの起動などで失敗するので、config/deloy.rbをこのようにしました。 同時に、「設定より規約」でWebサーバ設定の自動化をするために、apache2-conf.rbも更新しました。 私は、/etc/init.d/apacheの頭の方で、/mnt/www/bin/apache2-conf.rb > /etc/apache2/conf.d/vhosts.conf を実行させて、apacheのプロセスを操作するたびに、自動生成される様にしています。 これで、ディレクトリ掘って、DB作って、cap deploy:setup; cap deploy:coldするだけで、新しいサーバでRailsのアプリを動かす事ができます。 ずっと作り続けている、Railsサーバの分散環境 on EC2も、これを使おうかと思っているので、ちょっとソースも読んでみます。 p.s 記事内で使っているderivativable.comは、いま作っている途中のcode snippetsサイトです。 投稿されたコードにたいてい、派生物を簡単に作れる様にするのが目標です。 Wikiでも、投稿されたコードを変更できますが、元のコードが消えてしまうので、心理的敷居が非常に高いと思っています。 それに対して、derivativable.comでは、元のコードは消える事なく、その派生物として管理される様になっています。元のコードは、そのまま保存されますので、自分用の変更などを気軽に投稿する事ができます。 まだベータ版にも満たないサービスですが、このコードに自分で機能を加えたときなどは、ぜひ投稿してもらえるとうれしいです。 あと私はデザインができないので、その辺で手伝ってくれる方も大募集。
WordPressアップデートしました
先ほど、WordPressのセキュリティホールを突かれてSpamを挿入されたので、WordPressを最新版にアップデートしました。 幸い、文字を書き込まれただけで、ウイルスなどが埋め込まれた形跡はありませんでした。 私のバージョンはME 2.1.5でした。ほかにも古いWP使ってる方がいましたら、最新版へのアップデートをお勧めします。
Google App Engineは罠じゃないか?
「Google版EC2欲しいよねー」と昨日チャットで話していたら、いきなりGoogle App Engineがリリース。夢かとオモタ。 Google App Engineは、Googleが一般ユーザに提供するGoogle製サーバ環境。Googleが検索やgmailに使っている環境と同じ環境が使えるらしい。 Googleの舞台裏とも言える、GoogleのファイルシステムGFSや、超大容量データベースのBigtableが自由に使えるのは、非常に楽しそう。クロール用APIまで標準で提供されているのが、Googleらしい。 ただし、Amazon EC2とは違い、LinuxなどのOSを解放するのではなく、言語環境だけが提供されている。 いま公開されているのは、Pythonだけ。なので、Pythonで書かれたアプリケーションしか対応しない。 ほかの言語も対応する予定らしい。 MySQLとかPostgreSQLも用意されていないので、データベースはBigtableだけ。Bigtableはリレーショナルデータベースではないので、ほとんどのアプリケーションは、この辺を書き直す必要がありそう。 そのため、ほかで動いているPythonのアプリを、そのままApp Engineで動かすのは難しそう。 という訳で、Google App Engineでアプリを動かすには、データベースをBigtableにする必要があり、それはほかの環境では動かないわけで、Googleでしか動かせないアプリケーションになってしまう。 さすがにGoogle以外で動かせない環境で、プログラムを作ってサービスを立ち上げるのは、あまりにGoogleに依存していて怖いなぁ。 Googleとしては、これで面白いアプリが出れば、その作者をスカウトしたり、会社を買収したりするだろうし、そもそも、これによって多様なアプリケーションが出る事は、ユーザがネットに滞在する時間が増え、Googleにはメリットがあるんだろうなとは思うけど。 これ専用にガリガリとアプリを書いて、サービスするのは罠だと思うけど、自分用WikiEngineをインストールしたり、Plaggerを常駐させておくのには便利そう。 Plaggerを簡単にインストール出来て、ついでにBigtableにデータ突っ込んでRSS検索できるようなパッケージでないかなぁw p.s 乗り遅れたので、サインアップは出来ませんでした。ただいま順番待ち。
EC2の固定IPを使ってみる
初期状態では、一つのインスタンスに、EC2の中だけで使えるPrivate IPと、外部からアクセスするためのPublic IP(グローバルアドレス)が割当たってます。 インスタンス自体への割当IPはPrivate IPですが、上位のルータに1:1のNATがあり、これによって外部からPublic IPでアクセスできる様になっています。 今までの、Private IPとPublic IPに加えて、今度は固定IPのグローバルアドレスが割り当てられるElastic IPを選択出来るようになりました。 これは、Public IPと同じ様に、外部からアクセスするためのグローバルアドレスですが、AWSアカウント毎に発行されるので、インスタンスの再起動などによって代わる事はありません。 これを使えば、EC2で最大の問題点であった、「インスタンスを再起動するとIPアドレスが代わる」という問題から解放されます。 Elastic IPを使うために、EC2 Toolsのアップデート。Amazon EC2 Command-Line ToolsからEC2 API toolをダウンロードしてインストール。 自分のアカウントに割り当てられたElastic IP(EC2の固定IP)を確認。 $ ec2-allocate-address ADDRESS 75.101.xxx.xxx 現在のアカウントで起動しているインスタンスを確認。 $ ec2-describe-instances RESERVATION r-e729dbxx 036701054xxx default INSTANCE i-876892xx ami-7034d119 ec2-67-202-xxx-xxxcompute-1.amazonaws.com domU-12-31-38-00-xx-xx.compute-1.internal running nobody 0 m1.small 2008-03-24T04:17:43+0000 us-east-1b Elastic IPのアドレスと、割り当てたいインスタンス番号(i-から始まる番号)を指定して、ec2-associate-addressを実行します。 これを実行すると、今までのPublic IPではアクセス出来なくなります。インスタンスに割り当てられるグローバルアドレスはPublic IPかElastic IPのどちらかになります。 $ ec2-associate-address -i i-876892xx… Read more »
Adobe AIR for Linuxの日本語対応度
Adobe AIR for Linux アルファ版がリリースされたので、早速インストール。 やっぱり気になるのは、日本語の対応度。Linux版にコードが近いであろう、OSX版は表示は出来るけど入力がだめだったので、入力はあまり期待できない。でもせめて表示だけは出来てほしいなと思いつつ、適当なアプリを実行してみる。 サンプルで配布されているFreshというExtJSを使ったフィードリーダを実行して、日本語のフィードを入れてみると、無事表示。 で、問題は入力。これは他のアプリで試したけど、案の定ダメ。他のアプリで入力した後、コピペしても2バイト文字以降がペーストされない。これはWindowsなどで日本語版が出ないと解決されないようだ。残念。 あと気になるのは、フォント処理。同じ処理で表示しているはずの文字でフォントサイズが違う場合がある。 このスクリーンショットの下の本文のフォントが、さっきのスクリーンショットに比べて大きい。 もしかしたら、文字表示にも問題あるかも。これは要検証だな。 でも、ちょっと試した範囲では、WindowsやOSXと同じように動くようだ。公衆端末みたいな特定用途のPCにはとてもいい環境だと思うなぁ。最近、EeePCとかで安いミニノートも出てるし。 詳しくは、日経LinuxでAIRの連載をしているので、そっちでよろしく!