node.js - 如何在单个液滴上将不同的 MERN 应用程序部署到 digital ocean ?

标签 node.js reactjs mongodb digital-ocean mern

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

  1. 我可以在一个平台上安装 mongoDB + nodejs 后端 + React 应用程序吗 水滴?
  2. 我可以在一个 Droplet 中部署两个或更多应用程序吗? (这 应用程序具有不同的域)
  3. 是否有关于此的视频教程 (我已经阅读了很多文档并在尝试时遇到了很多错误 去做吧。我的眼睛受伤了🙃)
  4. 例如,如果我在 Heroku 中有两个用于同一网站的应用程序,一个用于 nodejs 后端,另一个用于 React 前端...我可以在 DigitalOcean 上做同样的事情吗?

提前致谢!

最佳答案

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

例如,假设一个 MongoDB 服务器在 27017 端口上运行,一个 Node.js http 服务器在 5000 端口上运行,一个 React 应用程序正在运行在端口 8000 上。

比如说,你的服务器的 IP 是 13.13.13.13

然后您可以使用 13.13.13.13:2701713.13.13.13:5000 访问您的 MongoDB 服务器、Node.js http 服务器和 React 应用程序>13.13.13.13:8000,分别来自您的 IP 未被阻止的 Internet 中的任何位置。

现在,在您的服务器中,您设置了 iptables 以将所有来自端口 8000 的传入连接转发到 80。现在,您可以通过访问 13.13.13.13 访问您的 React 应用程序,不再需要使用该端口。

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

如果您不想使用端口号访问您的后端,您可以使用 Nginx 作为反向代理。您可以设置 Nginx 以将所有到 api.example.com 的流量路由到监听 localhost:5000 的后端服务器。

关于node.js - 如何在单个液滴上将不同的 MERN 应用程序部署到 digital ocean ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60757456/

相关文章:

mysql - 如何使用NodeJS在sequelize中编写具有多个where的子查询

javascript - 将多个 PouchDB 数据库同步到一个 CouchDB 数据库

javascript - Uncaught ReferenceError : require is not defined webpack with telegram

reactjs - 在 Jest 中测试 onChange 函数

javascript - 如何让 JS 从 HTML 调用 Node.js 脚本中的函数?

javascript - ReactJS图像 slider 导航功能,似乎无法正常工作

reactjs - 如何使用apollo Reactjs客户端刷新firebase IdToken

json - 看起来当我执行 fs.writeFile() 时,更改的文件会重新启动 nodemon。怎么让它不重启?

javascript - 查询嵌套对象键

javascript - Mongodb v4.0 事务,MongoError : Transaction numbers are only allowed on a replica set member or mongos