Utilizo git push para implementar en producción y configuro git hooks para ejecutar un script. La ventaja de este enfoque es que también puede realizar la migración y la instalación del paquete al mismo tiempo. 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
Luego crea un guión /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
Asegúrese de hacerlo chmod u+x post-receive
y agregue usuarios a los sudoers. Permita que se ejecute sudo supervisorctl
sin contraseña. https://www.cyberciti.biz/faq/linux-unix-running-sudo-command-without-a-password/
Desde mi servidor local / de desarrollo, configuro git remote
que me permite enviar al servidor de producción
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 beneficio adicional, podrá ver todas las indicaciones mientras se ejecuta el script. Entonces verá si hay algún problema con la migración / instalación del paquete / reinicio del supervisor.
kill -HUP
procesaría el PID, sino que usaría supervisorctl. Sin embargo, no creo que esto cambie mucho.