2010-10-14 37 views
9

Tôi đã đăng this question tìm kiếm một cái gì đó tương tự như Buildout cho Perl. Tôi nghĩ rằng Shipwright là những gì tôi đang tìm kiếm nhưng tôi không thực sự chắc chắn. Tôi đã chơi xung quanh với nó và tôi tạo ra một dự án, nhập khẩu tất cả các nguồn và phụ thuộc của tôi và tôi đã xuất khẩu tất cả mọi thứ để một tàu sau đó loại tài liệu chỉ dừng lại. Tôi phải làm gì với tàu đóng tàu? Tôi có làm công việc phát triển thực tế của mình trong tàu không, hay tôi có phát triển trong xưởng đóng tàu không? Tôi giả định rằng các tàu chỉ để triển khai, nhưng làm thế nào để tôi thực sự triển khai một tàu đến một máy chủ web (nói rằng tôi đang sử dụng Linux, apache và chỉ chạy cgi thẳng).Cách tốt để triển khai một ứng dụng Perl là gì?

Shipwright là điều phù hợp với những gì tôi đang cố gắng hoàn thành hoặc có cái gì khác thích hợp hơn không? Lý tưởng nhất là tôi có thể sử dụng Shipwright tương tự như cách tôi sử dụng Buildout. Tôi sử dụng Buildout để tạo ra một môi trường cô lập tốt đẹp cho sự phát triển của tôi, và tôi cũng sử dụng Buildout khi triển khai cho các máy chủ trực tiếp để quản lý tất cả các phụ thuộc của ứng dụng của tôi.

EDIT: Dưới đây là những điểm nổi bật về những gì tôi có thể làm với Buildout mà tôi muốn có thể thực hiện trong Perl.

Với Buildout, tôi có một tệp trong cơ sở mã của tôi liệt kê các phụ thuộc (trong đó Perl sẽ là các mô-đun CPAN hoặc các kho lưu trữ nguồn khác). Tôi có thể chạy một kịch bản bootstrap mà sẽ lấy tất cả những phụ thuộc và thả chúng vào một thư mục trong dự án của tôi và KHÔNG cài đặt chúng ở mức hệ thống. Buildout cũng tạo ra các kịch bản tiện ích có thể làm bất cứ điều gì bạn muốn (chạy thử nghiệm, các công cụ dòng lệnh khác, bất kỳ thứ gì thực sự) và các kịch bản đó thêm rõ ràng các phụ thuộc vào đường dẫn sao cho các tập lệnh của tôi đang chạy tất cả các phụ thuộc của tôi có sẵn để được nhập.

Điều này thực sự hoạt động rất tốt là nó cho phép tôi quản lý các phụ thuộc của mình mà không phải cài đặt bất cứ thứ gì ở cấp hệ thống. Mà làm cho việc thay đổi từ phiên bản này sang phiên bản khác rất dễ dàng. Ngoài ra, nó cho phép tôi có nhiều dự án Buildout chạy trên cùng một hệ thống sử dụng các phiên bản khác nhau của cùng một mô-đun. Cuối cùng, một lợi ích lớn là với cấu trúc thư mục của Buildout, tôi chỉ có thể cam kết các phụ thuộc vào kiểm soát nguồn và triển khai đến một máy mới mà tôi chỉ cần thực hiện thanh toán và tất cả các phụ thuộc của tôi đã hài lòng mà không cần phải chạm vào bất kỳ thứ gì được cài đặt một mức hệ thống.

+0

Các tùy chọn bạn nên xem xét phụ thuộc rất nhiều vào những gì bạn đang cố gắng làm. Bạn có thể muốn có một cái nhìn tại cải cách hành chính, quá. – tsee

+0

Tò mò vì tôi chưa bao giờ Buildout; (các) hệ thống như thế nào giải quyết vấn đề này? Phân phối mã? Đang chạy mã? –

+0

Đối với bất cứ ai tìm thấy điều này bằng cách tìm kiếm thông tin về Shipwright, có một hướng dẫn thực sự gọn gàng ở đây về cách "gửi" tàu của bạn. http://serialized.net/2010/08/deploying-self-contained-perl-dancer-applications/ Tôi hiện đang cố tạo một quy trình triển khai cho một ứng dụng web. – Relequestual

Trả lời

3

Tôi không nghĩ rằng bạn sẽ tìm thấy bất cứ điều gì chính xác như Buildout trong Perl, nhưng bạn có thể đặt cùng một vài điều mà sẽ làm các trick.

Bạn có thể sử dụng một kịch bản tiêu chuẩn Build.PL cho Module::Build để quản lý phụ thuộc của bạn và có lệnh để chạy thử nghiệm vv

Sau đó, bạn có thể sử dụng cpanminus để làm quá trình cài đặt của những người phụ thuộc vào một địa phương (không hệ thống).

Sau đó, bạn có thể sử dụng Shipwright để thực hiện gói và triển khai dự án với những phụ thuộc hiện tại cục bộ này.

+0

Tôi thích âm thanh đó. Từ những âm thanh của nó tôi không nghĩ rằng tôi sẽ cần Shipwright với Module :: Xây dựng và cpanminus. Tôi sẽ xem xét những điều đó, cảm ơn! –

+0

có vẻ như điều này có thể tương tự như xây dựng, tuy nhiên nó cũng liên quan đến rất nhiều công việc thủ công (cài đặt từng phụ thuộc riêng lẻ là những gì tôi đang cố gắng tránh), tôi đang tìm kiếm một thứ hoàn toàn tự động. Có lẽ tôi sẽ chỉ cần phát triển môi trường địa phương tự động hóa của riêng tôi sẽ sử dụng cpanm dưới bìa. –

+0

@matthew - Module :: Xây dựng có một mục tiêu "installdeps" sẽ cài đặt tất cả các phụ thuộc và phụ thuộc của chúng. Tôi không biết nếu có một cách dễ dàng để móc cpanm vào đó và tôi không biết cách dễ nhất để nói với nó bằng cách sử dụng một cái gì đó như địa phương :: lib để cài đặt những thứ cục bộ, vv Nhưng điều đó sẽ giúp bạn bắt đầu. – mpeters

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