之前我们已经简单的在Heroku上部署了正在开发的web应用, 现在我们的应用要使用MongoDB数据库, 如何在云端部署一个MongoDB连接呢?
再进一步, 最终我们的目的是生产和开发环境连接不同数据库. 本文将完整叙述整个流程.
注册MongoLab账号
我们这里将使用MongoLab, 首先需要注册账号, 相关文档请见这里
创建一个新数据库
登陆后按照如下操作
选择single node
, sandbox
, 注意, 只有特定的区域才有single node
节点可选, 需要自己手动试一下哪个可行.
创建成功后的效果
如果没有创建成功, 多半是数据库名称冲突了, 多试几个就好.
点击Name
进入数据库, 提示要创建一个用户来使用数据库, 那么我们切换到Users
标签, 点击add database user
配置Mongolab数据库连接字符串到heroku的配置文件中
|
|
同步本地开发数据库的测试数据到Mongolab
创建一个临时文件夹, 用于本地开发数据库的备份
|
|
备份本地开发数据库
|
|
还原数据到云端数据库
|
|
检查数据还原情况
首先使用mongo shell连接到远程数据库
|
|
列出数据
|
|
让应用根据环境自动选择连接的数据库
经过以上操作, 我们获得了一个和本地开发数据库同步的云端数据库, 由于我们的应用同时在本地开发和Heroku部署, 需要让应用根据环境自动连接到正确的数据库.
设置NODE_ENV环境变量
首先需要将heroku上部署的应用切换到production
环境(注意: 要在应用根目录下执行指令).
|
|
更改应用源码中数据库连接的设置
|
|
本地测试连接到本地开发数据库和Mongolab数据库
首先测试连接到本地开发数据库
|
|
然后测试连接到Mongolab数据库
|
|
测试成功后, 将应用推送到Heroku仓库部署
|
|
通过检查heroku云端应用日志, 验证数据库连接情况
|
|
以上, 就完成了生产和开发环境连接不同数据库的配置.