在Windows Azure上托管nodejs express网站

时间:2014-03-25 18:15:41

标签: node.js azure express mimosa

我基于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站点?或者你知道我在哪里或哪里可以找到内部服务器错误吗?

1 个答案:

答案 0 :(得分:1)

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

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

这并不能完全回答你的代码有什么问题(对不起),但是我发布了example使用上面提到的可能有用的方法。主要的部署文件是'web.config','deploy.sh'和'.deployment'以及'package.json'文件。