Heroku连接云端MongoDB的方法
来源:互联网 发布:有哪些句子知乎 编辑:程序博客网 时间:2024/06/05 06:08
之前我们已经简单的在Heroku上部署了正在开发的web应用, 现在我们的应用要使用MongoDB数据库, 如何在云端部署一个MongoDB连接呢?
再进一步, 最终我们的目的是生产和开发环境连接不同数据库. 本文将完整叙述整个流程.
注册MongoLab账号
我们这里将使用MongoLab, 首先需要注册账号, 相关文档请见这里
创建一个新数据库
登陆后按照如下操作
选择single node
, sandbox
, 注意, 只有特定的区域才有single node
节点可选, 需要自己手动试一下哪个可行.
创建成功后的效果
如果没有创建成功, 多半是数据库名称冲突了, 多试几个就好.
点击Name
进入数据库, 提示要创建一个用户来使用数据库, 那么我们切换到Users
标签, 点击add database user
配置Mongolab数据库连接字符串到heroku的配置文件中
$ heroku config:set MONGOLAB_URI=mongodb://<dbuser>:<dbpassword>@ds127958.mlab.com:27958/congyhSetting MONGOLAB_URI and restarting ⬢ sheltered-everglades-85543... done, v10...
同步本地开发数据库的测试数据到Mongolab
创建一个临时文件夹, 用于本地开发数据库的备份
$ mkdir -p ~/tmp/mongodump
备份本地开发数据库
$ mongodump -h localhost:27017 -d Loc8r -o ~/tmp/mongodump
还原数据到云端数据库
$ mongorestore -h ds127958.mlab.com:27958 -d congyh -u <username> -p <password> ~/tmp/mongodump/Loc8r...2016-12-11T12:40:06.685+0800 finished restoring congyh.locations (3 documents)2016-12-11T12:40:06.685+0800 done
检查数据还原情况
首先使用mongo shell连接到远程数据库
$ mongo ds127958.mlab.com:27958/congyh -u <username> -p <password>MongoDB shell version v3.4.0connecting to: mongodb://ds127958.mlab.com:27958/congyhMongoDB server version: 3.2.11WARNING: shell and server versions do not matchrs-ds127958:PRIMARY>
列出数据
> show collections> db.locations.find()
让应用根据环境自动选择连接的数据库
经过以上操作, 我们获得了一个和本地开发数据库同步的云端数据库, 由于我们的应用同时在本地开发和Heroku部署, 需要让应用根据环境自动连接到正确的数据库.
设置NODE_ENV环境变量
首先需要将heroku上部署的应用切换到production
环境(注意: 要在应用根目录下执行指令).
$ heroku config:set NODE_ENV=productionSetting NODE_ENV and restarting ⬢ sheltered-everglades-85543... done, v11NODE_ENV: production
更改应用源码中数据库连接的设置
var dbURI = 'mongodb://localhost/Loc8r';if (process.env.NODE_ENV === 'production') { dbURI = process.env.MONGOLAB_URI;}mongoose.connect(dbURI);
本地测试连接到本地开发数据库和Mongolab数据库
首先测试连接到本地开发数据库
$ nodemonMongoose connected to mongodb://localhost/Loc8r
然后测试连接到Mongolab数据库
$ NODE_ENV=production MONGOLAB_URI=mongodb://<dbuser>:<dbpassword>@ds127958.mlab.com:27958/congyh nodemonMongoose connected to mongodb:///<dbuser>:<dbpassword>@ds127958.mlab.com:27958/congyh
测试成功后, 将应用推送到Heroku仓库部署
$ git add .$ git commit -am "add mongolab support"$ git push heroku master
通过检查heroku云端应用日志, 验证数据库连接情况
$ heroku logs...2016-12-11T05:08:18.152506+00:00 app[web.1]: Mongoose connected to mongodb://<dbuser>:<dbpassword>@ds127958.mlab.com:27958/congyh
以上, 就完成了生产和开发环境连接不同数据库的配置.
- Heroku连接云端MongoDB的方法
- Mongodb连接方法学习
- Mongodb连接方法学习
- ThinkPHP连接Mongodb方法
- Heroku的架构
- HeroKu 的架构设计
- python连接MySQL、MongoDB、Redis、memcache等数据库的方法
- WEB服务器连接不上MONGODB的常用诊断方法
- java连接windows下的mongodb数据库方法
- heroku
- heroku
- MongoDB的连接运算
- java连接MongoDB的方法(包括java和MongoDB环境的搭建)
- 使用heroku开发应用时连接数据库遇到的问题及解决方案
- [MongoDB学习笔记-02] Node.js连接MongoDB的两种方法
- makedown 格式的图片保存在云端的方法
- 想让云端平台内存占用变小的方法参考
- 学习 HeroKu 的架构设计
- Android 硬编码 备注
- 图的m着色问题
- 【Linux就该这么学】在线培训第一期视频教程价值2400元
- Application传值
- JavaWeb从入门到精通(五)-JSP
- Heroku连接云端MongoDB的方法
- bootstrap 树形菜单
- asp.net上传文件超过了最大请求长度[转]
- 提高网站伸缩性的实用技术
- 比用xcode上传app更实用的软件Application Uploade-快速上传
- linux 的redis安装
- 谈谈div+css布局命名、语义化、结构化的开发经验?
- Keras 修改图片通道顺序
- python中的networkx包学习——简单的网络画图入门