2012-03-31 45 views
14

Trong 10 năm qua, tôi đã có cơ hội triển khai các ứng dụng web vào một thời gian vô số tomcat. Tôi cũng đã viết một số tập lệnh cố gắng làm điều đó tự động, nhưng không bao giờ quản lý để tự động hoàn toàn nó.Triển khai một cuộc chiến với tomcat

Đây là vấn đề. Tôi đang cố gắng triển khai một cuộc chiến mới, với cùng tên như một cuộc chiến tranh hiện tại trong các ứng dụng web của tomcat của tôi.

Tùy chọn 1: Cách tiếp cận ngây thơ - chỉ cần sao chép chiến tranh và đợi nó cập nhật thư mục đã phát. Điều này đôi khi làm việc. Nhiều lần - thư mục được giải mã không được cập nhật trong thời gian hợp lý.
Tùy chọn 2: Cách tiếp cận thông qua - dừng tomcat, xóa tất cả các cuộc chiến tranh và tệp tạm thời. sao chép chiến tranh và bắt đầu tomcat. Điều này thường liên quan đến việc ngừng tomcat, chờ đợi một thời gian - và sau đó kiểm tra xem liệu quá trình này vẫn còn sống và giết chết nó.
Tùy chọn 3: Cách tiếp cận thủ công - Điều này có thể gây ngạc nhiên, nhưng tôi thấy nó hoạt động nhiều lần - sao chép chiến tranh, chờ thư mục được giải mã được cập nhật và sau khi khởi động lại - khởi động lại tomcat. nếu không - bạn có thể thử xóa các tệp công việc tạm thời và đôi khi giúp.

Tôi cũng đã thử nhiều tùy chọn - với thứ tự và tập con khác nhau của hành động - khởi động lại, dừng, xóa chiến tranh, xóa phát nổ, xóa bối cảnh cục bộ, xóa thư mục làm việc cục bộ, sao chép chiến tranh, ngủ, so sánh ngày, yêu cầu tomcat một cách lịch sự để tải lại, vv Không có gì dường như chỉ hoạt động.

Nó có thể là điều mà tôi đang làm sai, nhưng tôi đã nghe cùng một kinh nghiệm từ rất nhiều người, vì vậy tôi ở đây để nhận được một số lời khuyên - những gì nói bạn? Cách tốt nhất để triển khai một cuộc chiến mới cho một tomcat là gì?

Cảm ơn!

+0

vấn đề là gì? thời gian chết? Đây có phải là DEV/PREPROD/bất kỳ hoặc PROD nào không? Bạn có cần phải duy trì các phiên trong suốt chu trình tắt/khởi động lại không? – TacticalCoder

+0

hey @krakover nếu bạn hài lòng với một trong các câu trả lời, bạn có thể đánh dấu một trong số chúng như được chấp nhận – systemkern

Trả lời

0

Tôi chỉ sử dụng công cụ quản lý Tomcat để ngừng quá trình, xóa nó và cài đặt WAR mới. Dễ như ăn bánh.

9

Tôi có xu hướng đi cho tùy chọn 2. Nếu có một dự án tôi đang làm việc trong ide đặc biệt là với một trình gỡ lỗi đính kèm, tôi tìm thấy những điều cuối cùng bắt đầu nhận được điều sai lầm. Có thể đuổi theo cá trích đỏ trong một giờ trước khi tôi phát hiện ra mọi thứ đi xa làm cho vấn đề biến mất. Sau đó, nó là tốt đẹp để có một kịch bản trên mặt mà tôi thỉnh thoảng có thể khởi động để xóa tất cả mọi thứ lên:

  • lực shutdown với 60 timeout
  • rõ ràng ra các thư mục log, file tạm, làm việc
  • rõ ràng ra thư mục webapp
  • bản sao trong hồ sơ chiến tranh mới từ việc xây dựng vị trí
  • nổ các tập tin chiến tranh mới
  • nếu cần thiết, hãy chạy một kịch bản awk để tùy chỉnh các giá trị cụ máy trong các tập tin thuộc tính (vì thế cũ trước plode)
  • khởi động với các thiết lập biến môi trường CATALINA_PID (để cho phép lực lượng shutdown)

Thông thường điều shutdown độc đáo. Nếu không, sau đó thường có một chủ đề nền đã được bắt đầu lên nhưng thiếu một móc tắt máy (nói một khách hàng memecached) và cần phải được săn lùng. Thông thường, chỉ cần bỏ cuộc chiến mới dường như có tác dụng. Nhưng nếu trong một môi trường dev, một kịch bản để làm việc khởi động lại toàn bộ là tốt đẹp.

+1

+1 cho tập lệnh để quản lý tất cả điều này, cách đáng tin cậy và lặp lại duy nhất để đi – Brian

+0

. khi khởi động và xóa khi tắt máy, vì vậy tôi có thể biết khi nào nó tắt thông qua một kịch bản mà không cần đoán. Đó là một nỗi đau (và tôi không nhớ làm thế nào để làm điều đó), nhưng nó đã được giá trị nó. Triển khai của tôi là 100% tự động. –

2

tôi tải lên các WAR vào thư mục nhà của tôi, cd vào/usr/local/tomcat, sau đó chạy các lệnh sau:

bin/shutdown.sh 
rm webapps/ROOT.war 
rm -rf webapps/ROOT 
cp ~/ROOT.war webapps 
bin/startup.sh 

Dễ dàng đủ để tự động hóa, nhưng tôi đã quá lười biếng (hoặc không đủ lười biếng) để làm điều đó cho đến nay.

+1

Nếu bạn thay thế "cp" cho "mv", nó sẽ triển khai nhanh hơn nhiều ... – Kdeveloper

4

Hàng hóa - http://cargo.codehaus.org/ - có thể được sử dụng để triển khai từ xa tệp WAR vào một số vùng chứa web, bao gồm Tomcat.

Xem http://cargo.codehaus.org/Quick+start để biết các ví dụ trong Java. Hỗ trợ Ant và Maven cũng có sẵn.

+0

Tomcat cũng cung cấp các tác vụ triển khai (và undeployment) cho Ant. – erickson

10

bạn có thể dễ dàng tự động hoá này trong một kịch bản shell với curl

trên tomcat 6:

curl --upload-file deployme.war "http://tomcat:[email protected]:8088/manager/deploy?path=/deployme&update=true" 

trên tomcat 7

curl -T "deployme.war" "http://tomcat:[email protected]:8080/manager/text/deploy?path=/deployme&update=true" 

hoặc thông qua hầu hết các porgramming ngôn ngữ. Tôi đã đăng giải pháp dựa trên java here

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