如何将部署到Amazon Web服务(AWS)中,并将其与ReactJ/Nodejs一起使用



i当前在一个项目下的Amazon Web Services(APAMON Web Services(AWS))上将ReactJS Nodejs/ExpressJS WebPack放在EC2上,并希望一次将其放在一个项目中。

关于如何做的一些建议?进行了研究,我只看到有关在特定部署的教程,无论是ReactJ还是Nodejs。任何见解或潜在客户都将不胜感激。

将接受/upvote答案。预先感谢您

您不"部署" reactjs,它只是一个静态文件或应用程序中的任何其他JS库。您也不部署WebPack。WebPack应在开发机器(或CI/CD堆栈或构建系统中)运行。

至于nodejs部分,只需使用弹性豆刺。

我不提交构建来源控制。我看到了很多,它可以使事情变得更容易,但是您也可以忘记重建时必须手动进行重建,并且为您的存储库增加了很多膨胀。

我认为应该作为部署过程的一部分运行构建。假设您使用的是git,则可以在远程存储库中添加脚本hooks/post-receive。当您推到该遥控器时,脚本将运行。这是我进行webpack构建的地方。

您可能想查看https://github.com/git-deploy/git-deploy,但我手动进行此操作。

在我的项目中,在部署计算机上我做git --init --bare /var/git/myproject.git,然后在/var/git/hooks/post-receive中添加脚本。挂钩将代码检查到/var/www/myproject中,运行构建,并填充/var/www/myproject/build。然后,它将旧的/var/www/myproject/public删除,并将build重命名为public

我来自更多的操作背景,如果您的目标包括尽可能多地保持该站点包装工在自动升级组的前面生成AMI和CloudFormation,以建立一个应用程序负载平衡器(ELB的新兄弟),该集团可以使EC2启动并运行。

我目前正在从事一个大规模项目的工作,从而完全描述了您所描述的事情。首先,有很多不同的方法可以做到这一点,因此您真正需要的是一些一般指导方针,然后如果您愿意,我们可以在做出一些初始决定时更深入地研究细节。如果您已经将应用程序部署和运行为两个单独的步骤,但是只是想结合这些步骤,那么我绝对可以提供帮助。我只需要知道您当前如何构建/部署。如果您只是开始构建管道并需要从头开始设置该过程,请继续阅读:

首先,您需要设置某种构建服务器,该构建服务器将安装您的NPM依赖项并运行WebPack构建。您很可能需要一个仅适用于您的构建服务器的单独的WebPack配置,这将为您提供针对生产或QA/阶段环境优化的构建。此配置应将您不会一直更新的供应商文件拆分,用提取文本插件拉出单独的CSS文件,然后将文件剔除。如果您具有同构React应用程序,或者正在使用节点版本中不支持的ES6功能,那么您还需要WebPack构建服务器代码。这与您实际在编码应用程序时想要在本地计算机上使用的热重新加载构建确实有所不同。如果您想要我们的WebPack配置文件以用于本地开发和我们的CI构建,我将很乐意显示一些示例。您可能还需要一个build.sh或makefile来使用WebPack构建创建的编译.js文件来做些事情,但这将取决于您的部署,我将在以后介绍。您可以将生产构建在本地运行,因为您的配置使您的配置正确正确,并从这些文件中启动该应用程序以测试所有功能。此外,由于您可能希望能够自动化所有这些,因此您可能想在构建应用程序之前进行测试和覆盖,我们运行Eslint和Mocha/jdom以运行我们的酶/期望规格作为作为的一部分我们的构建。一旦一切都很好,您很可能需要设置一个可以自动运行构建的构建服务器。我的团队正在使用詹金斯(Jenkins)为此,这是免费的,但它是免费的(除了我们运行的EC2盒子外)。还有大量基于订阅的构建/连续集成服务器,例如Travis和Codeship。这些不同产品的利弊有很多文章以及如何设置它们。最重要的是,您需要拥有一台可以从源控制,安装NPM DEP,棉布,测试和构建应用程序的构建服务器。如果有任何失败,它将失败您的构建,如果您的构建成功,您将拥有某种档案,以后您将部署到EC2实例。在我们的商店中,我们使用build.sh文件来粉碎我们的构建存档(基本上是一个带有节点服务器文件的文件夹,以及我们缩小的客户端文件,CSS文件以及运行该应用程序所需的任何字体或图像)并将其上传到我们从中部署的S3存储桶。我们喜欢这种相当古老的学校方法,因为Tarball永远不会改变,因此我们有超可靠的后退。

您对构建档案的处理将取决于您要如何部署。我们使用Puppet有一个自定义部署系统,但是有很多产品这样的产品,例如Elastic Beanstalk,可以更容易设置。您将需要某种过程主管实际运行您的节点应用程序,因此,除非您有一个想要构建自定义管道的开发程序团队,否则使用内置功能的AWS可能是最简单的入门方法。像往常一样,有很多方法可以做到这一点,但是基本的主要原理是您需要一些东西来下载构建存档并运行/监督节点过程。您也可能希望能够即时创建和配置EC2框(木偶,厨师等),甚至可以使用容器(Docker),这些容器(Docker)使您可以作为单个单元移动完整的堆栈。如果您需要扩展应用程序,使用自动化来创建和配置服务器至关重要,但是对于较小的项目来说很复杂,可能不是必需的。这绝对是您可以简单地开始并在以后增加复杂性的领域,只要您有良好的长期目标并确保采取必要的步骤以准备将来的复杂性。

所有这些都可以使您陷入杂草方面,因此最好找到最简单的东西,这些东西可以满足您的需求,然后在现实生活中的需求时增加复杂性。如果您提供有关您从事的项目的大小和良好资金的更多背景,我将很乐意详细说明这些详细信息。如果这是一个学习技术的小项目,我会有非常不同的建议,那么如果您要构建一个具有很多流量和/或复杂功能的应用程序。

这可能会得到100个不同的答案,他们最终都可能成为好主意。首先,您提到react nodejs-请记住,这些解决了不同的任务。React将是前端的,并通过静态文件提供。Nodejs更多地集中在服务器端,将是提供数据的代码。他们可以轻松地一起工作。您可以将express用于WebServer(nodejs)为HTML/React页面提供服务。

不幸的是,我看到您提到了WebPack,因此您必须使用WebPack,Gulp,Grunt等来"构建"您的应用程序。这是源控制和构建服务器很棒的地方 - 但是如果您是新手,它可能比您需要的要复杂。

如果您只有基本的EC2映像作为Web服务器,而只有1-2个,那么最大的障碍就是推动您的代码。诸如https://deploybot.com/之类的东西可以正常工作,因为它可以通过FTP将您的git reto推到多个主机等。。

Docker是一个不错的选择,如果您要与多个开发人员,服务器环境,部署打交道,那么值得花时间。否则,请保持简单,然后在EC2实例上获取代码;)。

最新更新