如何在AWS中运行Angular 7服务器端渲染(SSR)通用构建

时间:2019-08-09 07:43:03

标签: angular amazon-web-services angular7 angular-universal server-side-rendering

  

这个问题已经问了,但不能解决我的问题。

我正在尝试使用Angular-7来运行我的Server Side Rendering产品,具体步骤如下:

  1. 我使用此cmd ng add @nguniversal/express-engine --clientProject
  2. 创建一个构建
  3. 然后使用此cmd npm run build:ssr && npm run serve:ssr
  4. 启动我的通用应用

此步骤之后,它将创建以下文件夹和文件:

enter image description here

AWS中的下一步:

  1. 将dist转移到您的服务器上
  2. 安装PM2
  3. npm install pm2 -g
  4. pm2 start dist / server.js
  5. 创建使用自定义TCP入站的安全组

尝试访问我的项目网址后,它显示如下 enter image description here

我不知道如何解决这个问题。预先感谢。

1 个答案:

答案 0 :(得分:0)

这里的问题是,默认情况下,作为Web服务器的apache / nginx在端口80而不是在角度服务器上渲染输出。 但是,您的Angular Express服务器未在端口80上运行(浏览器期望),因此,您必须将其实际运行的端口转发到端口80(默认为http端口)。 这里有一些更多细节:

Nginx: https://eladnava.com/binding-nodejs-port-80-using-nginx/

如果您想在AWS上托管您的节点应用程序(Angular ssr是该应用程序),我个人建议使用elasticbeanstalk节点bean。默认情况下,这将为您处理所有这些,您只需“压缩”所拥有的文件夹并上传。 其他所有内容(包括pm2)将由该内容处理。

Apache作为代理: 如果要使用apache作为代理,则必须为您的域创建一个虚拟主机并添加以下代码:

<VirtualHost node.example.com:80>   
    ServerName node.example.com  
     ProxyPass / http://localhost:8000/ connectiontimeout=5 timeout=30  # optional timeout settings  
</VirtualHost>