0

root ユーザーとして (sudo を使用して) Node.js サーバーを開始する必要があります。開始パラメーターは次のようになります。

w.start = "sudo node #{KTHXBYE_NODE_ROOT}/poll.js"

私は Socket.IO を使用しており、Flash Sockets を使用する必要があるため (Node.js をルートとして実行する必要があります)。

しかし、神を起動するたびに、ノードの起動に失敗します。sudoGod を with , without sudo, asで実行しようとしましたがrvmsudo(RVM を使用してマシンの Ruby バージョンを管理しているため)、何も修正されないようです。sudo神でプロセスを実行する方法を知っている人はいますか?

ありがとう。

4

2 に答える 2

2

「god」で node.js サーバーを実行するための最小限の構成ファイルを次に示します。

APP_ROOT = "/home/sphynx/app"                   # application root

God.pid_file_directory = "#{APP_ROOT}/pids"     # directory to store PID files

God.watch do |w|
    w.name = "chapayev"
    w.interval = 5.seconds # default
    w.start = "env node #{APP_ROOT}/server.js"  # path to node.js server file
    w.stop = "env killall node"                 # stopping node explicitly
    w.start_grace = 10.seconds
    w.restart_grace = 10.seconds            
    w.log = "#{APP_ROOT}/log/chapayev.log"      # to enable logging

    w.start_if do |start|                       # start if condition is met
      start.condition(:process_running) do |c|  # check if process is running
        c.interval = 5.seconds
        c.running = false
      end
    end
end

node.js がまだ開始されていない場合は自動的に開始され、内部の「god」デーモン化手段が使用されます。

監視対象プロセスを開始する条件を定義する「start_if」部分が設定に含まれていることを確認してください。ここには、プロセスが実行されていない場合に開始する条件があります。まさに必要なものです!

「sudo」権限について: God config の「start」コマンドに sudo を含める必要はないと思います。むしろ、sudo "god" 自体で呼び出すこともできます。そうすれば、監視対象のプロセスも sudo で実行されます。たとえば、次のコマンドで「神」構成をテストしています。

sudo god -c conf/chapayev.god -D

(すべての設定ミスをすぐに確認するためにコンソールに出力を表示するための -D)

詳細については、この投稿をご覧ください: http://blog.acmarques.com/deploying_node_with_nginx_and_god

于 2011-02-14T22:03:29.347 に答える
0

nginxなどのWebサーバーでフラッシュソケットポリシーファイルをサーバー化する方が良いのではないでしょうか?

server { 
    listen 843; 
    server_name {{ SERVER_NAME }} www.{{ SERVER_NAME }}; 
    location / { 
        root {{ PATH_TO_FOLDER_WITH_crossdomain.xml_FILE }}; 
        autoindex off; 
    } 
} 

および crossdomain.xml ファイル (* を適切な値に置き換えます):

<cross-domain-policy> 
     <allow-access-from domain="*" to-ports="*" /> 
</cross-domain-policy> 

この方法では、ノードを sudo で開始する必要はありません。私の意見では、これはより簡単で安全です。root として実行している場合、ノードによって作成されたファイルの所有権にも問題がある可能性があります。

ノードがルートとして起動されている場合は、chroot するか、ポート バインド後に UID を変更することをお勧めします。

于 2011-02-14T22:39:32.530 に答える