部署时安装
(py3env) [root@iZwz92gq6i22d162qyetwjZ django]# pip install -r requirements.txt
指定静态文件
(py3env) [root@iZwz92gq6i22d162qyetwjZ django]# vim blogproject/settings.py
STATIC_URL = '/static/'
# 加入下面的配置
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# STATIC_ROOT 指明了静态文件的收集目录,即项目根目录(BASE_DIR)下的 static 文件夹
根据配置提取静态文件
(py3env) [root@iZwz92gq6i22d162qyetwjZ django]# python manage.py collectstatic
迁移数据库
(py3env) [root@iZwz92gq6i22d162qyetwjZ django]# python manage.py migrate
安装
(py3env) [root@iZwz92gq6i22d162qyetwjZ ~]# pip install fabric
编写自动拉取最新git
(py3env) [root@iZwz92gq6i22d162qyetwjZ /]# vim /opt/sites/django-blog/env/django/fabfile.py
from fabric.api import env, run
from fabric.operations import sudo
GIT_PREO = 'https://github.com/xxx/xxx.git'
env.user = 'xxx'
env.password = 'xx'
env.hosts = 'xxx'
env.port = '22'
def deploy():
source_folder = '/opt/sites/django-blog/env/django'
run('cd %s && git pull' % source_folder)
run("""
cd {} &&
/py3env/bin/pip install -r requirements.txt &&
/py3env/bin/python3 manage.py collectstatic --noinput &&
/py3env/bin/python3 manage.py migrate
""".format(source_folder))
pid = run("pstree -ap |grep gunicorn |grep -v grep |awk '{print $4}' |awk -F ',' '{print $2}' |head -n 1")
run('kill -HUP %s' % pid)
run('systemctl restart nginx')
启动监听
(env) [root@iZwz92gq6i22d162qyetwjZ blogproject]# pip install gunicorn
(env) [root@iZwz92gq6i22d162qyetwjZ blogproject]# gunicorn --bind 127.0.0.1:8000 blogproject.wsgi:application
执行自动部署
fab deploy