本文小编为大家详细介绍“怎么正确设置mongodb和redis开发环境与生产环境的配置参数”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么正确设置mongodb和redis开发环境与生产环境的配置参数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
我们写代码时,一般会先在自己电脑上进行开发,然后把代码部署到服务器上。如果一段代码涉及到读写数据库,或者访问某些其他的线上服务接口,那么在开发时,为了不影响线上环境,我们一般会把测试环境的数据库和线上环境的数据库分开。
例如,我们的程序需要访问 MongoDB 和 Redis,于是,在代码里面,我们可能会这样写:
import pymongo
import redis
handler = pymongo.MongoClient('mongodb://username:password@127.0.0.1:27017').db.col
client = redis.Redis(host='127.0.0.1', port=6379, password='xxxx')
等你要把程序部署到线上环境的时候,你手动把代码里面的MongoDB 连接参数、Redis连接参数修改成线上环境的参数。然后把代码提交到 Git上,并在服务器拉下最新代码并部署。
然而当你想修改一个新功能,要重新测试时,你在自己电脑上又要把这些连接参数修改成测试环境的参数。如果你忘记修改直接就运行,可能会把脏数据写入到线上环境中。
于是,可能有人会使用环境变量来控制读取的参数,例如:
import os
import redis
import pymongo
if os.getenv('env', 'prod'): # 线上环境
MONGODB_URI = 'mongodb://username:password@xx.xx.xx.xx:27017'
REDIS_PARAMS = {'host': 'xx.xx.xx.xx', 'port': 6379, 'password': 'xxxx'}
else: # 测试环境
MONGODB_URI = 'mongodb://username:password@127.0.0.1:27017'
REDIS_PARAMS = {'host': '127.0.0.1', 'port': 6379, 'password': 'xxxx'}
handler = pymongo.MongoClient(MONGODB_URI).db.col
client = redis.Redis(**REDIS_PARAMS)
这样一来,你不需要手动修改数据库的连接参数,只要把线上环境的环境变量env
设置为prod
,那么程序部署到线上环境,它自动就会使用线上数据库的参数。只要 其他地方,例如你电脑上,环境变量env
不为prod
或者干脆不存在这个环境变量,那么自动就会使用开发环境的参数。
这样做,确实避免了忘记修改参数导致的问题,但还有另一个问题:如果其他人也有这个 Git 源的访问权限,那么他们就会知道怎么连接线上环境的数据库。甚至擅自操作线上环境的数据,造成安全隐患或者隐私泄露。
所以,更安全的做法,是专门使用一个文件来存放这些配置参数,程序去这个固定的位置读取参数。线上环境这个文件放线上参数,开发环境,这个文件写开发参数。这个配置文件不上传到 Git中。
例如,我们创建一个 config.json 文件,它的内容为:
{
"MONGODB_URI": "mongodb://username:password@127.0.0.1:27017",
"REDIS_PARAMS": {"host": "127.0.0.1", "port": 6379, "password": "xxxx"}
}
然后我们的代码这样修改:
import os
import json
import redis
import pymongo
CONFIG_PATH = '/etc/config/config.json'
if not os.path.exists(CONFIG_PATH):
print('配置文件不存在,自动使用测试环境参数!')
MONGODB_URI = 'mongodb://username:password@127.0.0.1:27017'
REDIS_PARAMS = {'host': '127.0.0.1', 'port': 6379, 'password': 'xxxx'}
else:
with open(CONFIG_PATH, encoding='utf-8') as f:
config = json.load(f)
MONGODB_URI = config['MONGODB_URI']
REDIS_PARAMS = config["REDIS_PARAMS"]
handler = pymongo.MongoClient(MONGODB_URI).db.col
client = redis.Redis(**REDIS_PARAMS)
读到这里,这篇“怎么正确设置mongodb和redis开发环境与生产环境的配置参数”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。