我正在尝试弄清楚如何在我的Ubuntu 10.04 LTS服务器上部署Node JS。我读过许多不同的博客和文章,解释了多种不同的方式。大多数似乎已经过时了,或者似乎没有真正发挥作用。
似乎最简单的解决方案是使用像Forever这样的东西? ......或Monit或Monit或Supervisor。这是对的吗?
我仍然不明白的一件事是没有使用像Ngnix这样的东西,我怎么能真正得到我的域名(例如example.com)来实际指向我的Node JS应用程序并且它正在运行端口?
非常感谢任何指导。我不是这方面的专家,所以请原谅我在这里缺乏知识。 (我正在尽我所能!:)
更新:我问这个的原因是在我的服务器上我有Ngnix运行我的静态/ Django项目。我想要使用相同的服务器来处理我正在搞乱的一些示例Node JS应用程序。我已经关注了关于vhosts和Connect with Node JS的链接,这很好用,但我仍然不明白如何让我的某个域实际指向我服务器上的Node应用程序?
答案 0 :(得分:16)
您需要将域名的概念与实际服务器分开。域名指向到服务器。当浏览器(或其他客户端)请求example.com时,DNS查找关联的IP地址,将浏览器指向该IP地址的服务器。
然后,浏览器会通过查看URL来选择通过哪个端口发送请求。例如,对example.com:345的请求将选择端口345.如果未指定,默认情况下,在使用HTTP时,它使用端口80.
因此,浏览器已通过端口80发送了请求。现在,在您的服务器上,有一个程序正在侦听到该端口。对你来说,它会nginx。 Nginx读取请求(“哦,你正在寻找index.html”)并传回你请求的内容。
在您的场景中,Node.JS取代了Nginx。要使Node.JS响应,它还需要侦听端口并进行适当的响应。这就是你的代码所在的地方:
require('http').createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
这将启动服务器,侦听端口1337.任何发送到example.com:1337的请求都将由此Node.JS应用程序以“Hello World”响应。
tl; dr:您的域名已指向您的服务器。您可以访问example.com:1337访问您的应用程序,其中1337是您的端口。