Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django,Fabric:管理密钥以部署Django项目的最佳方法是什么?_Python_Django_Deployment_Fabric - Fatal编程技术网

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永久性地在部署服务器上设置环境变量。