Heroku连接云端MongoDB的方法
2017-03-07 09:30
260 查看
之前我们已经简单的在Heroku上部署了正在开发的web应用, 现在我们的应用要使用MongoDB数据库, 如何在云端部署一个MongoDB连接呢?
再进一步, 最终我们的目的是生产和开发环境连接不同数据库. 本文将完整叙述整个流程.
选择
创建成功后的效果
如果没有创建成功, 多半是数据库名称冲突了, 多试几个就好.
点击
配置Mongolab数据库连接字符串到heroku的配置文件中
备份本地开发数据库
还原数据到云端数据库
检查数据还原情况
首先使用mongo shell连接到远程数据库
列出数据
设置NODE_ENV环境变量
首先需要将heroku上部署的应用切换到
更改应用源码中数据库连接的设置
本地测试连接到本地开发数据库和Mongolab数据库
首先测试连接到本地开发数据库
然后测试连接到Mongolab数据库
测试成功后, 将应用推送到Heroku仓库部署
通过检查heroku云端应用日志, 验证数据库连接情况
以上, 就完成了生产和开发环境连接不同数据库的配置.
再进一步, 最终我们的目的是生产和开发环境连接不同数据库. 本文将完整叙述整个流程.
注册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/congyh Setting 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.0 connecting to: mongodb://ds127958.mlab.com:27958/congyh MongoDB server version: 3.2.11 WARNING: shell and server versions do not match rs-ds127958:PRIMARY>
列出数据
> show collections > db.locations.find()
让应用根据环境自动选择连接的数据库
经过以上操作, 我们获得了一个和本地开发数据库同步的云端数据库, 由于我们的应用同时在本地开发和Heroku部署, 需要让应用根据环境自动连接到正确的数据库.设置NODE_ENV环境变量
首先需要将heroku上部署的应用切换到
production环境(注意: 要在应用根目录下执行指令).
$ heroku config:set NODE_ENV=production Setting NODE_ENV and restarting ⬢ sheltered-everglades-85543... done, v11 NODE_ENV: production
更改应用源码中数据库连接的设置
var dbURI = 'mongodb://localhost/Loc8r'; if (process.env.NODE_ENV === 'production') { dbURI = process.env.MONGOLAB_URI; } mongoose.connect(dbURI);
本地测试连接到本地开发数据库和Mongolab数据库
首先测试连接到本地开发数据库
$ nodemon Mongoose connected to mongodb://localhost/Loc8r
然后测试连接到Mongolab数据库
$ NODE_ENV=production MONGOLAB_URI=mongodb://<dbuser>:<dbpassword>@ds127958.mlab.com:27958/congyh nodemon Mongoose 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
以上, 就完成了生产和开发环境连接不同数据库的配置.
相关文章推荐
- 启动 mongo shell 不自动连接 MongoDB 服务器的方法
- python连接MySQL、MongoDB、Redis、memcache等数据库的方法
- Mongodb基本操作与Python连接mongodb并进行基础操作的方法
- java连接MongoDB的方法(包括java和MongoDB环境的搭建)
- java及spark2.X连接mongodb3.X单机或集群的方法(带认证及不带认证)
- mongodb 3.4下远程连接认证失败的解决方法
- [MongoDB学习笔记-02] Node.js连接MongoDB的两种方法
- python连接MySQL、MongoDB、Redis、memcache等数据库的方法
- python实现连接mongodb的方法
- Mongodb连接方法学习
- WEB服务器连接不上MONGODB的常用诊断方法
- mongodb连接错误原因及处理方法
- java连接数据方法jdbc:oracle,mysql,mongodb
- mongodb 详解 error:10061 由于目标计算机积极拒绝,无法连接解决方法
- 关于pymongo两种连接方法MongoClient和Connection连接mongodb的写入效率分析
- nodejs连接mongodb的方法
- golang 连接mongoDB的方法示例
- Mongodb连接方法学习
- python实现连接mongodb的方法
- Python连接Mongodb时,引入Connection报错,无法引用到这个方法