觉得django项目把本地更新push到gitlab,再执行fabric脚本从gitlab更新服务器项目挺方便的,当然从本地直接到服务器就比较灵活。
2019/01/17 基于windows使用fabric将gitlab的文件远程同步到服务器
# -*- coding: utf-8 -*-
from fabric.api import env, run
from fabric.operations import sudo GIT_REPO = "gitlab-project地址"
env.user = '服务器用户名'
env.password = '服务器用户密码'
env.hosts = ['服务器ip']
env.port = '22' def deploy():
source_folder = '服务器项目目录' # 预先把初始项目包含git拷进去
# 执行保留服务器settings配置的pull操作同步gitlab更新到服务器
run('cd %s && git stash && git pull && git stash pop' % source_folder)
run("""
cd {} &&
pip install -r requirements.txt &&
python manage.py collectstatic --noinput &&
python manage.py migrate
""".format(source_folder))
sudo('supervisorctl restart project_name')
git的使用操作,当我在服务器部署django项目时,当使用fabric脚本远程同步gitlab到服务器,发现服务器跑git pull会报错,原来是本地项目更新了,但是我在服务器的django项目的settings也修改了,这样pull会报错,因为本地、服务器、gitlab操作git项目,本地的更新push到服务器,但是服务器的settings也被我修改过了,这样服务器后手pull会报错,git的操作从博客https://blog.csdn.net/misakaqunianxiatian/article/details/51103734学习。解决办法是,第一种是通过隐藏保留服务器本地的修改,直接pull走流程,
git stash
git pull origin master
git stash pop
第二种是完全覆盖本地的项目
git reset --hard
git pull origin master