2011-11-29 9 views
10

権限の低いユーザでノードを実行したいと思いますか?私はフレームワークExpress.jsを使用する必要があります低特権でNode.JSを実行できますか?

+2

"権限の低いユーザー"を定義します。 –

+0

私はnode.jsをROOT権限で調整したくありません。 – Dail

+0

あなたは何をしなければならないと思いますか?私はそうする必要はなかった。 –

答えて

17

はい。あなたの正確なニーズに応じて、これを行うために利用できる多くのソリューションがあります。

ポート80でノードを実行する場合は、nginx(まだWebSocketでは機能しません)またはhaproxyを使用できます。しかし、おそらく最速と汚いが、お好みのポートにポート80をリダイレクトするiptablesのを使用することです:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8003 
sudo iptables -t nat -L 

あなたは満足している場合、その設定を保存し、確認のiptablesを行い、ブート時に点灯します

sudo service iptables save 
sudo chkconfig iptables on 
あなたがしている場合は

#!upstart 
description "nodeapp" 
author  "you" 

start on started mountall 
stop on shutdown 

# Automatically Respawn: 
respawn 
respawn limit 99 5 

script 
    export HOME="/home/user/" 
    exec sudo -u user /usr/local/bin/node /home/user/app.js 2>&1 >> /home/user/app.log 
end script 

:自動的にそれが失敗した場合、あなたはこのようなスクリプトでupstartを利用することができ、非rootとしてごnodejsサービスを開始し、それを再起動するには

アマゾンEC2のインストール、またはあなたがsudo: sorry, you must have a tty to run sudoを言うエラーが出る場合、あなたはこれであなたのexecコマンドを置き換えることができます:あなたはこの質問をしなかったが、永遠に実行し、それを維持するために、

#!upstart 
description "nodeapp" 
author  "you" 

start on started mountall 
stop on shutdown 

# Automatically Respawn: 
respawn 
respawn limit 99 5 

script 
    export HOME="/home/user/" 
    #amazon EC2 doesn’t allow sudo from script! so use su --session-command 
    exec su --session-command="/usr/local/bin/node /home/user/app.js 2>&1 >> /home/user/app.log" user & 
end script 

をそして、チェックアウトモンティ!ここはa useful guide to setting up node.js with upstart and monitです。

+0

HOMEが実際に何をしていますか? – blu

+1

あなたが使っているノードの特定のバージョン、あなたのディレクトリ構造がどのように見えているのか、そしてrootか現在のユーザーによってノードがインストールされているかどうかによって、答えはすべてと何かの間で異なります。 (私の例で '/ home/user/nodeapp'を間違って'/home/user/'のapp.jsの場所にマッチさせなければならないことに注意してください。モジュールを探すために) – Kato

+0

素晴らしい、ありがとう、情報のため – blu

関連する問題