2008-09-24 34 views
6

Chúng tôi đang tìm cách tự động triển khai các ứng dụng web, đặc biệt khi đi từ phát triển địa phương đến máy chủ từ xa.Bạn sử dụng những gì để triển khai các ứng dụng web của mình?

Ngăn xếp hiện tại của chúng tôi là LAMP từ xa, MAMP cục bộ, nhưng tôi quan tâm đến những gì mọi người đang sử dụng cho tác vụ này bất kể môi trường của họ là gì?

Tôi không chỉ nói về di chuyển tập tin xung quanh, tôi cũng có nghĩa là xem xét các nhiệm vụ khác như:

  • Thiết lập giản đồ cơ sở dữ liệu
  • Quản lý cấu hình
  • Misc nhiệm vụ cần thiết cho việc triển khai (tạo log các tập tin vv)
+0

[Mercurial] (http://www.selenic.com/mercurial/wiki/) –

Trả lời

0

rsync-> công cụ tuyệt vời

Nhưng, t anh ta trả lời phụ thuộc vào enviro của bạn. Bạn sử dụng điều gì để kiểm soát nguồn? Bạn sử dụng cái gì cho một hệ thống xây dựng? Vv

Triển khai cho máy chủ web không có gì khác ngoài lệnh "cp" tùy thuộc vào tệp nào đã thay đổi. Bạn cần xây dựng một quy trình theo dõi các tệp thay đổi, kéo các tệp đó từ điều khiển nguồn và sau đó đẩy các thay đổi đó. Khi bạn đang xử lý các tệp PHP, làm cách nào để bạn biết tệp nào cần đẩy? Đó chính là vấn đề. Bạn giải quyết điều đó, bạn sẽ ổn thôi. Công cụ để cp các tập tin và "triển khai" chúng là phần dễ dàng.

2

Chúng tôi sử dụng "xuất khẩu svn" khi cần xuất hiện trực tiếp. Giữ mã của chúng tôi dưới sự kiểm soát sửa đổi và cho phép chúng tôi tích cực phát triển nó trên các hộp kiểm tra hoặc máy tính cục bộ của chúng tôi.

3

Khi nào và ở đâu có thể, Tôi thích triển khai tự động chẳng hạn như với Ant, thậm chí triển khai FTP có thể được xử lý một cách dễ dàng. Tự động hóa việc triển khai, giống như việc xây dựng tự động, đưa công việc đoán và lỗi ra khỏi quy trình và theo định nghĩa cung cấp ít nhất tài liệu tối thiểu cần thiết (tức là kịch bản xây dựng) cho một lập trình viên mới để hiểu quy trình.

2

Tôi đã không thử nó chưa nhưng tôi xem xét sử dụng Fabric trong tương lai:

Vải là một pythonic công cụ triển khai từ xa đơn giản.

Nó được thiết kế để tải tệp lên và chạy các lệnh shell trên, một số máy chủ song song hoặc serially. Các lệnh này được nhóm trong các tác vụ (các hàm python thường xuyên) và được chỉ định trong một 'fabfile'.

Nó hơi giống như một Capistrano bị đổ dồn, ngoại trừ trong Python, bạn không thể mong đợi bạn triển khai các ứng dụng Rails và lệnh 'put' hoạt động.

Không giống như Capistrano, Vải muốn ở lại nhỏ, nhẹ, dễ thay đổi và không bị ràng buộc vào bất kỳ khung cụ thể nào.

+0

Thêm chi tiết về vải: http://stackoverflow.com/questions/1233655/what-is-the-simplest-way- to-ssh-using-python – hughdbrown

3

Một trong những điều được sử dụng trong công ty trước đó là - tin hay không - tệp RPM.Khi chúng tôi xây dựng phần mềm của mình, tất cả các phần khác nhau của nó sẽ được đóng gói thành các tệp RPM, sau đó được triển khai tới máy chủ.

  1. Máy chủ chính trong một cụm có danh sách tất cả máy chủ và vai trò của chúng, được sử dụng để xác định gói nào mà mỗi máy chủ cần.
  2. Giai đoạn triển khai sẽ kiểm tra các phiên bản trên mỗi máy chủ và xác định máy chủ nào cần nâng cấp. Mỗi máy chủ sẽ nhận được một bản sao của bất kỳ gói mới nào cần thiết,
  3. Mỗi máy chủ sẽ có các gói được cài đặt bởi kịch bản triển khai, sẽ quản lý các nhiệm vụ và kiểm tra trước khi cài đặt và sau khi cài đặt.
  4. Kịch bản triển khai sẽ kích hoạt một quy trình riêng, hệ thống quản lý cấu hình để đọc các tệp cấu hình để tạo các tệp cấu hình cho bất kỳ dịch vụ nào cần máy chủ (dựa trên danh sách vai trò) và trang trại cho máy chủ
  5. Hệ thống triển khai sẽ tạo ra một danh sách các hành động cần thực hiện (các dịch vụ sẽ được khởi động lại) cho mỗi hệ thống và trình bày các hành động đó cho nhà điều hành quản lý cập nhật. Sau đó, nhà điều hành sẽ thực hiện khởi động lại (nếu cập nhật xảy ra trong thời gian bảo trì theo lịch trình của khách hàng, hoặc chúng tôi đã có lệnh làm việc để khởi động lại dịch vụ giữa ngày) hoặc tạo phiếu cho nhân viên ban đêm với danh sách nhiệm vụ được làm.

RPM là một bản hack khủng khiếp, nhưng khi tất cả khách hàng của chúng tôi đều chạy Red Hat Linux (theo yêu cầu của chúng tôi), nó có ý nghĩa hoàn hảo. Nếu tôi có một sự lựa chọn, tôi sẽ đi với một hệ thống như Debian hay Ubuntu, và thiết lập một kho lưu trữ mà tất cả các hệ thống có thể kéo ra. Tuy nhiên, nó hoạt động tốt cho hàng trăm khách hàng, với hàng nghìn máy chủ. Khá gọn gàng.

1

Capistrano hoạt động rất tốt cho loại điều này. Nó xuất phát từ hệ sinh thái Ruby on Rails và ban đầu rất gắn với việc triển khai các ứng dụng Rails. Vì rất nhiều người đã nhận thấy rằng nó là tiện dụng cho điều khiển máy chủ từ xa, nó trở thành một mục đích chung chung hơn một chút.

Với không có thiết lập thêm, Capistrano:

  • Sử dụng SSH để kết nối với máy chủ ứng dụng
  • Kiểm tra ra mã nguồn mới nhất từ ​​Subversion để một mới, ngày, thư mục
  • Kích hoạt phiên bản mới bằng cách cập nhật liên kết tượng trưng hoặc hai liên kết tượng trưng hoặc hai số
  • Tải lại máy chủ ứng dụng

Và tất cả điều này với r chức năng ollback.

Một lựa chọn tốt khác là sử dụng hệ thống đóng gói của hệ điều hành (RPM, deb/apt, v.v.). Điều này có xu hướng yêu cầu mức độ quen thuộc với hệ điều hành và các chính sách của nó, nhưng phù hợp với các công cụ khác nếu bạn biết mình đang làm gì.

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