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 到实时服务器

Angular Universal 与 i18n(服务器端渲染)

Angular Universal:未定义导航器