私はノードのバージョン.0.6.5のnpmパッケージexpressバージョン2.5.2を使用しています。私はDebian 4.4.5でbashバージョン4.1.5を実行しているようです。node.jsをプロダクションモードでsudo経由で実行するにはどうしたらいいですか?
サーバーを運用モードで実行しようとしていますが、まだ開発モードで実行されています。
私はbashシェルで次のコマンドを実行します。
$ export NODE_ENV=production
$ echo $NODE_ENV
production
$ sudo echo $NODE_ENV
production
$ sudo node bootstrap.js
私はbootstrap.js内でこのコードを持っている:
development
:
var bootstrap_app = module.exports = express.createServer();
//...
console.log(bootstrap_app.settings.env);
、ここでは、私は標準に印刷見るものです
私の使用方法やシステムに問題がありますか?
編集: ThiefMasterは、この問題が実行中のノードからrootであることを正しく認識してくれてくれてありがとうございます。 ThiefMasterは、iptablesを使用してポート80から特権のないポートに転送することを提案しましたが、私のシステムではエラーが表示されます。この議論をsuperuser.comまたはserverfault.comに移動する(続くリンク)
セキュリティ上の理由から、sudoを使用するとほとんどの環境変数は設定解除されます。したがって、sudoersファイルを変更せずにその環境変数をノードに渡すことはできません。しかし、とにかくrootとしてノードを実行すべきではありません。ポート80に必要なだけの場合は、特権のないポートでノードを実行し、iptablesを設定してポート80をそのポートにマップするように設定します。 – ThiefMaster
提案をありがとう! ポート80以外のアプリケーションを実行し、環境を正しくプロダクションとして識別しました。 これを回答として投稿してください - 私はそれを受け入れます。 もう一度おねがいします! – Aaron
私はちょうどiptables(iptables -t -nat L)のインストールと使用を試み、 "iptables v1.4.8:iptablesテーブル' nat 'を初期化できません:許可が拒否されました(rootでなければなりません) おそらくiptablesかあなたのカーネルアップグレードする必要があります。" Debian 4.4はむしろ古いバージョンですが、/ proc/versionには" Linux version 3.1.9-vs2.3.2.5 "と書かれています – Aaron