我无法理解从本地切换到生产设置以部署Django项目。如果重要的话,我正在使用Ubuntu虚拟机(VM)。
我了解如何配置设置。我了解创建设置文件的最佳实践(base.py,local.py,production.py,blah,blah)。我知道在本地开发DEBUG = True,在生产中DEBUG = False,blah,blah。
但是如何在部署中实现此切换?我摆脱了local.py吗?我是否创建了某种逻辑,以便我的VM只读取base.py和production.py?
最好的方法是什么?
答案 0 :(得分:0)
我不确定最好的方法,但我的工作方式......
在我的settings.py脚下,我有:
try:
from local_settings import *
except ImportError, e:
pass
我将所有本地开发设置保存在local_settings.py中,该设置覆盖任何生产设置。我也确保不上传我的local_settings.py文件!
答案 1 :(得分:0)
您可以做的是检查您的设置py目前使用的环境。
为此,您可以在系统上设置一个环境变量,该变量在您的开发环境和生产环境中具有不同的值。
您可以通过
设置这些环境变量sudo -H gedit /etc/environment
并在文件中添加以下行:
DEBUG="true"
(要使此更改可用,您必须注销并重新登录系统)
在生产环境中,您将设置DEBUG =“false”。
然后你可以在settings.py中执行此操作:
DEBUG = os.environ.get('DEBUG', 'true') != 'false'
然后您可以根据使用的环境设置不同的设置:
if DEBUG:
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
else:
STATICFILES_STORAGE = STATICFILES_STORAGE = 'custom_storages.StaticStorage'
(如果在开发环境中,上面的设置使用本地django服务器来提供静态文件,如果在生产环境中(在custom_storages模块中定义),则使用boto的amazon s3
通过这种方式,您可以推送更新,并始终根据环境选择正确的设置。