使用 Amazon AWS 将 React、Node/Express 和 MySQL Web 应用程序部署到 Web 上

Posted

技术标签:

【中文标题】使用 Amazon AWS 将 React、Node/Express 和 MySQL Web 应用程序部署到 Web 上【英文标题】:Deploy React, Node/Express, and MySQL web application onto the web with Amazon AWS 【发布时间】:2020-09-02 01:40:21 【问题描述】:

我最近一直在学习 React 和 Node js,并且玩得很开心。我想使用 Amazon AWS 将我的作品部署/发布到互联网上(与朋友和潜在雇主分享我的应用程序)。但是,我遇到了麻烦。

我对这个过程进行了相当多的研究,但似乎找不到任何足够详细且涉及我的网络应用程序各个方面的资源。澄清一下,我的前端是用 React 编写的,而我的后端是用 Node/Express js 编写的,并且连接到 mysql 数据库。目前所有这些都本地存储在我的计算机上。

我不确定如何继续...我已经尝试将所有代码添加到 github 并通过 AWS Amplify 上的部署功能运行,但这似乎仅限于反应前端(至少我可以没有发现任何关于包括我的后端功能和包括我的数据库连接和来自 Node 的查询的任何信息)。

谁能指出我正确的方向?提供任何提示、建议和/或资源以帮助此过程将不胜感激。具体到这个问题:如何通过 Amazon AWS 将我的 React、Node/Express 和 MySQL Web 应用程序(当前完全存储在我的本地计算机上)部署到互联网?

【问题讨论】:

【参考方案1】:

稍微概括一下这个问题:您想在 AWS 上部署一个前端、一个后端和一个数据库。 (联合国)幸运的是,有很多不同的选择。让我们稍微探索一下。

前端 假设您的前端是一组静态资源 (html/js/css),那么您只需要一个 Web 服务器即可。您可以使用 S3(也可以为网站提供服务的对象存储)或 Cloudfront(内容交付网络),或者在 EC2 上运行虚拟机,在其中安装 Web 服务器并在那里部署您的前端。

后端 这里有很多选择。您可以将您的应用程序打包在 Docker 容器中并使用 ECS(容器服务或 EKS(kubernetes 服务)。您还可以在 Elastic beanstalk(类似于 Heroku)上运行您的后端。或者,在 EC2 上运行虚拟机并在那里部署您的后端.

数据库 您可以在 RDS 之类的托管/托管数据库之间进行选择,也可以通过将其安装在虚拟机上并在那里安装数据库服务器来创建自己的数据库。

那么,选择什么?这取决于您对什么感到满意。如果你有一点管理 Linux 服务器的经验,你可以启动一个 EC2 实例,安装一个像 nginx 或 apache 这样的 Web 服务器,安装 NodeJS,安装 MySQL,然后将你的前端、后端和数据库脚本/备份复制到服务器。

如果您不习惯管理 Linux 服务器,您可以选择托管/托管解决方案,例如 S3、Elastic beanstalk 和 RDS。 这样做,当您的前端在与后端不同的域/url 上运行时,您的后端需要设置 CORS 标头,否则浏览器将不允许您的前端向您的后端发出 HTTP 请求。

希望这会有所帮助 - 祝你好运!

【讨论】:

【参考方案2】:

Elastic Beanstalk (EB) 可能是一个好的开始,因为它可以预置 node.js 应用程序所需的所有资源,而无需太多关于从头开始设置和管理所有内容的知识:

Deploying Node.js applications to Elastic Beanstalk。

为简单起见,您可以从single instance 环境类型(无负载平衡器)开始,看看它是如何进行的。

EB 还可以为您设置数据库

Adding a database to your Elastic Beanstalk environment

如果您对使用 AWS 感到更加自在,您可以扩展到 load balanced EB 环境,或查看其他选项,例如您自己的具有自动扩展组、负载均衡器、容器服务等的 EC2 实例。

【讨论】:

以上是关于使用 Amazon AWS 将 React、Node/Express 和 MySQL Web 应用程序部署到 Web 上的主要内容,如果未能解决你的问题,请参考以下文章

用于复杂查询的 Google Firebase 与 Amazon AWS [关闭]

页面刷新时出现Amazon AWS S3 404错误

AWS:将日志从 Amazon CloudWatch 导出到 Amazon Redshift

AWS:通过使用 amazon-data-pipeline 将数据从 S3 传输到 Redshift 来实现除 COPY 之外的其他功能

如何将 Django Fixtures 部署到 Amazon AWS

如何将亚马逊 AWS 产品广告项目搜索限制为 JUST amazon.co.uk(即不是 amazon.com)