Tôi sử dụng git push để triển khai tới sản xuất và thiết lập git hook để chạy tập lệnh. Ưu điểm của cách tiếp cận này là bạn cũng có thể thực hiện việc di chuyển và cài đặt gói cùng một lúc. 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
Sau đó, tạo một tập lệnh /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
Đảm bảo chmod u+x post-receive
và thêm người dùng vào sudoers. Cho phép nó chạy sudo supervisorctl
mà không cần mật khẩu. https://www.cyberciti.biz/faq/linux-unix-running-sudo-command-without-a-password/
Từ máy chủ cục bộ / phát triển của mình, tôi thiết lập git remote
cho phép tôi đẩy đến máy chủ sản xuất
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
Như một phần thưởng, bạn sẽ thấy tất cả các lời nhắc khi tập lệnh đang chạy. Vì vậy, bạn sẽ thấy nếu có bất kỳ vấn đề với việc di chuyển / cài đặt gói / khởi động lại trình giám sát.
kill -HUP
xử lý PID mà thay vào đó sử dụng supervisorctl. Tuy nhiên, đừng nghĩ rằng điều này thay đổi nhiều.