工作中,开发,测试,生产都是linux系统,最常见的是centos, 在工程测试和生产部署的时候,时常面临一个不同环境下的参数配置难题。你的项目需要用到mysql数据库,但开发,测试,生产环境的mysql数据库必然是不同的,除了数据库,其他一些配置也会区分这三个环境。一个可行的办法是为这3个环境配置三份不同的配置文件,不同环境下加载不同的配置文件,这就需要手动修改这些配置文件的名称,毕竟程序里加载的配置文件名称是固定的。
那么,能否依据环境的不同加载不同的配置文件呢?
很早以前,我会在程序获取机器的信息,比如机器的操作系统,机器的ip地址,来判断当前机器的环境属于哪一个,这是一个比较low的办法,其实,有一个非常简单实用的方法,就是配置环境变量。
修改 /etc/profile 文件,增加一个新的配置
export PRO_ENV=qa # 测试环境, dev 开发环境, product 生产环境
在不同环境下的机器上,配置不同的环境变量,当程序启动时,获取这个环境变量,以此来判断当前机器所在的环境,根据环境变量加载不同的配置文件
import os
pro_env = os.environ.get('PRO_ENV', 'product')
if pro_env == 'product':
import product_conf as config
elif pro_env == 'qa':
import qa_conf as config
else:
import dev_conf as config
QQ交流群: 211426309