如何在单个 Droplet 上将不同的 MERN 应用程序部署到数字海洋?

问题描述 投票:0回答:2

我一直使用 heroku 来部署我的 MERN 应用程序。对于 mongo 数据库,我使用 MongoDB Atlas,但在我的工作中,他们希望将所有项目迁移到 DigitalOcean。我对此有几个问题:

  1. 我可以在一个单机上拥有 mongoDB + Nodejs 后端 + React 应用程序吗 水滴?
  2. 我可以在一个 Droplet 中部署两个或多个应用程序吗? (这 应用程序有不同的域)
  3. 有这方面的视频教程吗 (我读了很多文档,在尝试时遇到了很多错误 去做它。我的眼睛好痛🙃)
  4. 例如,如果我在 Heroku 中为同一个网站有两个应用程序,一个用于 Nodejs 后端,另一个用于 React 前端……我可以在 DigitalOcean 上做同样的事情吗?

提前致谢!

node.js reactjs mongodb digital-ocean mern
2个回答
4
投票

是的,您可以在单个服务器中部署多个服务,它们只需要监听不同的端口即可。

例如,假设 MongoDB 服务器在端口

27017
上运行,Node.js http 服务器在端口
5000
上运行,React 应用程序在端口
8000
上运行。

假设您的服务器 IP 是

13.13.13.13

然后,您可以从互联网上任何您的 IP 未被阻止的地方,分别使用

13.13.13.13:27017
13.13.13.13:5000
13.13.13.13:8000
访问您的 MongoDB 服务器、Node.js http 服务器和 React 应用程序。

现在,在您的服务器中,您设置

iptables
将所有传入连接从端口
8000
转发到
80
。现在,您可以通过访问
13.13.13.13
来访问您的 React 应用程序,无需再使用该端口。

现在,假设您为

example.com
api.example.com
添加 DNS 记录以指向您的 IP。由于您不能有
A
记录或
CNAME
记录指向端口,因此您的两个域都会将您定向到您的 React 应用程序。如果您想访问 Node.js 后端,则必须显式指定端口号以及域,例如
http://example.com:5000
http://api.example.com:5000

如果您不想使用端口号访问后端,您可以使用 Nginx 作为反向代理。您可以设置 Nginx 将所有流量路由到

api.example.com
到监听
localhost:5000
的后端服务器。


0
投票

您可以将 MERN 堆栈部署在数字海洋的单个水滴或其他主机提供商上,

  1. 在 pm2 的帮助下在不同的端口运行 Node 和 React
  2. 将反向代理传递给NGINX并重新启动Nginx

您可以在此博客上找到完整的详细信息,请阅读它。

© www.soinside.com 2019 - 2024. All rights reserved.