【问题标题】:Hosting a nodejs express site on Windows Azure在 Windows Azure 上托管 nodejs express 站点
【发布时间】:2014-03-26 04:56:53
【问题描述】:

我基于the documentation of Durandal 创建了一个新的NodeJS 站点。它在本地工作。我设置了 Windows Azure 以提取 my GitHub repository 的更改,它正确地完成了。

但是,(在启用错误后)我收到了an internal server error

我检查了我的 FTP 以获取日志,但没有任何日志。有一个“Git”文件夹,但没有什么有趣的。

当我将 server.js 文件更改为 hello world 示例时,一切正常:

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\n');
}).listen(port);

这是我现在的 server.js:

var express = require('express'),
    routes = require('./routes'),
    engines = require('consolidate');

exports.startServer = function(config, callback) {

  var port = process.env.PORT || config.server.port || 1337;
  var app = express();
  var server = app.listen(port, function() {
    console.log("Express server listening on port %d in %s mode", server.address().port, app.settings.env);
  });

  app.configure(function() {
    app.set('port', port);
    app.set('views', config.server.views.path);
    app.engine(config.server.views.extension, engines[config.server.views.compileWith]);
    app.set('view engine', config.server.views.extension);
    app.use(express.favicon());
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(express.compress());
    app.use(config.server.base, app.router);
    app.use(express.static(config.watch.compiledDir));
  });

  app.configure('development', function() {
    app.use(express.errorHandler());
  });

  app.get('/', routes.index(config));

  callback(server);
};

那么,有没有人成功地在 Windows Azure 上托管过 Express(或者更具体地说,Mimosa 的 Durandal 骨架)NodeJS 站点?或者您知道如何或在哪里可以找到内部服务器错误?

【问题讨论】:

  • 如果你弄明白了,我很想知道将一个普通的 Mimosa/Durandal 应用程序转变为 Azure 托管的应用程序所需的步骤。有点像 Heroku 步骤:mimosa.io/about.html#Heroku
  • 我目前正在研究它(在我的空闲时间)。我一定会让你知道的。马克的回答让我开始了一条新的道路。找到解决方案后我会更新。
  • @DavidBashford 我已经开始工作了,blogged 对此进行了广泛的讨论。简而言之,您需要让 Azure 拉入 /dist 内容并启动 app.js,而不是 server.js。

标签: node.js azure express mimosa


【解决方案1】:

我在 Windows Azure 平台上启动了一些快速应用程序,并发现我有几个实例都在默默地失败了。我个人发现 Jay Harris 在 post 中建议的方法非常有用,因为它允许我导入依赖项(npm、bower 或其他)并运行 grunt 任务来编译项目等。

值得注意的一点是,通常在新部署之后,更新才会显示,直到在控制面板中重新启动 Azure 服务器。有时部署脚本会超时,我必须定期检查它们。

这并不能完全回答您的代码有什么问题(抱歉),但我已经使用上述方法发布了example,这可能会有所帮助。主要部署文件是“web.config”、“deploy.sh”和“.deployment”以及您的“package.json”文件。

【讨论】:

  • 我已将所有详细信息放在 blog post 中,但您说得对,最重要的部分是 web.config 和 deploy.sh(在我的例子中是 .cmd)。跨度>
  • 通读您的博文,看起来一切都很好。我没有使用过含羞草,但看起来你可以做我用 Grunt 做过的事情。在 deploy.sh 中安装 npm 包(使用 mimosa)后,您可以调用 Mimosa (build -omp) 命令将应用程序编译到您的 /dist 目录中。这样您就不必将任何已编译的代码提交到您的存储库,只需使用开发文件保持干净即可。
猜你喜欢
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 2019-01-10
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多