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
我设法在 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