Ramazeのデーモン化
今更だけどよく分からない.
$ ramaze start.rb
ってやるとpidファイルが作られるのだけど,アクセスすると常に503(後pidファイルの消し方が分からない,今は手動で消している).
$ ruby start.rb
ってやるとログが延々とコンソールに流れる.何かオプションとか見逃しているのか?少し調べよう.俺Ramaze使ってる割には基本全然分かってないww
一番下にあるように解決しました(物凄い迷走の後が見て取れるw).
追記
上のでも普通に動いているのがある.ってことは503になるのは設定の問題ということか?Apacheからhttps経由なのと何か関係があるのだろうか.
pidは上書きすることが前提なので消さなくてもいいのね.
追追記
Debianの問題かも.FreeBSDだと何も問題がないけど,Debianで
$ ramaze start.rb
とやってもhoge_monitorのプロセスはあるけど,start.rbを実行出来てない(ps aux | grep rubyで見つからない).何か環境で差があるのかな?
追追追記
Daemonsを読んでるけどよく分からない.Ramazeが使うstart_execに関してはKernel.execにちゃんとスクリプトまでのパスは渡されてるし,動作しているはず(deamonizeでSTD*もclosedされてるし).
irbでは同じ引数でやったらちゃんと動くのだけど,何が問題なのか.特権ポートは7000だから関係ないし,Debianって他に権限の制限あったっけ?monitorで度々再起動はされてるんだけど,いつもメモリ使用量が0ですぐ落ちているのが謎.
追追追追記
同じDebianで新しくRamazeのプロジェクト作ってそこでデーモン化したらまともに動いた(相変わらず動かしたい方は動かない).なんじゃこれww
追追追追追記
あー,何か日本語の問題な気がしてきた.日本語が書かれたファイルを持ってきたら起動しなくなる.-Kもマジックコメントも$KCODEも全てUTF-8にしても駄目なんけども,どうすればいいんだ?
解決
Debianも日本語も関係なくて,単にDeamonizeを使った方法だと内部でchdirが呼ばれるからか,ファイルが見つからないだけだった様子.createしたばっかだと外部ファイルとかないしね.しかしこの辺考慮してくれるものとばかり思っていたので無駄に嵌ってしまったorz
Dir.chdir(__DIR__)
今応急処置的に,これをstart.rbに置いてるのだけどどうにかならないものか(最新だと直ってるのかな).
解決の追記
__DIR__があるの忘れてたので,そっちに修正.