2009-03-14 31 views
11

Tôi có một trang web chạy trên django, (nhưng câu hỏi áp dụng cho mọi thứ, php, v.v.)Tôi có nên sử dụng git để triển khai các trang web không?

Hiện tại tôi đang sử dụng unison để triển khai các thay đổi của mình và tôi thích nó đã làm điều đó bằng tay !!

Bây giờ, khi tôi bị ướt chân vì git, tôi bắt đầu thích nó! Và tôi nghĩ nếu có lẽ tôi nên sử dụng nó thay vì đồng loạt để triển khai những thay đổi của tôi!

Bằng cách này tôi sẽ có thêm lợi ích khi có thể hoàn nguyên các thay đổi của tôi nếu bằng cách nào đó triển khai chúng hóa ra là một thảm họa!

Câu hỏi đặt ra là:

  • là git thích hợp cho việc triển khai các trang web?

  • Mọi thứ/vấn đề/gotchas mà tôi nên biết?

Trả lời

16

tôi sử dụng git để theo dõi trang web của tôi, và tôi triển khai nó như thế này:

git archive --format=tar --prefix="homepage/" master | gzip | ssh webserver "tar xvz -C ~/public_html" 

Điều này đáng được giải thích một chút.Lệnh lưu trữ cho git sẽ xuất các tệp cho nhánh chính, được nén bằng gzip để giảm thiểu lưu lượng mạng. Nó được nhận từ xa qua ssh, được giải nén vào thư mục đích cuối cùng.

Kịch bản triển khai mà tôi sử dụng có nhiều hơn một chút, nhưng đây là phần quan trọng nhất.

+0

Làm thế nào để bạn sắp xếp cho các tập tin được loại bỏ từ máy chủ? Có thể 'rsync' lấy đầu vào kiểu tar không? – mjs

+0

Với mỗi lần triển khai, một thư mục mới, được phiên bản, được tạo và liên kết với nhau, giúp việc hoàn nguyên dễ dàng hơn. Đây là nơi phần "có nhiều hơn một chút xảy ra" đi vào chơi. –

+0

Cho đến bây giờ tôi cũng sử dụng unison. Điều này có lợi thế, mà thay đổi trên cả hai bên được đồng bộ hóa tự động (ngoại trừ cùng một tập tin đã được thay đổi trên cả hai mặt). Tôi cũng muốn chuyển sang triển khai git trên máy chủ. Nhưng không phải như thế này. Thanh toán git được chạy trên máy chủ. Mã được cập nhật bởi git pull. – guettli

5

Vâng, tôi sử dụng SVN để triển khai trang web của mình, vì vậy tôi muốn nói đi! Hãy nhớ rằng bạn có thể phải khởi động lại/tải lại máy chủ mỗi khi bạn cập nhật mã cho trang web (Tôi không chắc chắn nếu Django hoặc bất cứ điều gì bạn đang chạy nó trên có thể làm việc xung quanh đó).

+0

Để tham khảo: nó không trực tiếp django điều chỉnh cho dù máy chủ cần phải được tải lại, nhưng máy chủ-python cầu. Trong cấu hình Apache-w/-modpython, các thay đổi đối với mã python yêu cầu khởi động lại apache, các thay đổi đối với các mẫu (hoặc các tệp tĩnh) thì không. Thay đổi ORM yêu cầu nhiều hơn. –

+0

Nhập khẩu tùy chỉnh của mod_python có thể tải lại mã Python đã thay đổi mà không cần khởi động lại máy chủ, nhưng tôi thường khởi động lại để an toàn. –

9

Nếu câu hỏi là nếu bạn có thể sử dụng git để triển khai ứng dụng django của bạn, câu trả lời là chắc chắn!

Tuy nhiên, việc triển khai sản xuất một ứng dụng phổ biến có thể trở nên phức tạp - và đi xa hơn là chỉ quay lại các tệp. Bạn có thể cần chạy các tập lệnh DB (cả các kịch bản nâng cấp và hạ cấp), khởi động lại các công việc cron hoặc di chuyển các tệp xung quanh.

Là một phần của quá trình triển khai, bạn có thể muốn sao lưu toàn bộ mã cơ sở để có thể khôi phục lại bất kỳ số phiên bản nào.

Một cách để làm điều này là với Capistrano tự động hóa toàn bộ quá trình triển khai cho bạn. Bạn viết kịch bản trong môi trường phát triển của bạn và đưa ra các lệnh như: cap deploy, cap deploy_with_migrations, cap rollback, vv và mọi thứ được tự động đăng nhập tất cả các cách lên đến quá trình backup và chạy các script DB. Bằng việc triển khai tự động, bạn sẽ loại bỏ các lỗi trong môi trường sản xuất của mình. Gần đây tôi đã nói chuyện với một tổ chức vô tình xóa toàn bộ cơ sở dữ liệu của họ trong khi đang triển khai và cần khôi phục mọi thứ từ bản sao lưu. Lỗi triển khai thực sự có thể phá vỡ doanh nghiệp của bạn để bạn muốn tự động hóa điều này nếu bạn nghiêm túc về nó.

Mặc dù Capistrano là một công cụ triển khai dựa trên Ruby thường được sử dụng với Rails, nó là bất khả tri về khả năng tự động hóa của nó. Có rất nhiều bài viết trên Internet thảo luận về lợi ích của việc triển khai các ứng dụng Django với Capistrano (google - django capistrano).

Bạn cũng có thể kiểm tra check out this link here

+0

Tôi nghĩ rằng bạn đang quá phức tạp này .. Câu hỏi không bao giờ đề cập đến bất cứ điều gì giống như phổ biến/trang web kinh doanh phức tạp .. nhưng, capistrano là một gợi ý tốt – dbr

9

Bạn có thể có một cái nhìn tại Fabric, phổ biến trong Djangonauts ...

Các vấn đề liên quan