2012-03-19 9 views
0

NginxでPassengerを実行するための前提条件として、 "rvm use 1.9.3"と "rvmsudo passenger start - socket(sitename).socket"があります。他のすべては完璧に動作しますが、これらのコマンドやそれに相当するものすべてが、システムの起動時に起動するNginxで動作することを確認する方法が今、問題になっています。私はこれをすべて自動化したい。Nginx内でrvm'ed Passengerを自動起動する方法

はこれが(私は全くそれを試していない。#どうやらnginxの/乗客の一部構成で動作しますものです)のように見えるnginx.confにどのような私の付加部品である

upstream (sitename)_upstream{ 
    server unix:/(filepath) 
} 

server { 
    listen 80; 
    server_name (url); 
    root (filepath); 
    access_log (logpath); 
    error_log (logpath); 
# passenger_enabled on; 
# rails_spawn_method smart; 
# rails_env development; 
    location/{ 
    proxy_pass http://(sitename)_upstream; 
    proxy_set_header Host $host; 

    } 

} 

今私は何をしますか?

答えて

5

システムで始まるプロセスのトリックは、最初に設定したときと同じパーミッションとユーザー/グループで気になる部分が始まっていることを確認することです。 Linuxシステムを想定すると、ブート時に起動するプロセスは/etc/init/d/<script>で実行され、ブート時にはroot(デフォルト)で実行されます。 suを実行して別のユーザーとして起動するようにスクリプトを変更することができます。実際にはほとんどのサーバープロセスは保護されたユーザー環境で実行されるため、このような処理を行います。

一方、RVMはユーザー単位のプロセスとして実行するように設計されています。私は数ヶ月前にグローバルに稼動しているRVMを使用してサーバーをセットアップしようとしましたが、これはRVMの一種であると考えています。そこで私たちのケースでは、私たちのWebサーバ(私たちの場合はApacheで、Nginxには同じオプションがあります)を起動し、その子プロセスが実際にWebリクエストを処理したものがRVMが設定されます。代わりに、NginxとRVMの両方のユーザにグループ書き込み可能な権限を与えることもできますが、これはもっと有効です。

RVMのもう1つの問題は、シェルスクリプトの実行時にワールドが作成されるということです。通常は〜/ .bash_profileスクリプトであるため、同じ環境を必要とするサーバであればそのシェルで実行できます。

これはすべて非常に難しいですが、実際には、少なくともアプリケーションを実行したユーザーアカウントを作成し、そのユーザーとしてRVMをインストールしてもう少しセットアップをして、レーキ、バンドル、カピストラーノ、およびその他のものを実行している場合に特に便利です。

申し訳ありませんが、これは私が望んでいたよりも少し一般的ですが、おそらくそれは便利です...