Vì vậy, gần đây tôi đã làm điều tương tự và nhận thấy rằng chiến lược dưới đây là lựa chọn tốt nhất. Tôi sẽ giả định rằng bạn đã quen thuộc với việc phân nhánh git vào thời điểm này, cũng như điều khiển từ xa Heroku. Nếu bạn không, bạn nên đọc đầu tiên: https://devcenter.heroku.com/articles/git#multiple-remotes-and-environments
Chiến lược chính Tôi đang tham gia là phải có một codebase đơn (một Git repo đơn) với:
- Chi nhánh
master
có chứa tất cả mã được chia sẻ của bạn: mẫu, lượt xem, URL.
- Nhiều chi nhánh
site
, dựa trên master
, chứa tất cả các tùy chỉnh theo trang web cụ thể: css, hình ảnh, tệp cài đặt (nếu chúng rất khác nhau).
Cách làm việc này là như vậy:
Trước tiên, hãy chắc chắn rằng bạn đang ở trên nhánh master
.
Thứ hai, tạo chi nhánh git mới cho một trong các miền của bạn, ví dụ: git checkout -b somedomain.com
.
Thứ ba, tùy chỉnh chi nhánh somedomain.com
của bạn để trông giống như cách bạn muốn.
Tiếp theo, triển khai somedomain.com
trực tiếp đến Heroku, bằng cách chạy heroku create somedomain.com --remote somedomain.com
.
Bây giờ, hãy đẩy mã chi nhánh somedomain.com
của bạn vào ứng dụng Heroku mới của bạn: git push somedomain.com somedomain.com:master
. Điều này sẽ triển khai mã của bạn trên Heroku.
Bây giờ bạn đã có chi nhánh somedomain.com
bạn triển khai với ứng dụng Heroku riêng của mình, bạn có thể làm tất cả những thứ Heroku bình thường bằng cách thêm --remote somedomain.com
để Heroku bình thường của bạn lệnh, ví dụ:
heroku pg:info --remote somedomain.com
heroku addons:add memcache:5mb --remote somedomain.com
- v.v.
Vì vậy, bây giờ bạn về cơ bản có hai chi nhánh: chi nhánh master
, và chi nhánh somedomain.com
.
Quay lại chi nhánh master
và tạo một chi nhánh mới cho miền tiếp theo của bạn: git checkout master; git checkout -b anotherdomain.com
. Sau đó, tùy chỉnh nó theo ý thích của bạn (css, các công cụ cụ thể cho trang web) và triển khai giống như cách chúng tôi đã làm ở trên.
Bây giờ tôi chắc chắn rằng bạn có thể thấy nơi này sẽ diễn ra ngay bây giờ. Chúng tôi có một nhánh git cho mỗi tùy chỉnh domains
và mỗi miền của chúng tôi có ứng dụng Heroku riêng. Lợi ích (rõ ràng) là mỗi tùy chỉnh dự án này dựa trên chi nhánh master
, có nghĩa là bạn có thể dễ dàng thực hiện cập nhật cho tất cả trang web cùng một lúc.
Giả sử bạn cập nhật một trong các chế độ xem của mình trong chi nhánh master
- cách bạn có thể triển khai nó thành tất cả các trang web tùy chỉnh cùng một lúc? Dễ dàng!
Chỉ cần chạy:
git checkout somedomain.com
git merge master
git push somedomain.com somedomain.com:master
# triển khai những thay đổi
Và lặp lại cho mỗi người trong lĩnh vực của bạn. Trong môi trường của tôi, tôi đã viết một kịch bản thực hiện điều này, nhưng thật dễ dàng để làm thủ công nếu bạn muốn.
Nhưng dù sao, hy vọng điều đó sẽ hữu ích.
Tôi đang gặp vấn đề tương tự khi tìm giải pháp tốt nhất. Hãy xem xét điều này: http://www.huyng.com/posts/franchising-running-multiple-sites-from-one-django-codebase/ –
Cảm ơn câu trả lời của bạn. Tôi đã sử dụng https://github.com/wardi/django-dynamicsites-lite – Alex