【发布时间】:2018-01-30 00:12:38
【问题描述】:
为了熟悉节点、AWS 和网络托管,我决定创建一个托管在节点/express 服务器上的简单网络应用程序,然后尝试将其托管在 AWS 实例上。
我的应用程序在我的机器上本地运行,这是 server.js 代码:
import express from 'express';
import path from 'path';
import open from 'open';
import config from '../webpack.config.dev';
import webpack from 'webpack';
const port = 80;
const app = express();
const compiler =webpack(config);
app.use(express.static('dist'))
app.use(require('webpack-dev-middleware')(compiler,{
noInfo: true,
publicPath: config.output.publicPath
}));
app.get('/', function(req, res){
res.sendFile(path.join(__dirname, '../src/index.html'));
});
app.listen(port, function(err){
if(err){
console.log(err);
}else{
open('http://localhost:' + port);
}
});
但是当我尝试在 AWS 实例上部署和运行它时,我似乎无法访问正在运行的节点服务器,
以下是我遵循的步骤:
1。要启动 AWS 实例,我选择 Amazon Linux instance
2.对于安全规则,这是我应用的入站规则:
3。我 SSH 进入我的实例,安装节点,然后 git 从 github 获取我的应用程序
4。这是我克隆存储库并安装节点依赖项后我的 home/ec2-user/testRep 文件夹的样子:
5。我使用npm start 运行服务器
6.服务器似乎启动没有任何问题:
但是当我使用浏览器访问公共 DNS 实例时,我发现找不到站点
不确定我在这里做错了什么。
【问题讨论】:
-
您是否确认您在公共网络中创建了您的实例?有公网IP吗?您是否将 nodeJS 服务器运行为 0.0.0.0:80?
-
如果您使用的是 webpack,请尝试将启动命令放在末尾:--host 0.0.0.0。启动命令应该类似于 -> webpack-dev-server --open --config webpack.dev.js --host 0.0.0.0。 (根据您的环境替换产品的开发服务器)
-
不需要公共(弹性)IP,因为 AWS 生成 FQDN 并使用端口 80。尝试使用 telnet
telnet xxx.ec2domainanme 80进行测试,看看是否可以通过。 -
我尝试通过 puty 进行远程登录,似乎它给出了“连接被拒绝”
标签: node.js amazon-web-services amazon-ec2