我一直使用 heroku 来部署我的 MERN 应用程序。对于 mongo 数据库,我使用 MongoDB Atlas,但在我的工作中,他们希望将所有项目迁移到 DigitalOcean。我对此有几个问题:
提前致谢!
是的,您可以在单个服务器中部署多个服务,它们只需要监听不同的端口即可。
例如,假设 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
的后端服务器。
您可以将 MERN 堆栈部署在数字海洋的单个水滴或其他主机提供商上,
您可以在此博客上找到完整的详细信息,请阅读它。