如何将node.js服务器指向域名? (我也使用socket.io)

时间:2015-04-27 00:02:58

标签: node.js deployment dns server

这是我的服务器代码:

var static = require('node-static');
var http = require('http');
var file = new(static.Server)();
var app = http.createServer(function (req, res) {
  file.serve(req, res);
}).listen(2013);

然后我得到了一大堆与socket.io有关的代码。 我刚刚在gandi.net注册了一个域名。

因此,gandi.net为我提供了输入DNS的选项。 我究竟如何从计算机中找到正确的DNS?

我通常如何运行它是Windows控制台上的node server.js。然后在浏览器的地址栏中我只做localhost:2013或者如果我从我的wifi网络上的另一个设备访问它,那么我通过在控制台中键入ipconfig来查找ipv4地址。然后我在另一台设备中输入该地址,然后是:2013年的端口。

那么我怎么能用自己的域名运行这个服务器呢?

我知道我将获得一个真正的永久服务器,但是现在我只想知道如何从我的计算机上运行它。

2 个答案:

答案 0 :(得分:1)

几周后想到同样的事情,我想我得到了答案。看看这是否可以帮到你。

简短回答 This video是我的回答。如果您不在Windows上,还可以检查this onethis one,或再次this right here

答案很长

只是为了更广泛的受众总结此问题您已经了解了如何在计算机上运行node.js.您正在使用命令行在计算机上启动节点服务器,方法是键入“node server.js”(如果“server.js”是您命名的包含服务器代码的文件)。您可能在服务器文件中选择了一个端口号(数字为3000或9000),这样您就可以通过键入localhost:3000或localhost:9000来通过浏览器访问您的工作。或者,您也可以让您的nodejs应用程序使用某种socket.io连接,这样您就可以在服务器文件中创建一个房间,并且每次打开localhost:3000或localhost:9000(或者您使用的是哪个端口)通过浏览器,它创建了一个新的用户,它添加到房间。一切都很好! 现在,您想要的是使网络可以访问,而不仅仅是您的计算机。因为如果有人使用不同的计算机输入他们的浏览器'localhost:3000'(或任何端口),他们会看到有关他们本地计算机的信息,而不是你在你的计算机上构建的那些很棒的东西,你能够通过相同的URL访问。因此,您希望将您的工作放在网上,可通过coolnodejsstuff.com这样的域名访问。但是你想知道如何让你的计算机上的server.js代码指向一个域名。在server.js代码中写出域名的URL似乎没有帮助!

以下是我遇到的内容:您需要的是一台将在线运行的服务器(而不是您的计算机)。这与您为域名购买托管时的情况类似,区别在于您申请简单托管时无法访问服务器的功能。您需要查找的是 专用服务器 ,以便您可以在安装nodejs时手动安装该服务器上的内容(如nodejs等)在您的计算机上通过命令行。然后,您将在专用服务器上上传所有文件并安装服务器上所需的文件(nodejs等)。nodejs应用程序始终指向正在运行的计算机上的IP地址的“localhost”。当您获得专用服务器时,它会附带一个IP地址。这就是上传文件将指向的位置,这意味着,如果您正确安装了所有内容,并且正确启动服务器,如果您在URL字段中输入专用服务器的IP地址,您应该能够通过浏览器访问您的nodejs应用程序(后跟冒号和您在代码中指定的端口)。 但是,您希望人们通过有意义的网址访问您的节点应用,而不是一堆数字,您希望应用指向人们可以更容易记住的域名。为此,您只需更改域名信息(提供您自己的域名)即可满足您购买专用服务器的人的要求。

好的,但你怎么做呢?!

Here是我从中获得解决方案的视频。它很好地解释了我刚才所说的一切。如果您按照这些说明操作,您应该可以在不到一小时的时间内在线获取节点应用程序。它主要是针对Windows用户使用的,因此使用的软件在linux上可能不太好(putty,winscp等)。 但是这些其他视频更适合Mac用户(顺便说一句,putty的Linux替代方案是 flightplan ,所以如果这些视频无法帮助你的Linux用户,只需快速谷歌搜索用'deploy nodejs flightplan'这样的词来说明

轶事我的应用程序无效,直到我更改了我在server.js文件中传递端口号的方式,以匹配视频中的示例。 我相信我在说

var app = express();
var server = app.listen("3000");

我将其改为

后开始工作
var app = express();
var server = app.listen(process.env.PORT || 3000);

而且,如果您使用的是socket.io连接,则可能必须从客户端启动连接。做var socket = io.connect();就足够了!你不需要传递'localhost:3000'的东西,因为默认它会遵循localhost路径。

有!你应该被设置!如果这有点冗长而罗嗦,我道歉...我只是希望有人在我努力寻找答案的时候以类似的方式为我打破这一点!

无论如何,我希望这对某人有用!

答案 1 :(得分:0)

它应该在端口80上侦听。

域名提供商的DNS设置应指向您的传出IP地址