Python Django,Fabric:管理密钥以部署Django项目的最佳方法是什么?
目前,我正在尝试将密钥存储在环境变量中:Python Django,Fabric:管理密钥以部署Django项目的最佳方法是什么?,python,django,deployment,fabric,Python,Django,Deployment,Fabric,目前,我正在尝试将密钥存储在环境变量中: # settings/base.py def get_env_variable(var_name): """ Get the environment variable or return exception """ try: return os.environ[var_name] except KeyError: error_msg = 'Set the {} environment variab
# settings/base.py
def get_env_variable(var_name):
""" Get the environment variable or return exception """
try:
return os.environ[var_name]
except KeyError:
error_msg = 'Set the {} environment variable'.format(var_name)
raise ImproperlyConfigured(error_msg)
SECRET_KEY = get_env_variable('SECRET_KEY')
我不知道如何使用Fabric部署我的项目:
@task
def deploy():
syncdb()
collectstatic()
@task
def collectstatic():
dj('collectstatic')
with cd('{django_root}/static'.format(**env)):
fix_permissions()
@task
def syncdb():
dj('syncdb')
@task
def dj(command):
run('{virtualenv_dir}/bin/python {django_root}/manage.py {dj_command}'.format(dj_command=command, **env))
在这种情况下,哪种设置环境变量的方法最好?
我真的很想让它自动运行,并多次使用这个脚本。同时,我不想在fabfile或设置中存储机密信息,因为我会将它们推送到公共repo。在部署过程中自动设置密钥是没有意义的,因为可以通过查看部署文件来了解密钥。(您的源文件可能位于不太安全的位置,例如源代码管理,首先分离出密钥的目的是让有权访问源代码的人看不到它是什么) 您首先在部署系统上手动设置了一次机密
(在您的情况下,设置环境变量,可以通过在
/etc/environment
中添加一行来完成,例如MY_DJANGO\u APP\u SECRET\u KEY=mysecretkeyvalue
)我不确定问题是什么-您是在问如何,或者如何生成密钥?我在问如何使用fabric永久性地在部署服务器上设置环境变量。