【发布时间】:2015-01-27 12:20:01
【问题描述】:
我正在编写我的第一个“自制部署”。使用结构编写部署脚本。我在我的生产机器上添加了一个导出到 .bashrc 以导出一个 key:value {'DIGITAL_OCEAN': True},这样我就可以在我的设置中添加一些条件来使用基于本地或生产环境的数据库。
SETTINGS.PY
import os
if 'DIGITAL_OCEAN' in os.environ:
ON_DO = True
else:
ON_DO = False
if ON_DO:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'user',
'USER': 'user',
'PASSWORD': 'pass',
'HOST': 'localhost',
'PORT': '',
}
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'localuser',
'USER': 'localuser',
'PASSWORD': 'localpass',
'HOST': 'localhost',
'PORT': '',
}
现在...如果我运行像“$ python manage.py migrate”这样的 ssh 命令一切顺利 ON_DO 被发现并且一切顺利,但在我的部署脚本中,如下所列,ON_DO 是假的,我有这之前是自发发生的,然后它自行纠正(可能是通过 gunicorn 或 nginx 重新启动),所以我尝试在脚本中添加一些重新启动,但到目前为止没有运气,而且我没有想法。
def server():
'''IDK'''
env.host_string = 'ip.ip.ip.ip'
env.user = 'root'
def pull_deploy():
'''Makes the server pull it from git repo at bitbucket'''
path = '/home/django/'
print(red('BEGINNING PULL DEPLOY'))
with cd('%s' % path) :
run('pwd')
print(green('Pulling Master from Bitbucket'))
run('git pull origin master')
print(green('SKIPPING installing requirements'))
run('source %spyenv/bin/activate && pip install -r langalang/requirements.txt' % path)
print('Collecting static files')
run('source %spyenv/bin/activate && python langalang/manage.py collectstatic' % path)
print('Restarting Gunicorn')
run('sudo service gunicorn restart')
print('Restarting Nginx')
run('nginx -s reload')
print('Making migrations')
run('source %spyenv/bin/activate && python langalang/manage.py makemigrations' % path)
print('Migrating DB')
run('source %spyenv/bin/activate && python langalang/manage.py migrate' % path)
print('Restarting Gunicorn')
run('sudo service gunicorn restart')
print('Restarting Nginx')
run('nginx -s reload')
print(red('DONE'))
【问题讨论】:
标签: django deployment digital-ocean