Passenger


Dreamhostというサイトで、railsをいじり始めました。サポートwikiにていねいにRailsサイトの作り方を書いてあります。
fcgiでの作り方みたいのを書いてあるのですが、最初の一行目に「現在はPassengerを標準にしています」とあってしたがって読み替えて読まなければいけない。
ま、ともかく、書いてあるようにやって、Rails本(例のアジャイルなんとか)どおりに最初の例インスタントグラティフィケーションをやると、すぐできました。ここまでのところは、Railsというより、ドリームホストのPassengerおよびサブドメインの考え方の理解がポイント。

  • ドリームホストでのドメイン名をxxxxとすると、panelからドメインマネージメントに入って、そこにたとえばdemoというサブドメインを作る。demo.xxxx.comです。で、そこを自分のレンタルサーバーrailsのパブリックにリンクする。これもpanelからやる。たとえばドリームホストのサーバーマシン名をservermachineとして、自分のIDをmynameとして、そこにアジャイルのテキストどおり、workというディレクトリとrails demoで作ったdemoというディレクトリがあるとすると、servermachine/myname/work/demo/publicに行くようにする。ま、間違えるとダメと言われるのでこの辺は間違えないと思うけど試行錯誤しました。

次に、テキストはdemo.xxxx.com/say/helloで"Hello from Rails!"という表示をさせるのですが、ここがRails的に一度helloを作らずにhelloを呼び出して、エラーを出させてからhelloを作るというような開発(というか説明)をする。つまりsay_controller.rb。

class SayControler <ApplicationController
  def hello
  end
end

これだけ書いて、demo.xxxx.com/say/helloとすると、Template is missingというエラーページが出ることになっているのですが。

We're sorry, but something went wrong.
We've been notified about this issue and we'll take a look at it shortly.

うむ。Passengerがうまくいっていないようだと(間違った判断をして)、いろいろ触ったのですが、結局hello(app/views/say/hello.tml.erb)を作ったらちゃんとHello from Rails!ができました。

さて、テキストは開発モードですので、ちょっと直してページをreloadするとすぐ反映されて開発時の状況としてはいい感じなのですが、Passengerはサーバー側の設定なので直してもすぐ繁栄されないproductionという設定になっている。Passengerの説明によると、設定をdevelopmentにするのも可能そうなのですが、touch /tmp/restart.txtとする、とある。appとかと同じレベルにあるので、たとえばhello.html.erbでRailsのスペルを直したあとだとするとセーブしたあと、シェル上で。

touch ../../../tmp/restart.txt

なぜなら、hello.html.erbのあるところが。

~/work/demo/app/view/say/hello.html.erb

というところだからですね。

とりあえず、その昔cgiでやったりfcgiでやったときはhtaccessを読んで悩みつつやった(どこでどう間違えているかわからない)のと比べると相当らくちんです。アパッチ(apache)のhtaccessにはお世話になったというか今でもお世話になりますが、セキュリティだけおまかせしてcgiのところはPassengerまかせがよさそう。いまのところ快適です。


追記:Passengerが使えている証拠に、作ったサイトを紹介しようと思っています。乞うご期待!!