Я использую git push для развертывания в производственной среде и настраиваю перехватчики git для запуска скрипта. Преимущество этого подхода в том, что вы также можете выполнять миграцию и установку пакета одновременно. https://mikeeverhart.net/2013/01/using-git-to-deploy-code/
mkdir -p /home/git/project_name.git
cd /home/git/project_name.git
git init --bare
Затем создайте сценарий /home/git/project_name.git/hooks/post-receive
.
#!/bin/bash
GIT_WORK_TREE=/path/to/project git checkout -f
source /path/to/virtualenv/activate
pip install -r /path/to/project/requirements.txt
python /path/to/project/manage.py migrate
sudo supervisorctl restart project_name
Обязательно chmod u+x post-receive
добавьте пользователя в sudoers. Разрешить запуск sudo supervisorctl
без пароля. https://www.cyberciti.biz/faq/linux-unix-running-sudo-command-without-a-password/
Я настроил свой локальный сервер / сервер разработки, git remote
который позволяет мне отправлять на рабочий сервер
git remote add production ssh://user_name@production-server/home/git/project_name.git
# initial push
git push production +master:refs/heads/master
# subsequent push
git push production master
В качестве бонуса вы увидите все запросы во время выполнения скрипта. Так вы увидите, есть ли проблемы с миграцией / установкой пакета / перезапуском супервизора.
kill -HUP
стал обрабатывать PID, а вместо этого использовал supervisorctl. Однако не думайте, что это сильно изменится.