Eu uso o git push para implantar na produção e configurar git hooks para executar um script. A vantagem dessa abordagem é que você também pode fazer a migração e a instalação do pacote ao mesmo tempo. 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
Em seguida, crie um script /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
Certifique-se de chmod u+x post-receive
adicionar o usuário ao sudoers. Permita que ele seja executado sudo supervisorctl
sem senha. https://www.cyberciti.biz/faq/linux-unix-running-sudo-command-without-a-password/
Do meu servidor local / de desenvolvimento, eu configurei o git remote
que me permite enviar para o servidor de produção
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
Como um bônus, você verá todos os prompts enquanto o script está sendo executado. Portanto, você verá se há algum problema com a migração / instalação do pacote / reinicialização do supervisor.
kill -HUP
o PID do processo, mas usaria o supervisorctl. Mas não pense que isso muda muito.