ฉันใช้ git push เพื่อปรับใช้กับการผลิตและตั้งค่า git hooks เพื่อรันสคริปต์ ข้อดีของวิธีนี้คือคุณสามารถย้ายข้อมูลและติดตั้งแพ็คเกจได้ในเวลาเดียวกัน 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 แทน อย่าคิดว่าสิ่งนี้จะเปลี่ยนแปลงไปมากนัก