node.js - 将 Angular 应用程序部署到 AWS Elastic beanstalk
问题描述
我正在尝试将一个非常基本的角度应用程序部署到弹性豆茎。该项目是使用 angular cli 创建的。我没有对这个项目中的文件进行任何更改。
这是我部署应用程序所采取的步骤
- 在我的项目的根文件夹中执行“ng build”
- 将 @angular/cli 依赖项从 devDependencies 移动到 package.json 中的依赖项
- 将 dist 文件夹的内容与 package.json 一起压缩
- 将 zip 文件夹部署到配置了 node.js 平台的 AWS EB,节点版本 8.11.3,与我的本地环境相同。
当我检查 eb-activity.log 时,我总是以“npm install failed”错误告终。
我在这里错过了一些微不足道的事情吗?非常感谢将角度应用程序部署到 EB 的任何帮助。
解决方案
虽然这并没有具体回答您的问题,但我认为 Elastic Beanstalk 不是适合这项工作的工具。我强烈建议在 S3 上的静态网站上托管,如果您想要 https 和自定义域名,请将 CloudFront 分配放在它前面。
创建一个 S3 存储桶,例如 www.mydomainname.com
启用静态网站托管
将存储桶策略设置为公开阅读
{ "Version": "2008-10-17", "Statement": [ { "Sid": "PublicReadForGetBucketObjects", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::www.mydomainname.com/*" } ] }
将 Angular 应用程序在本地构建到 dist 文件夹中。
使用aws-cli将文件推送到网站
aws s3 sync dist s3://www.mydomainname.com/
该解决方案将花费几美分,远低于 Elastic Beanstalk 解决方案(EC2、EBS、ELB)。Elastic Beanstalk 非常适合单体应用程序,但它们的存在已被编号,当您谈论 SPA、IMO 时,它们的范式是错误的。
我知道我现在很幸运,但我也强烈建议使用无服务器框架来构建和部署 NodeJS API 端点,以便您的 Angular 应用程序与之交互。
推荐阅读
- visual-studio-code - 如何仅使用键盘在终端中复制一行文本?
- c++ - CMake 将目录路径解释为 LIBRARY_OUTPUT_DIRECTORY 中的绝对路径与 RUNTIME_OUTPUT_DIRECTORY 中的相对路径
- java - 如何仅使用 if 语句检查范围
- java - android studio 通过 USB 与 arduino 进行串行通信
- c - 字符串连接在 C 中不起作用 (TDM-GCC-64)
- c - 将值设置为结构指针
- javascript - 文本基线的 Illustrator 脚本 (javascript)
- hyperledger-fabric - 错误:在结构 1.2 中找不到模块“结构客户端”
- javascript - 我们可以对 mocha 中的测试错误进行排序吗?
- python - cmder 上 Windows 10 中的源命令错误