AWS EC2 Angular 5 ng不通过浏览器连接

时间:2018-02-14 04:56:15

标签: node.js amazon-ec2 npm-install angular5

我设法让我的Angular 5应用程序在AWS EC2 Ubuntu上运行...

启动标准Ubuntu实例,使用PuTTy进入shell,安装节点,进入下4条“魔术线”......

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
source ~/.profile

让我的公司dir,为@ angular / cli做了全局npm安装,克隆了我的git,将dir更改为项目子文件夹,为@ angular / cli做了本地npm安装,然后为我的项目运行了npm install。此时,我能够在上述任何步骤中运行ng服务而没有严重错误!呼!

它显示它很高兴在端口4200上运行。我甚至用netstat -anp检查了grep 4200以及telnet 127.0.0.1 4200.是的所有工作。

然后我进入AWS仪表板,为我的实例创建了一个安全组,使用默认值打开HTTP和HTTPS,然后为Port Range 4200添加一个自定义TCP规则,打开到Anywhere,并保存。但是,当我进入浏览器并输入http://xx.xx.xx.xx:4200(其中x是AWS分配给我的实例的公共IP)时,我得到“无法建立与服务器的连接”错误。

我错过了什么?

3 个答案:

答案 0 :(得分:6)

首先,请注意ng-cli中的内置网络服务器无意用于生产。我强烈建议您在生产时找到更好的解决方案。

要从其他设备/互联网访问该网站,您必须指示ng-cli在正确的IP地址上提供服务。您可以通过运行ng serve --host x.x.x.x

来实现

如果您输入服务器LAN-IP(取决于您的设置),它可能会有效。您可以通过运行ifconfig找到它。

但是,由于您正在托管静态网站,因此另一种解决方案是在S3上托管应用程序。为此,请运行ng build --prod并将dist文件夹上传到AWS S3。他们有一个here的教程。

或者,您可以使用Apache或nginx之类的东西来为您的EC2实例提供已编译的应用程序。

答案 1 :(得分:1)

您需要先检查EC2实例中的几件事

  • 首先检查端口4200或要用于Angular的任何端口是否已添加到安全组中以接受流量。

  • 在允许端口运行后,使用正确的域名或EC2实例中显示的公共DNS进行服务

  

“ ec2-xx-xx-xx-xx.eu-west-1.compute.amazonaws.com”

修补程序:

如果在localhost:4200上遇到此错误,则可以尝试ng serve --host 0.0.0.0

要添加特定端口,可以执行以下命令:ng serve --host 0.0.0.0 --port 4200

希望这可以解决您的问题。

答案 2 :(得分:-1)

使用

ng serve  --port 4202 --host 0.0.0.0 --publicHost ec2-your-public-host-link.com