Angular Universal - 部署到 AWS Elastic Beanstalk
Posted
技术标签:
【中文标题】Angular Universal - 部署到 AWS Elastic Beanstalk【英文标题】:Angular Universal - Deploying to AWS Elastic Beanstalk 【发布时间】:2020-08-14 09:03:09 【问题描述】:我已经尝试并失败了三天多来让这个工作,并且我对自己对这个主题缺乏了解越来越感到沮丧 - 所以这是我寻找我还没有找到的答案。
我正在使用 Angular 9.x 和 Angular Universal 9.x,但无法确定如何将其部署到服务器运行节点上的 Elastic Beanstalk。有零个教程解释了如何做到这一点,因为它们都针对那些想要在 AWS 上使用 Lambda 的人。如果有人能指出我正确的方向,那就太好了。我运行 npm run build:s-s-r --prod,并在我的 dist 文件夹中获取以下内容:
[
我已尝试通过上传压缩文件来部署此文件夹,并尝试使用我的整个应用程序 eb deploy
- 但所有这些都会导致如下错误(对于 eb 部署方法)
> blush-front-end@0.0.0 start /var/app/current
> ng serve
sh: ng: command not found
有人能指点我正确的方向吗?
【问题讨论】:
你有.extenstions
文件夹,你可以指定要安装的依赖项吗?
不,我没有其中之一-您指的是以下内容吗? docs.aws.amazon.com/elasticbeanstalk/latest/dg/…
是的。您可以指定项目需要安装在 EB 实例上的 packages。
我知道,但是我知道我的节点模块包含我需要的一切,因为我的 package.json 中有角度 CLI
那么我在这里还需要什么额外的包?
【参考方案1】:
由于缺乏关于如何将 Angular Universal 部署到 AWS Elastic Beanstalk 的在线教程,我也苦苦挣扎了几个月。现在你会很高兴知道它是多么容易。
首先,运行命令npm run build:s-s-r
构建生产环境。
在 dist 文件夹中,您可能会找到一个带有您的项目名称的文件夹。在此文件夹中,您将找到一个“浏览器”文件夹和一个“服务器”文件夹。在“server”文件夹中,它是 main.js 文件。
您的设置可能略有不同,但在阅读我的整个答案后,您将能够根据您的情况调整此说明。
压缩 dist 文件夹。
现在让我们在 AWS Elastic Beanstalk 中配置环境。
1) 在 Elastic Beanstalk 中创建环境时,选择“Web 服务器环境”,然后在 Platform branch config 中选择最后一个选项:“Node.js running on 64bit Amazon Linux”。这是非常重要的一步,因为这是使您能够配置容器选项的唯一选项。
2) 在应用程序代码上,选择“上传您的代码”并上传您的 zip 文件。
3) 点击配置更多选项
4) 单击软件框上的编辑按钮。
5) 在节点命令字段中,输入node dist/yourProjectFolderName/server/main.js
就是这样!!保存并创建您的环境。您的应用程序现在可以运行了。 :-)
【讨论】:
如果我能吻你,我会的。非常感谢! 504 网关超时 nginx/1.16.1 ¿有什么想法吗? 现在你在部署到EB服务器的文件中添加一个Procfile
,内容应该和上面提到的Node命令字段一样,但前缀是web:
所以web: node dist/yourProjectFolderName/server/main.js
以上是关于Angular Universal - 部署到 AWS Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章
在 Firebase 上部署 Angular 8 Universal (s-s-r) 应用程序
在 Google Cloud Function 或 AWS Lambda 上部署 Universal Angular
Angular Universal (s-s-r) 错误:无法在视图目录中查找视图“索引”
如何正确启动 Angular Universal 到实时服务器