AWS EC2 Angular 5 ng 服务未通过浏览器连接

AWS EC2 Angular 5 ng serve not connecting via browser

我设法在 AWS EC2 Ubuntu...

上安装了我的 Angular 5 应用 运行ning

启动标准Ubuntu实例,使用PuTTy到shell中,安装节点,进入下一个4"magic lines"...

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

创建了我的公司目录,为@angular/cli 进行了全局 npm 安装,克隆了我的 git,将目录更改为项目子文件夹,为@angular/cli 进行了本地 npm 安装,然后 运行 npm install 为我的项目安装。此时,我能够 运行 ng serve 在上述任何步骤中都没有出现严重错误!哇!

它表明它在端口 4200 上很高兴地 运行ning。我什至检查过 netstat -anp | grep 4200 以及 telnet 127.0.0.1 4200。是的,一切正常。

然后我进入 AWS 仪表板,为我的实例创建了一个安全组,使用默认值打开 HTTP 和 HTTPS,然后为向任何地方开放的端口范围 4200 添加一个自定义 TCP 规则并保存。但是,当我转到浏览器并输入 http://xx.xx.xx.xx:4200(其中 x 是 AWS 分配给我的实例的 public IP)时,我收到 "can’t establish a connection to the server" 错误。

我错过了什么?

首先,请注意 ng-cli 中的内置网络服务器不打算用于生产。如果这是用于生产,我强烈建议您找到更好的解决方案。

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

如果您输入服务器 LAN-IP(取决于您的设置),它可能会起作用。你可以通过 运行ning ifconfig.

找到它

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

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

您需要先检查 EC2 实例中的一些内容

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

  • 允许端口 运行 使用正确的域名或 EC2 实例中显示的 Public 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

希望这能解决您的问题。

使用

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