2012-09-27 10 views
8

Tôi có một môi trường tuân thủ PCI DSS chạy một số ứng dụng và tôi muốn khởi động lại chỉ một ứng dụng mà không cần khởi động lại máy chủ. Tôi không có người quản lý vì dường như nó không được phép trong môi trường này.tomcat khởi động lại webapp từ dòng lệnh

Tôi làm cách nào để bắt đầu lại một ứng dụng web thông qua dòng lệnh?

+0

Có thể trùng lặp của [Cách dễ dàng, nhanh chóng để tải lại ứng dụng web trong tomcat trong môi trường dev là gì?] (Https://stackoverflow.com/questions/1800784/whats-an-easy-quick-way-to-reload -a-webapp-in-tomcat-in-dev-môi trường) – rogerdpack

Trả lời

0

Thật không may tôi không nghĩ rằng có một cách để làm điều này từ dòng lệnh. Thay vào đó, tôi sẽ khuyên bạn nên xem nếu có một cách để lưu trữ một ứng dụng duy nhất mà bạn cần phải khởi động lại trong một cá thể riêng biệt của Tomcat để bạn có thể khởi động lại cá thể đó mà không ảnh hưởng đến các ứng dụng khác.

2

Không có quyền truy cập vào ứng dụng trình quản lý, bạn không thể thực hiện điều đó. Nếu bạn có thể truy cập vào ứng dụng quản lý và vẫn muốn sử dụng dòng lệnh thay vì trình duyệt web của mình, bạn có thể thử số này command-line script for managing tomcat được gọi là trình quản lý tomcat. Nó đòi hỏi Python, nhưng cho phép bạn để làm công cụ từ một vỏ Unix như:

$ tomcat-manager --user=admin --password=newenglandclamchowder \ 
> http://localhost:8080/manager/ reload /myapp 

và:

$ tomcat-manager --user=admin --password=newenglandclamchowder \ 
> http://localhost:8080/manager deploy /myapp ~/src/myapp/myapp.war 
+0

Có thể người quản lý có thể được kích hoạt chỉ cho localhost? – andho

17

Dưới đây là cách tôi làm điều đó:

  1. Đảm bảo rằng bạn có người dùng với "vai trò quản lý-kịch bản" trong cơ sở dữ liệu người dùng tomcat của bạn. Đó thường có nghĩa là bạn có dòng như thế này trong ${TOMCAT}/conf/tomcat-users.xml của bạn:
<user username="admin" password="secret" roles="manager-gui,manager-script"/> 

Nếu không, bạn sẽ nhận được một lỗi 403 vì cross-site yêu cầu giả mạo (CSRF) bảo vệ.

  1. Sử dụng curl hoặc bất cứ công cụ dòng lệnh mà bạn muốn lấy URL <yourserver>/manager/text/reload?path=/<context_path>:

    curl --user user:secret http://localhost:8080/manager/text/reload?path=/mypath 
    
+0

Nó đã hoạt động !! Cảm ơn!! – JRichardsz

+0

Anh ấy đặc biệt nói anh ấy không có người quản lý FWIW ... – rogerdpack

+0

Tìm kiếm trên google vẫn hiển thị cho tôi chuỗi này và đây là những gì tôi đang tìm kiếm – Kunal

10

Tôi biết tôi là muộn để đảng, nhưng một mẹo nhỏ bạn có thể thực hiện để tải lại ứng dụng từ dòng lệnh là truy cập web.xml của ứng dụng và chỉ cần chạm vào ứng dụng đó.

touch web.xml

tomcat tải lại ứng dụng mỗi khi nó thông báo một sự thay đổi trong hồ sơ này, nếu bạn chỉ cần chạm vào nó, bạn không thực sự thay đổi các tập tin, chỉ dấu thời gian.

+0

Điều này chỉ đúng nếu bạn có thuộc tính 'autoDeploy = true' trên' 'phần tử (theo mặc định). –

+0

Tôi tin rằng bạn muốn nói rằng điều này tái ứng dụng các ứng dụng. Nếu bạn đi và thay đổi một tập tin tài sản trong thư mục chiến tranh bùng nổ và sau đó chạm vào chiến tranh, nó sẽ triển khai lại, đặt lại tất cả các thay đổi của bạn với những thay đổi ban đầu trong chiến tranh. – jbu