Saya menggunakan git push untuk menerapkan ke produksi dan menyiapkan git hook untuk menjalankan skrip. Keuntungan dari pendekatan ini adalah Anda juga dapat melakukan migrasi dan penginstalan paket secara bersamaan. 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
Kemudian buat skrip /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
Pastikan untuk chmod u+x post-receive
, dan tambahkan pengguna ke sudoers. Biarkan berjalan sudo supervisorctl
tanpa kata sandi. https://www.cyberciti.biz/faq/linux-unix-running-sudo-command-without-a-password/
Dari server lokal / pengembangan saya, saya menyiapkan git remote
yang memungkinkan saya untuk mendorong ke server produksi
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
Sebagai bonus, Anda akan melihat semua petunjuk saat skrip sedang berjalan. Jadi Anda akan melihat apakah ada masalah dengan migrasi / instalasi paket / pengawas restart.
kill -HUP
- benar memproses PID, tetapi gunakan supervisorctl sebagai gantinya. Namun, jangan berpikir ini banyak berubah.