開発者ドキュメント

チームのVPSでNode.js開発環境をセットアップする方法

序章


このチュートリアルでは、Node.js開発環境をセットアップします。これにより、Node.jsアプリケーションの開発プロセスに迅速に新しいチームメンバーを含めることができます。 この方法は、開発者がアプリケーションの複数のバージョンを同時に作成する場合にも適用できます。

この方法は、Node.jsがポートではなくUnixソケットを介してNginxと対話することに基づいています。 アプリケーションの開発バージョンがlogin.dev.nodeapp.comにあると仮定しましょう。 さらに、/tmp/login.dev.nodeapp.com.sockのように、すべての開発者のソケットを/tmpディレクトリに保持します。

要件


NginxとNode.jsをインストールする必要があります。 さらに、VPSにリンクされたドメイン(たとえば、nodeapp.com)がすでにあると想定します。 :ドメインのワイルドカードCNAMEレコードも設定する必要があります。 DigitalOceanには、これらのトピックに関するよく書かれたチュートリアルがすでにあります。

Nginxのセットアップ


以下を含む新しいNginx構成ファイル/etc/nginx/sites-available/dev.nodeapp.comを作成する必要があります。

server {

    listen 80; 

    server_name ~^(?<login>[a-z]+)\.dev\.nodeapp\.com$;

    location / {

        proxy_pass http://unix:/tmp/$login.dev.nodeapp.com.sock:$uri$is_args$args;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }   
}

この構成をsites-enabledフォルダーにリンクし、Nginxを再起動します。

ln -nfs /etc/nginx/sites-available/dev.nodeapp.com /etc/nginx/sites-enabled/dev.nodeapp.com
/etc/init.d/nginx restart

これで、Nginxはユーザーリクエストを受け入れ、URLに応じて開発者のアプリコピーに誘導する準備が整いました。 例えば:

http://ivan.dev.nodeapp.com -> /tmp/ivan.dev.nodeapp.com.sock
http://anna.dev.nodeapp.com -> /tmp/anna.dev.nodeapp.com.sock

Node.jsアプリの変更


Node.js の最小限のWebサーバーの例を使用しますが、同じ変更を任意のNode.jsサーバー(Expressなど)に適用できます。

重要なのは、デフォルトのポートリスニング動作をソケットリスニングに変更する必要があるということです。

var fs = require('fs');
var http = require('http');

var mask = process.umask(0);
var socket = '/tmp/' + process.env.USER + '.dev.nodeapp.com.sock';

if (fs.existsSync(socket)) {
	fs.unlinkSync(socket);
}
    
http.createServer(function (req, res) {
	res.writeHead(200, {'Content-Type': 'text/plain'});
  	res.end('Hello World\n');
}).listen(socket, function() {
	if (mask) {
		process.umask(mask);
		mask = null;
	}
});

console.log('Server running at ' + socket);

これで、アプリケーションnode app.jsを実行し、http://yourlogin.dev.nodeapp.comでアクセスできます。

注: Node.jsがソケットのリッスンを開始すると、指定されたファイルが作成されます。 ただし、ソケットファイルがすでに存在する場合、Node.jsはリッスンを開始できません。 したがって、前回の実行からソケットを削除する必要があります。

もう1つは、すべてのユーザーがフルアクセスできるソケットを作成して、Nginxがそれを使用できるようにする必要があるということです。 開発には問題ありませんが、本番環境には適さない場合があります。

おめでとうございます! VPSでユーザーを作成するために新しい開発者を紹介するために必要なのはこれだけです。

投稿者: https ://github.com/artjock
モバイルバージョンを終了