您的 MERN 服务器上安装什么?
- 用 Vite 创建的 React 项目,位于 /home/app/uygulama/istemci
- sunucu/server.js 中的 Express 5 和 Mongoose 9,其中 /api/saglik 路由会真实写入 MongoDB
- 来自 NodeSource 软件源的 Node.js 26,以及进程管理器 PM2
- MongoDB 8.0 只监听 127.0.0.1,由用户名和密码保护
- Caddy 会为 sslip.io 地址自行获取 HTTPS 证书,所以域名是可选的
- 2 GB 的交换文件,防火墙只开放 22、80 和 443 端口
MERN 需要多大的配置?
MERN 没有官方的 RAM 数值。在这台服务器上,Node.js、MongoDB 和 React 构建共用同一份内存,MongoDB 的缓存在 2 GB 时是 512 MB,在 4 GB 时是 1.5 GB。经验上,演示或小型项目从 2 GB 起步就不错,有真实用户的项目可以用 4 GB。最小配置是 2 GB RAM、1 个 CPU 和 20 GB 磁盘。RAM 和 CPU 可升可降,磁盘只能增大,您的数据和 IP 地址保持不变。
| 用途 | 配置 | 价格 | 选择 |
|---|---|---|---|
| 入门 | 2 GB RAM · 1 vCore · 40 GB NVMe | $4.01/月 | |
| 中等 | 4 GB RAM · 2 vCore · 60 GB NVMe | $6.89/月 | |
| 强劲 | 8 GB RAM · 4 vCore · 120 GB NVMe | $13.62/月 |
适合谁?
- 想在一台服务器上同时运行 React 前端和 Express API 的人
- 把用 AI 工具做出的 React 应用发布到自己服务器上的开发者
- 发布演示、第一个版本或内部工具的小团队
下单之后会发生什么?
- 设定配置并完成付款。
- 服务器启动后,MERN 环境会自行安装。在我们的真实服务器测试中,这大约用了 4 分钟。
- 在“概览”标签页中打开“网站地址”。示例页面会显示 MongoDB: OK。
- 通过 SSH 连接并输入 su - app。把项目放在 ~/uygulama 下,React 放在 istemci,Express 放在 sunucu。
- 进入 istemci 文件夹,构建前端并把输出放进后端的 public 目录:npm run build -- --outDir ../sunucu/public --emptyOutDir
- 运行 pm2 restart uygulama,然后在“网站地址”检查修改是否生效。
每台服务器都包含
- 价格含每日备份
- 不限流量
- 完整 root 权限
- 之后可升级或降配 RAM 和 CPU,并扩大磁盘
- 位置:Istanbul · IST-1。
须知
- 下单即表示您接受 MongoDB 的 Server Side Public License(SSPL)条款。
- Caddy 会把请求转发到 127.0.0.1:3000。请在您自己的服务器文件中监听这个端口,并从 sunucu/.env 中的 MONGO_ADRES 读取数据库地址。
- 以 VITE_ 开头的变量会在构建时写入代码,并且在浏览器中可见。不要把机密信息放进去,值有变化时要重新构建。
- 如果您的入口文件不是 server.js,请重新定义进程:pm2 delete uygulama、pm2 start FILE --name uygulama、pm2 save。
- 这里只有一个 MongoDB 节点。如果要在 Mongoose 中使用事务或变更流,需要自己搭建副本集。
- 让 Node.js、MongoDB 和 npm 包保持最新,由您自己负责。
MERN 常见问题
如何部署我的 MERN stack 项目?
用 su - app 切换用户,把 Express 代码放进 ~/uygulama/sunucu,把 React 代码放进 ~/uygulama/istemci。在两个目录中都运行 npm install,在 istemci 中用 npm run build -- --outDir ../sunucu/public --emptyOutDir 构建,然后运行 pm2 restart uygulama。
MERN stack 需要多少 RAM?
MERN stack 没有官方的 RAM 数值。经验上,演示或小型项目从 2 GB 起步就不错,有真实用户的项目可以用 4 GB。
需要设置 CORS 吗?
这种布局不需要。React 构建后由 Express 提供输出,API 与它在同一个地址,所以前端直接调用以 /api 开头的路径即可。如果前端托管在别处,则需要您自己在 Express 中设置 CORS。
刷新页面时 React Router 会出现 404 吗?
不会。示例 server.js 会对任何未知路径返回 index.html,之后由 React Router 接手。如果您自己编写服务器文件,请保留这个行为,并把 API 路由定义在它前面。
可以从外部连接 MongoDB 吗?
在这台 MERN 服务器上,MongoDB 只在服务器内部监听。要使用 Compass,请用 ssh -L 27017:127.0.0.1:27017 root@IP 打开 SSH 隧道。
重启后我的应用会自动恢复吗?
会。PM2 作为 pm2-app 服务运行,启动时会恢复已保存的进程列表。修改进程后,请用 pm2 save 保存列表。