如何将 MERN 堆栈部署到托管服务?

Meg*_*ing 9 deployment node.js reactjs nodemon mern

我是 Web 开发的新手,我有一个托管服务,我想在其上部署 reactjs/node 项目。为了之前部署它,我只是上传了从运行npm run build. 从那以后,我使用 MERN 堆栈添加了到 mongodb 数据库的连接。

使用create-反应,应用该项目最初创建,然后设置我的后端节点/ MongoDB的下面这个教程:https://appdividend.com/2018/11/11/react-crud-example-mern-stack-tutorial / . 我的所有服务器代码都包含在 api 文件夹中的项目文件夹中。

我可以通过运行npm start, nodemon server.js(来自 api 文件夹)并连接到终端中的 mongodb 在本地主机上运行该项目。当我尝试以与之前相同的方式从托管服务运行它时,它说它无法连接到数据库,我认为这是由于连接未在我的机器上打开。

目前,所有 API 调用都使用 axios post 到http://localhost:4000/,我也假设它在服务器上不起作用。我在网上查找了有关部署 MERN 堆栈的信息,但我发现的所有信息都在 AWS EC2 上进行了托管,这不是我将要做的。

我如何能够部署到我的托管服务?是否有任何参考资料或我应该寻找此信息的地方?

编辑:我已经使用 MongoAtlas 连接到数据库,所以我使用的是 SRV 地址。我认为问题是使用本地主机地址的 axios 帖子,因为服务器上的应用程序只有在我的本地机器上运行 nodemon 时才有效。我应该使用什么地址而不是这个地址?

mol*_*amk 6

目前,所有 API 调用都使用 axios post 到http://localhost:4000/,我也假设它在服务器上不起作用。

你是对的,那是行不通的。那是因为如果用户获得您的React 应用程序,所有 API 调用都将重定向到他们的localhost. 哪个不包含您的 API

当我尝试以与之前相同的方式从托管服务运行它时,它说它无法连接到数据库,我认为这是由于连接未在我的机器上打开。

这可能是因为 MongoDB URL 可能仍然设置为类似'mongodb://localhost:27017/myapp. 这里有两个主要选项。

  1. 使用“数据库托管服务”,MongoDB Atlas,然后您需要更改数据库的 URL 以指向该服务提供的 URL
  2. 将数据库托管在您的服务器上,它将与localhostURL 一起使用

我在网上查找了有关部署 MERN 堆栈的信息,但我发现的所有信息都在 AWS EC2 上进行了托管,这不是我将要做的。

  • 您拥有控制权和灵活性的任何服务器都可以在这种情况下工作。如果需要,您可以在其上托管所有内容(服务器、前端和数据库)。EC2 可以完成所有这些,但它不是您唯一的选择。您还可以查看来自 Microsoft 和 Google 等的类似产品...
  • 另一种方法是单独部署每个工件,这更具可扩展性,但也会引入其自身的复杂性。如果您采用这种方式,您可能需要研究Docker 容器Kubernetes,它们对编排分布式系统很有用

编辑

由于您使用的是 MongoDB Atlas,请确保将服务器的 IP 地址列入白名单