无法从浏览器

时间:2015-09-01 10:33:36

标签: node.js express

我是节点和表达新手。我按照Pedro Teixeria的“Professional Node.js”一书中的说明进行操作。我在Rackspace Cloud托管的CentOS服务器中安装了Node.js.然后我安装了Express -

$ npm install -g express@2.5.x

安装了Express 2.5.11,我可以用

确认
$ which express

然后,我使用以下命令初始化我的应用程序

$ express my_app

这将创建一个包含默认文件的文件夹my_app。最后它还告诉我安装依赖项,我使用以下命令。进入my_app文件夹并发出命令

$ npm install

我编辑了routes / index.js文件。它现在就像这样 -

/*
 * GET home page.
 */
module.exports = function(app){
app.get('/', function(req, res){
  res.render('index', { title: 'Express' });
});
};

我在路由中创建了另一个名为users.js的文件。所以我的routes / users.js看起来像这样

/*
 * GET home page.
 */
module.exports = function(app){
app.get('/users/:name', function(req, res){
  res.render('users/profile', { title: 'User Profile' });
});
};

然后我编辑了my_app中的app。文件(即主应用程序文件夹)。我的应用程序现在看起来像这样 -

/**
 * Module dependencies.
 */

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

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

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

// Routes

require('./routes/index')(app);
require('./routes/users')(app);

app.listen(5124, function(){
  console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
});

现在,我在my_app文件夹中使用以下命令启动服务器 -

$ node app

我看到输出“Express server侦听端口5124处于开发模式”

但是,当我打开浏览器并输入URL 50.56.246.162:5124/users时,我看到Fifrefox报告“无法连接” 但是,我至少应该看到一些错误。说明说,它至少应该显示“找不到视图”用户/索引“,试过:等等等。

由于我以root身份从Linux shell完成了上述所有操作,因此我也更改了权限,以便可以从浏览器中查看。另外,我认为我不必编辑iptables来打开端口。 我究竟做错了什么。 任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

使用Express应用程序生成器安装最新版本可能是个好主意......

npm install express-generator -g

express my_app

cd my_app && npm install

SET DEBUG=my_app:* & npm start

答案 1 :(得分:0)

根据我对Rackspace的经验,rackspace不允许您访问80和8080以外的端口。如果您使用的是共享环境,则端口80将由apache使用。解决此问题的方法是安装nginx并在端口8080上运行它,然后为节点应用程序创建反向代理。也就是说,任何进入共享主机端口8080的请求都将被路由到您运行节点实例的任何端口。

  1. 安装nginx
  2. 编辑/etc/nginx/conf.d]/default.conf文件,如下所示

    服务器{     听0.0.0.0:8080;     server_name test.server;     access_log /var/log/nginx/test.server.log;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header HOST $http_host;
        proxy_set_header X-NginX-Proxy true;
    
        proxy_pass http://127.0.0.1:5124;
    }
    

    }

  3. 之后,启动节点进程并让它在后台运行。更好的选择是使用像pm2这样的流程管理器。现在,如果您在浏览器中转到50.56.246.162:8081,则应该转到应用页面。