2008-10-13 26 views
17

Tôi đã có một số quy trình xử lý hàng loạt chạy phía sau hậu trường cho trang web Linux/PHP. Họ đang bắt đầu phát triển về số lượng và sự phức tạp, vì vậy tôi muốn mang lại một lượng nhỏ quá trình để chịu đựng chúng.Các phương pháp hay nhất để triển khai các công cụ và tập lệnh vào sản xuất?

Cây nguồn của tôi có một loạt tệp và tập lệnh cpp, được tổ chức với sự phát triển nhưng không được triển khai trong đầu. Sau khi biên dịch tất cả các tệp thi hành, tôi cần phải đặt các tập lệnh và tập lệnh nhị phân khác nhau trên một cụm máy. Các máy khác nhau cần các tệp thực thi, tập lệnh và tệp cấu hình khác nhau cho các quy trình xử lý hàng loạt của chúng. Tôi cũng có một vài công cụ mà tôi đã viết thuộc về mọi máy. Tại thời điểm này, quá trình triển khai này là thủ công và dễ bị lỗi.

Tôi đoán tôi sẽ kết thúc bằng một tập lệnh chạy ở gốc cây nguồn và xây dựng một cây nhỏ hơn mọi thứ cần thiết cho bất kỳ máy nào. Sau đó, tôi sẽ chỉ rsync rằng với các máy thích hợp. Nhưng tôi tò mò làm thế nào những người khác đang quản lý loại vấn đề này. Bất kỳ ý tưởng?

+0

Wow 7 năm sau ... Hiện có hàng tấn công cụ ngoài đó cụ thể là các công cụ tự động phát hành ứng dụng. Đây là một nguồn tài nguyên khởi đầu tuyệt vời để tìm hiểu thêm: https://en.wikipedia.org/wiki/Application_release_automation –

Trả lời

2

Tạo các gói của riêng bạn theo định dạng mà phân phối của bạn sử dụng, ví dụ: Gói Debian (.deb). Đây có thể được sao chép vào mỗi máy và cài đặt bằng tay, hoặc bạn có thể thiết lập kho lưu trữ của riêng bạn và thêm nó vào danh sách các nguồn của bạn.

Các gói của bạn nên được thiết lập sao cho tập lệnh chứa tham chiếu tệp cấu hình, khác nhau trên mỗi máy chủ, tùy thuộc vào tập lệnh nào cần chạy trên mỗi tệp.

Để kết hợp tất cả lại với nhau, bạn có thể tạo gói meta chỉ phụ thuộc vào từng gói khác bạn tạo. Bằng cách đó, khi bạn thiết lập một máy chủ mới, bạn cài đặt một gói meta đó và các gói khác được đưa vào dưới dạng phụ thuộc.

Mặc dù quá trình này có vẻ hơi phức tạp, nếu bạn có nhiều tập lệnh và nhiều máy chủ để triển khai chúng, nó thực sự có thể trả hết trong thời gian dài.

1

Tôi phải triển khai các tập lệnh PHP và cấu hình Apache cho nhiều khách hàng một cách thường xuyên. Vì tất cả chúng đều chạy Debian Linux, tôi đã thiết lập một kho lưu trữ gói Debian trên máy chủ của tôi và tất cả các khách hàng phải làm là gõ apt-get upgrade và chúng có phiên bản mới nhất.

3

Hãy xem cfengine tutorial để xem liệu cfengine có giống như công cụ phù hợp với tình huống của bạn không. Nó có thể là một chút quá phức tạp cho một trang web nhỏ, nhưng nếu nó sẽ liên quan đến máy tính nhiều hơn và cấu hình nhiều hơn trong tương lai, tại một số điểm bạn sẽ kết thúc bằng cách sử dụng cfengine hoặc một cái gì đó như thế.

0

Điều đầu tiên cần làm là đưa tất cả các tập lệnh này vào kho kiểm soát nguồn (svn hoặc git là tốt) để bạn có thể theo dõi các thay đổi đối với các tập lệnh này theo thời gian.

Nếu bạn quan tâm đến ruby, hãy kiểm tra Capistrano, nó rất thích hợp triển khai mọi thứ cho nhiều máy trong một cụm và khá dễ thiết lập. Nó có thể đọc các tập tin trực tiếp từ hệ thống điều khiển phiên bản của bạn.

1

Puppet là một công cụ khác có thể được sử dụng trong trường hợp này. Nó tương tự như cfengine - bạn tạo ra một mô hình triển khai mong muốn và các hình con rối làm thế nào để có được môi trường cho trạng thái này.

19

Có một số danh mục công cụ tại đây. Một số người sử dụng kết hợp các công cụ từ các danh mục này. Tôi đôi khi sử dụng, ví dụ, cả Puppet và Capistrano. Xem Puppet or Capistrano - Use the Right Tool for the Job để thảo luận.

cụ Scripting nhằm triển khai một ứng dụng:

Các mô hình chung với các công cụ trong thể loại này là bạn tạo ra một kịch bản và/hoặc tập tin cấu hình, thường với bộ lệnh tương tự như một Makefile, và công cụ sẽ ssh trên hộp sản xuất của bạn, thực hiện thanh toán nguồn của bạn và chạy bất kỳ bước nào khác là cần thiết.

Các công cụ trong khu vực này thường có cơ sở để quay trở lại phiên bản trước đó. Vì vậy, họ sẽ kiểm tra nguồn của bạn để phát hành/thư mục, và tạo ra một liên kết tượng trưng từ "hiện tại" để "phát hành /" nếu tất cả diễn ra tốt đẹp. Nếu có sự cố, bạn có thể hoàn nguyên về phiên bản trước bằng cách chạy lệnh sẽ xóa "hiện tại" và liên kết nó với thư mục/bản phát hành trước đó.

  • Capistrano đến từ cộng đồng Rails nhưng là mục đích chung. Người sử dụng Capistrano có thể quan tâm đến deprec, một tập hợp các công thức triển khai cho Capistrano.
  • Vlad the Deployer là một thay thế cho Capistrano, một lần nữa từ cộng đồng Rails.
  • Viết tập lệnh shell của riêng bạn hoặc Makefile.

Tùy chọn để nhận các tập tin vào hộp sản xuất:

  • thanh toán trực tiếp từ nguồn. Không phải lúc nào cũng có thể nếu các hộp sản xuất của bạn thiếu các công cụ phát triển, cụ thể là các công cụ quản lý mã nguồn.
  • Nguồn thanh toán cục bộ, sau đó tar/zip nó lên. Sử dụng scp hoặc rsync để sao chép tarball. Điều này đôi khi được ưu tiên cho một thứ như triển khai Amazon EC2, nơi mà một tarball nén có thể tiết kiệm thời gian/băng thông.
  • Nguồn séc tại địa phương, sau đó rsync nó vào hộp sản xuất.

Công cụ Bao bì

Sử dụng hệ thống bao bì của hệ điều hành của bạn để tạo ra các gói có chứa các tập tin cho ứng dụng của bạn. Tạo một gói chủ có phụ thuộc vào các gói khác mà bạn cần. Hệ thống RubyWorks là một ví dụ về điều này, được sử dụng để triển khai một ngăn xếp Rails và ứng dụng mẫu. Sau đó, nó là vấn đề của việc sử dụng apt, yum/rpm, Windows msi, hoặc bất cứ điều gì để triển khai một phiên bản nhất định. Rollback liên quan đến việc gỡ cài đặt và cài đặt lại phiên bản cũ.

cụ chung Nhằm vào Cài đặt Apps/Configs và duy trì một Set Hệ thống

Những công cụ này không nhắm tới các vấn đề về việc triển khai một ứng dụng web, mà là vấn đề tổng quát hơn về việc triển khai/duy trì Apps/Configs cho một tập hợp các máy chủ, hoặc toàn bộ máy trạm của công ty. Chúng nhắm vào quản trị viên hệ thống nhiều hơn nhà phát triển web, mặc dù có thể tìm thấy chúng hữu ích.

  • Cfengine là công cụ trong danh mục này.
  • Puppet nhằm cải thiện trên Cfengine. Nó có một đường cong học tập nhưng nhiều người thấy nó có giá trị thời gian để tìm ra cách để làm các cấu hình. Một khi bạn đã có nó đi, mỗi hộp kiểm tra máy chủ trung tâm định kỳ và chắc chắn rằng tất cả mọi thứ được cập nhật. Nếu ai đó chỉnh sửa tệp hoặc thay đổi quyền, điều này sẽ được phát hiện và sửa chữa.Vì vậy, không giống như các công cụ triển khai ở trên, Puppet không chỉ đặt các tệp ở đúng nơi cho bạn, nó đảm bảo chúng ở lại như vậy.
  • Chef hơi nhỏ hơn Puppet với cách tiếp cận tương tự.
  • Smartfrog là một công cụ khác trong danh mục này.
  • Ansible làm việc với một file YAML đơn giản và không đòi hỏi các đại lý chạy trên các máy chủ nó quản lý

Để so sánh những điều này và nhiều công cụ hơn trong thể loại này, xem bài viết Wikipedia, Comparison of open source configuration management software.

+0

Câu trả lời hay, có nhiều thông tin và được viết tốt. Chỉ cần một lưu ý: năm đã trôi qua và bây giờ Puppet hiện Windows quá. – Luke404

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