我是节点和表达新手。我按照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来打开端口。 我究竟做错了什么。 任何帮助都将受到高度赞赏。
答案 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的请求都将被路由到您运行节点实例的任何端口。
编辑/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;
}
}
之后,启动节点进程并让它在后台运行。更好的选择是使用像pm2这样的流程管理器。现在,如果您在浏览器中转到50.56.246.162:8081,则应该转到应用页面。