如何在VPS上设置一个团队的Nodejs开发环境
如何在VPS上设置一个团队的Nodejs开发环境
###介绍
在这篇教程中,我们将设置一个Node.js开发环境,它可以让新成员快速融入到你的Node.js应用程序的开发进程中;如果是开发人员想同时创建一个应用程序的多个版本,此方法同样适用。
这一方法是基于Unix sockets,而不是端口,并且Node.js与Nginx交互。我们假设你已经从<code>login.dev.nodeapp.com</code>弄到了应用程序开发版本,另外,我们会在/tmp
目录为每位开发者保留sockets,例如<code>/tmp/login.dev.nodeapp.com.sock</code>.
<br /> ###前提要求 你需要安装好Nginx和Node.js。还有,你应该有一个域名(比如 <code>nodeapp.com</code>)连接到你的VPS。 注意:你应该给你的域名设置通配符CNAME记录,在DigitalOcean里还有关于这些话题的教程。
• 如何在Ubuntu上安装Nginx • 如何在VPS上安装Node.js和NVM • 如何用DigitalOcean创建一个主机名
<br /> ###设置Nginx 我们应该创建一个新的Nginx配置文件<code>/etc/nginx/sites-available/dev.nodeapp.com</code>,包含:
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
}
}
<br /> 将这个配置链接到sites-enabled文件夹,并重启Nginx:
ln -nfs /etc/nginx/sites-available/dev.nodeapp.com /etc/nginx/sites-enabled/dev.nodeapp.com
/etc/init.d/nginx restart
<br />
现在Nginx已经准备好接收用户请求,并根据URL引导他们到开发人员的app副本,例如:
http://ivan.dev.nodeapp.com -> /tmp/ivan.dev.nodeapp.com.sock
http://anna.dev.nodeapp.com -> /tmp/anna.dev.nodeapp.com.sock
<br />
###修改Node.js App 我们将使用一个最小的web服务器实例,但同样的修改也适用于任何Node.js服务器(如express)。 问题是,我们需要将默认端口监听行为改为socket监听:
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)
<br />
现在,你可以运行你的应用程序<code>node app.js</code>并访问它:http://yourlogin.dev.nodeapp.com。
注意:当Node.js开始监听sockets,它会创建一个具体的文件。但如果socket文件早已存在,Node.js会监听失败,所以我们应该确保从之前的运行中移除掉socket。
另外一个事,我们应该创建一个所有人可以访问的socket,那样Nginx就可以使用它。这对开发没什么影响,但可能不利于生产环境。
恭喜,任务完成!现在要做的就是让一个新成员在你的VPS上创建用户。
如何在VPS上设置一个团队的Node.js开发环境
在这篇教程中,我们将设置一个Node.js开发环境,这可以让新成员快速融入到你的Node.js应用程序的开发进程中。这种方法是基于Unix sockets,而不是端口,并且Node.js与Nginx交互。我们假设你已经从login.dev.nodeapp.com
获取了应用程序开发版本,并且,我们在/tmp
目录为每位开发者保留sockets,例如/tmp/login.dev.nodeapp.com.sock
。
前提要求
你需要安装好Nginx和Node.js。另外,你应该有一个域名(比如nodeapp.com
)连接到你的VPS。
设置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
sudo systemctl restart nginx
现在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 App
我们将使用一个最小的Web服务器实例,但同样的修改也适用于任何Node.js服务器(如Express)。
以下是修改后的Node.js应用代码:
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开始监听sockets时,它会创建一个具体的文件。但如果socket文件早已存在,Node.js会监听失败,所以我们应该确保从之前的运行中移除掉socket。另外,我们应该创建一个所有人都可以访问的socket,以便Nginx可以使用它。这对开发没有问题,但在生产环境中可能需要更安全的设置。
恭喜,任务完成!现在要做的就是让一个新成员在你的VPS上创建用户。
希望这篇教程能帮助你快速设置一个团队的Node.js开发环境。如果你有任何问题或建议,请随时留言!
顶一下,… DigitalOcean 上有好多教程, 你们是要把它们全都翻译过来吗?
thank u,感觉有意思的就拿过来分享一通!
如何在VPS上设置一个团队的Node.js开发环境
在这篇教程中,我们将设置一个Node.js开发环境,它可以让新成员快速融入到你的Node.js应用程序的开发进程中。如果是开发人员想同时创建一个应用程序的多个版本,此方法同样适用。
前提要求
你需要安装好Nginx和Node.js。还应该有一个域名(比如 nodeapp.com
)连接到你的VPS。
注意:你应该给你的域名设置通配符CNAME记录,在DigitalOcean里还有关于这些话题的教程。
- 如何在Ubuntu上安装Nginx: https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-12-04-lts-precise-pangolin
- 如何在VPS上安装Node.js和NVM: https://www.digitalocean.com/community/tutorials/how-to-install-node-js-with-nvm-node-version-manager-on-a-vps
- 如何用DigitalOcean创建一个主机名: https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-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
sudo systemctl restart nginx
修改Node.js App
我们将使用一个最小的Web服务器实例,但同样的修改也适用于任何Node.js服务器(如Express)。
首先,需要将默认的端口监听行为改为Socket监听。以下是示例代码:
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开始监听Socket时,它会创建一个具体的文件。但如果Socket文件早已存在,Node.js会监听失败,所以我们应该确保从之前的运行中移除掉Socket。
总结
恭喜,任务完成!现在要做的就是让一个新成员在你的VPS上创建用户。这样,每个人都可以有自己的Socket,从而避免冲突并方便管理。
希望这篇教程对你有帮助!