部署MERN应用:如何在DigitalOcean Droplet上免费搭建MongoDB?
在DigitalOcean Droplet上搭建MongoDB并对接MERN应用
当然可以在承载MERN应用的同一台DigitalOcean Droplet上搭建MongoDB,无需额外付费,以下是具体操作步骤:
前提条件
- 已创建并登录DigitalOcean Droplet(推荐使用Ubuntu系统,兼容性最佳)
- Droplet上已配置好Node.js环境(用于运行MERN后端服务)
步骤1:安装MongoDB
- 更新系统包列表:
sudo apt update - 安装MongoDB:
sudo apt install -y mongodb - 启动服务并设置开机自启:
sudo systemctl start mongodb sudo systemctl enable mongodb - 验证安装状态:
# 查看版本 mongod --version # 或检查服务运行状态 sudo systemctl status mongodb
步骤2:配置MongoDB(安全优化)
默认MongoDB仅允许本地访问,对同一Droplet上的应用足够安全;若需临时远程调试(不建议生产环境),可修改配置:
- 打开配置文件:
sudo nano /etc/mongodb.conf - 找到
bindIp字段,将默认值127.0.0.1改为0.0.0.0(生产环境需配合防火墙限制指定IP访问) - 重启服务生效:
sudo systemctl restart mongodb
步骤3:创建专用数据库与用户(生产环境必备)
默认MongoDB未启用认证,必须配置用户权限保障数据安全:
- 进入MongoDB Shell:
mongo - 创建管理员用户:
use admin db.createUser({ user: "admin_user", pwd: "your_strong_admin_pwd", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] }) - 退出Shell,修改配置启用认证:
添加或修改sudo nano /etc/mongodb.confsecurity区块:security: authorization: enabled - 重启服务后,用管理员账号登录:
mongo -u admin_user -p your_strong_admin_pwd --authenticationDatabase admin - 为MERN应用创建专用数据库和读写用户:
use mern_app_db db.createUser({ user: "mern_app_user", pwd: "your_app_user_pwd", roles: [{ role: "readWrite", db: "mern_app_db" }] })
步骤4:修改MERN后端连接字符串
将原MongoDB Atlas或其他远程服务的连接地址,替换为本地MongoDB的连接字符串:
- 启用认证时的格式:
mongoose.connect('mongodb://mern_app_user:your_app_user_pwd@localhost:27017/mern_app_db', { useNewUrlParser: true, useUnifiedTopology: true }); - 未启用认证时的简化格式:
mongoose.connect('mongodb://localhost:27017/mern_app_db', { useNewUrlParser: true, useUnifiedTopology: true });
步骤5:测试与部署
启动MERN后端服务,确认数据库连接正常;前端可通过Nginx反向代理部署,或直接用Node.js静态文件服务托管。
注意事项
- 生产环境禁止开放MongoDB远程访问权限,必须启用认证
- 定期用
mongodump备份数据:mongodump --db mern_app_db --out /path/to/backup/dir - 低配置Droplet(如1GB内存)需调整MongoDB内存限制,避免占用过多资源影响应用运行
内容的提问来源于stack exchange,提问作者Petar
相关产品推荐
相关产品推荐

