将简单的网站前端和节点后端迁移到Azure Web App

时间:2016-10-19 20:35:36

标签: node.js visual-studio azure azure-web-sites

这应该比原来要容易得多,所以我想知道我是否错过了Azure平台或Visual Studio固有的尴尬内容。

我在Visual Studio中有两个独立的项目(类似于这个link)一个简单的HTML / JS / CSS网站前端和一个node.js服务器后端,用于管理它的信息。在本地测试时,所有功能都可以在VS中进行操作(节点后端向Azure中的其他资源发出请求并返回结果),但对于我的生活,似乎没有任何简单的方法将此前端和后端发布到单个Azure Web App,因为应用服务将在启动时将其自己的端口分配给服务器(实际上,没有静态端口#我无法敲击后端)。

我是否遗漏了一些显而易见的事情,或者我是否尝试使用Web App服务做太多事情并且需要将后端分解为VM或其他服务?我已经能够在链接中划分代码,但我无法ping或发布除根网站设置的默认目标网页以外的任何位置。

编辑:现在我真的想知道我是否在某个地方做出了错误的转变。基本节点应用程序:

var http = require('http');
var port = process.env.port || 1337;
http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World on port:' + port);
}).listen(port);

返回

Hello World on port:\\.\pipe\a1f43073-e979-4a8b-b4ec-ec226b4760f8

编辑2:有些挖掘导致https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#network-endpoint-listening提供信息。但是,它仍然暗示:

  

连接尝试本地地址(例如localhost,127.0.0.1)和计算机自己的IP将失败, ,如果同一个沙箱中的另一个进程已在目标端口上创建了一个侦听套接字。

因此,如果我正确地读取了我的节点服务器启动的过程应该创建一个监听套接字......某事情?也许是本地主机?如果我在这方面取得进展,我会发布更新,但仍然欢迎提出意见和建议。

编辑3:我暂时解决了我的问题,将前端封装到Express框架项目中,路由触发了后端操作,但这远非理想。我无法成功启动将侦听nodejs中的套接字的服务器(会出现各种错误代码)。如果有人在应用程序之间(在相同的虚拟目录或单独的虚拟目录中)有可用的内部沙箱通信的示例,我可以构建它以确保它不是我的环境。我会在时间允许的情况下发布自己的代码。

2 个答案:

答案 0 :(得分:0)

您是否正在寻找与此相似的代码:

app.set('port', process.env.PORT || 3000);

var server = app.listen(app.get('port'), function() {
    debug('Express server listening on port ' + server.address().port);
});

我建议创建一个空节点应用并将其部署到Azure Web Apps。然后将其与您尝试移植的应用进行比较以查看差异

答案 1 :(得分:0)

要将localhost:8001重定向到azutanga.com,您可以使用nginx创建虚拟主机。要使用Web应用程序的许多端口,您可以使用Express将许多应用程序对象作为要使用的端口。或者使用集群(https://nodejs.org/api/cluster.html)来共享TCP连接,如java套接字。