2011-08-11 6 views
26

下のデーモンとしてのNode.js + expressjsアプリケーションのNODE_ENVを設定: http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/私はこれらの命令で無事作業デーモンを得たUbuntuの

が、これは開発モードでアプリケーションを起動するため、ログファイルはソケットでスパムます.ioデバッグログ。

upstart-conf-fileでNODE_ENVをプロダクションに設定しようとしましたが、成功しませんでした。

script 
    export HOME="/root" 
    export NODE_ENV=production 

    exec /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1 
end script 

が機能しませんでした。本番でのNode.jsを使用している場合

答えて

26

に回転することになる

をお試しください私のセットアップで
exec NODE_ENV=production /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1 

私はあまりユーザーとしてsudoingてるので、

exec sudo -u some-user NODE_ENV=production /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1 
です

となっているので、別のユーザーから起動しているので別の環境がある可能性があります。私はここで初心者ですが、それは私のために働く。 Herokuの使用にNODE_ENVを設定する

+1

最初のオプションは動作せず、次のエラーがスローされます: '/ proc/self/fd/9:3:exec:NODE_ENV = production:not found' – kontinuity

+0

これは私がbash構文に依存しているためです。使用しているシェルを確認し、それに応じてコマンドを修正してください。 – Yuval

+3

これで終わり 'スクリプト 輸出NODE_ENV =生産 幹部は/ usr/binに/ノード/someapp/server.js >> /var/log/someapp.log 2>&1 エンドscript'に私のために働いていたものです – kontinuity

14

は、私はあなたのプログラムデーモン化するためにforever.jsを使用することをお勧めし https://github.com/nodejitsu/forever

NPMを使用してインストールします。[sudo] npm install forever -g

export NODE_ENV=productionと実行forever start app.jsあなたはまた、どこに指定することができますエラーと標準出力ログを入れてください。

+1

ありがとうございました。これをチェックします。 – pkyeck

+0

さらに高度なものについては、次の記事も参照してください。https://github.com/learnboost/cluster – TiansHUo

+0

最後に@TiansHUo最後のコメントを明確にするために、ClusterはRespawnのUpstartのような問題を解決しません。アップスタート+モント、またはフォーエバー。 –

18

ここでは、使用できる簡単な起動スクリプトを示します。 Upstartは、スクリプトセクションやあまりにも多くの組み込みシェル構文を使用せずに直接行う必要があるすべての機能をサポートするようになりました。この環境変数(env)を含み、ディレクトリ(chdir)、ユーザー/グループ(setuidsetgidを)作業、(console log)取扱ログなどあなたのログファイルを処理し、/var/log/upstart/your_app.log

description "start and stop the example express.js/node.js server" 
author "John Doe <[email protected]>" 

start on filesystem and started networking 
respawn 
console log 
chdir /opt/your_app 
setuid your_app_user 
setgid your_app_user 
env PATH=./node_modules/.bin:./node/bin:/usr/bin 
env NODE_ENV=production 
exec app/server.js 
+0

それを試みます。ありがとうございます – pkyeck

4

heroku config:set NODE_ENV="production" 
1

のUbuntu /成り上がりは、質問に記載されているが、FreeBSDの/システムシェルデーモンのための答えを探している間、私はここに来ています。

下の行は、「開発」環境でアプリを開始しました:

exec node path/to/start/script.js 

下の行は「生産」の環境でアプリを開始しました:

NODE_ENV=production exec node path/to/start/script.js 

それがこれを理解するために私にしばらく時間がかかりました私は共有すると思った。

関連する問題