J'utilise git push pour déployer en production et mettre en place des git hooks pour exécuter un script. L'avantage de cette approche est que vous pouvez également faire votre migration et l'installation du paquet en même temps. 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
Ensuite, créez un 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
Veillez à chmod u+x post-receive
et ajouter l'utilisateur à sudoers. Autorisez-le à s'exécuter sudo supervisorctl
sans mot de passe. https://www.cyberciti.biz/faq/linux-unix-running-sudo-command-without-a-password/
A partir de mon serveur local / de développement, j'ai configuré git remote
qui me permet de pousser vers le serveur de production
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
En prime, vous pourrez voir toutes les invites pendant que le script s'exécute. Ainsi, vous verrez s'il y a un problème avec la migration/l'installation du paquet/le redémarrage du superviseur.