2

古いPCを見つけたのでNode.js専用のテスト機として使いたい。

基本的に、win マシンでアプリを作成し、samba 経由でノード フォルダーにコピーして、ssh 経由で起動したいと考えています。後で、upstart スクリプトを追加し、それを samba と共にサーバーにコピーして、再起動するとアプリが毎回自動的に起動するようにします。

  1. 専用の Ubuntu サーバー上のネットワークで Node.js アプリを適切に実行するには、何をインストールする必要がありますか? これが私が思いついたリストです。間違っていたら訂正してください。他に何かありますか?
    • ssh
    • samba (ftp または sftp を使用する必要がありますが、これは閉じた内部ネットワークであり、さまざまな OS からアクセスする必要があるため、セキュリティの問題を考慮せずにファイルを共有する最も簡単な方法は samba です..ほとんどの場合、単純なテキストを使用します編集者)
    • 「基本的なubuntuサーバー」ファイル?
    • 「ランプ」(?)
    • node.js
    • ノード パッケージ マネージャー。
  2. Ubuntu サーバーに最新の Node.js、npm、および init ファイルをインストールする方法を教えてください。シンプルなものがないことがわかりましたsudo apt-get install nodejs npm
  3. アプリを起動するにはどのようなスクリプトが必要ですか? また、それらをどこに配置すればよいですか (ネイティブ スクリプトを優先)?

編集

いくつかのテストの後、私は今良い点にいます。ここに私がしたことがあります:

  1. 最小限の CD から ubuntu をインストールしました
  2. パッケージの選択に関しては、sshとsambaのみを選択しました
  3. システムを更新する
  4. node.js を実行するために必要な依存関係をインストールします
  5. git から最新のノードをインストールする
  6. 私の場合はsambaをセットアップし、スクリプト用にフォルダー/ var/nodejsを作成しました
  7. testApp.js を nodejs フォルダーに配置します
  8. ssh から testApp.js を開始します。*うまくいきません

3-システムを更新する

sudo apt-get update && sudo apt-get upgrade

4 依存関係

sudo apt-get install g++ curl libssl-dev apache2-utils git-core make

5 インストール ノード

git clone git://github.com/ry/node.git
cd node
./configure
make
sudo make install

6セットアップサンバsudo nano /etc/samba/smb.conf

[nodejs]
comment = nodejs
workgroup = WG
security = USER
path = /var/nodejs
server string =Node JS
browsable = yes
read only = no
writeable = yes
create mask = 0777

7-testApp.js

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello Node.js\n');
}).listen(80, "192.168.0.1");
console.log('Server running at http://192.168.0.1:80/');

8-これですべてが実行されるはずですが...しかし:

起動コマンドの前に「sudo」を追加する管理者としてのみnodejsを実行できます。それ以外の場合は、1000未満のほとんどのポートにアクセスできない通常のユーザーとして実行できます。

A. sudo を使用せずにポート 80 でアプリを起動するにはどうすればよいですか?

そして明らかcommand sudo node /var/nodejs/testApp.js に、端末を閉じるとアプリを起動すると、アプリは停止します。

そのために、init スクリプトを使用します。

いくつか読んだ後、upstartがubuntuサーバーにネイティブにインストールされていることがわかりました。これはおそらくアプリを起動する最良の方法です。

B. appname と .conf 拡張子を付けてスクリプトを /etc/init/ に配置する必要があることはわかっていますが、それはどのように機能しますか?

4

5 に答える 5

3

あなたの質問によると、あなたは私と同じくらい怠惰でせっかちに聞こえるので、ソースからビルドする代わりに PPA を使用してください。node.js ubuntu の指示に従ってください。

実際、私はとても怠け者で、ポート番号を入力することを拒否しているため、すべての node.js アプリケーションを nginx でプロキシしています。(これは最良の方法でもあり、複数のサーバーがポート 80 で「リッスン」するように指示できる唯一の方法です)。[Nginx のインストール ガイド] nginx を起動したら、プロキシについてはChris Lea のガイド( http://wiki.nginx.org/Install ) に従ってください。

ところで、Apache をインストールした場合は、必ずパージしてくださいsudo apt-get purge apache*。これはあなたのphpアプリを壊す可能性が最も高いですが、それがノードを正しく実行している理由ですか? nignxでphpを実行する方法をググるだけです。

今度はupstartとmonitです。このガイドに従ってください。注:ガイドにはタイプミスがあるため、コメントを注意深く読んでください。

サマバに関しては、あなたは自分でそこにいます。

TL;DR

答え A:ガイド

答え B:sudo cp my-node-app.conf /etc/init; sudo service my-node-app start

編集 1

Upstart は、バックグラウンド プロセスを開始するための Ubuntu のネイティブ ユーティリティです。詳細はこちらをご覧ください。

#!upstart
description "node-app"
author      "me"

env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

respawn
start on runlevel [23]

script
    #set enviroment vars here
    export NODE_ENV=production
    #Uncommit if you need a pid file for monit
    #echo $$ > /var/run/node-app.pid
    exec /usr/bin/node /path/to/app.js 2>&1 >> /path/to/log/file/app.log
end script

#Logs start and stop time timestamps to the file
pre-start script
  echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /path/to/log/file/app.log
end script

pre-stop script
  #Uncomment if you need a pid file for monit
  #rm /var/run/yourprogram.pid
  echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /path/to/log/file/app.log
end script

次を使用してプロセスを開始および停止しますservice

sudo service node-app start

start必要に応じて停止またはステータスで切り替えます。

monit を使用していない場合は、pid 行を削除してください。monit を使用することを強くお勧めします。プロセスが終了したり、ログ ファイルでエラーが発生した場合に電子メールでアラートを送信するように構成できるからです。

于 2013-07-09T22:01:26.380 に答える
0

Ubuntu の場合: ubuntu ユーザーによる Nodejs + socket.io の起動:

more /etc/init/noded.conf

# Ubuntu upstart file at /etc/init/noded.conf

description "noded.conf" 

author      "Nguyen Thanh Binh"

start on runlevel [2345]

stop on runlevel [06]

respawn

script

su - ubuntu -c "NODE_ENV=test exec sudo /usr/bin/node /home/ubuntu/server.js" >> /home/ubuntu/log.log &


end script
于 2013-08-29T10:22:09.273 に答える