部署Laravel + Vue单页面应用程序到AWS的最佳实践/方式

7
我在Bitbucket上有两个存储库 - 后端 (使用Laravel作为API和入口点) 和 前端 (主应用程序前端 - VueJs应用程序)。我的目标是设置持续部署,因此每当将某些内容推送到其中一个存储库的主分支(或我选择的其他分支),它都会触发某些操作,以便整个应用程序构建并达到AWS EC2服务器。
我已经考虑/尝试了以下内容:
1. AWS CodePipeline 和/或 CodeDeploy。这看起来像是一个很好的选择,因为服务器也在AWS中。但是,它没有开箱即用的 Bitbucket 支持,因此它必须走 Bitbucket Pipeline -> AWS Lambda -> AWS S3 -> AWS CodePipeline / CodeDeploy -> AWS EC2 的路线。这似乎是一个非常漫长的旅程,我不确定这是否是一个好做法。 2. 使用 Laravel Forge 部署 Laravel 应用程序,并添加额外的步骤来构建 VueJS 应用程序。这似乎是一个非常基本的解决方案,但是构建过程似乎会失败,因为它只是花费了很长时间,并且在没有错误的情况下崩溃(而我可以在本地机器或其他托管在其他地方的服务器上运行完全相同的过程)。我不确定这是否与服务器的配置方式、Forge 运行部署脚本的方式或服务器过于薄弱有关。
我的主要问题是如何部署这些组件的应用程序最佳实践是什么?我已经阅读了许多有关部署 NodeJS 应用程序或 Laravel 应用程序的教程/文章,但并没有得到关于像这样的场景的好信息。
是在本地构建前端应用程序并对构建后的 JS 文件进行版本控制更好呢?还是应该在 Bitbucket 中创建一个 Pipeline 来构建应用程序然后部署它呢?还是最好只对源文件进行版本控制并将整个构建过程作为部署过程的最后一步留给托管应用程序的服务器执行?也有一些文章建议将整个前端应用程序托管在 S3 存储桶中 - 这样做是否也是不好的做法?
感谢任何帮助和资源!

你选择了哪种解决方案来托管你的应用程序? - Bart Bergmans
2个回答

0
从听起来的声音来看,你可能有两种类型的部署需要运行。
Laravel API:如果你已经在使用 Laravel Forge,那么这是一个很好的部署 Laravel 应用的方式,它会处理大部分流程并提供简单的服务器管理。
Vue.js 应用:这里有几件事情可以做,我个人更喜欢使用像VercelNetlify这样的提供商,他们允许你免费或低成本地部署静态站点/前端。你可以编写自定义构建步骤,但他们也有很棒的预设,应该可以直接使用。
如果你真的想把所有东西都放在 AWS 上,那就研究一下如何在 AWS 上托管静态站点

-1

我相信在AWS上同时部署会更高效。

我有一个类似的情况,前端和后端分开(Reactjs和Laravel),项目都在GitHub上。 以下是我们的管理方法:

对于Laravel,使用Elastic Beanstalk和CodePipeline。

  • 进入Elastic Beanstalk,创建一个应用程序并设置环境。选择示例应用程序作为应用代码
  • 进入CodePipeline,创建一个流水线。记得选择Bitbucket作为源码,Elastic Beanstalk作为部署选项。
  • 然后设置EC2

对于前端使用Amplify。

这里有一个链接https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html,可以了解如何将Bitbucket与AWS Amplify集成。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接