2012-05-22 36 views
35

Hiện tại tôi đang chạy đơn tomcat với ứng dụng WAR đơn lẻ trên cổng 80. Tên miền www.foo.org được trỏ tới máy chủ ip này.Tomcat và nhiều tên miền/ứng dụng

Quy trình thêm www.bar.org miền cho ứng dụng khách khác trên cổng 80 là gì?

Cảm ơn bạn

Trả lời

44

Ngay từ đầu bạn có một hồ sơ duy nhất "Host" trong conf của bạn/server.xml cho localhost

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
       prefix="localhost_access_log." suffix=".txt" 
       pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
</Host> 

Bây giờ bạn có thể thêm một "Host" hồ sơ, ví dụ

<Host name="anotherclient.com" appBase="anotherclient" unpackWARs="true" autoDeploy="true"> 

     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
      prefix="anotherclient_access_log." suffix=".txt" 
      pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
    </Host> 

trong đó name="anotherclient.com" là miền của ứng dụng khách mới và appBase="anotherclient" là tên thư mục gốc của ứng dụng web (nơi bạn triển khai chiến dịch của mình); nó liên quan đến thư mục nhà tomcat.

Thay đổi sẽ được chấp nhận sau khi khởi động lại tomcat.

Các yêu cầu đi đến bất kỳ lĩnh vực khác (không được liệt kê trong server.xml) nhưng trỏ đến địa chỉ IP của máy chủ của bạn sẽ được chuyển đến các ứng dụng mặc định, nó được quy định trong Engine yếu tố

<Engine name="Catalina" defaultHost="localhost"> 
+5

Điều này có nghĩa là các cuộc chiến tranh có tại '/ opt/tomcat/webapps/ROOT.war' cho trang web foo.org ban đầu, và sau đó'/opt/tomcat/anotherclient/ROOT.war' cho trang web bar.org mới ? – CodeMed

+1

@CodeMed Vâng, đó là chính xác. Tôi chỉ thử bản thân mình và đặt các WAR như thế có vẻ phù hợp với tôi. –

+1

chúng ta phải tạo ra thư mục đó một ourclient ourself hoặc nó tạo sau khi khởi động lại tomcat7 – dollar

3

Thông thường, bạn có một tomcat (hoặc máy chủ ứng dụng khác) trên cổng khác nhau từ 80 (như 8080 hoặc 7001 hoặc bất cứ điều gì bạn muốn). Sau đó bạn đặt một máy chủ web (như máy chủ http apache) trên cổng 80 và cấu hình một hoặc nhiều trình kết nối để trỏ đến cổng khác nhau trên máy chủ ứng dụng khác nhau với địa chỉ khác nhau.

Đối với Apache http + tomcat bạn có thể có một cái nhìn tại liên kết này:

http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

+2

Không có lý do đặc biệt để thêm một sản phẩm khác vào môi trường của OP: vấn đề này có thể được giải quyết bằng cách sử dụng riêng Tomcat. –

+1

Đó chỉ là thực hành tốt nhất trong môi trường chuyên nghiệp để có máy chủ ứng dụng và web. – Guaido79

+3

Malarkey: Tomcat là một máy chủ web hoàn toàn chấp nhận được. Gọi một cái gì đó là "thực hành tốt nhất" không làm cho nó trở thành phương pháp hay nhất. Đó là một/phổ biến/thực hành, nhưng chắc chắn không phải là một thực hành "tốt nhất". –

5

Trong cấu hình mặc định của nó, Tomcat chấp nhận yêu cầu đối với bất kỳ tên máy và gửi chúng đến "localhost" < chủ > được định nghĩa trong conf/server.xml. Nếu bạn không thay đổi điều đó, thì tất cả những gì bạn phải làm là đảm bảo rằng bạn đã thiết lập bản ghi DNS cho cả hai tên máy chủ để trỏ đến máy chủ của bạn.

Nếu bạn muốn có một bộ ứng dụng web khác nhau cho mỗi tên máy chủ, thì bạn sẽ phải xác định một máy chủ < thứ hai > trong conf/server.xml và sử dụng tên máy chủ thích hợp cho nó. (Lưu ý rằng bạn sẽ luôn phải có máy chủ lưu trữ "mặc định" trong đó tất cả yêu cầu không khớp với bất kỳ máy chủ được xác định rõ ràng nào).

Bạn có thể đọc tài liệu cho < chủ > đây: http://tomcat.apache.org/tomcat-7.0-doc/config/host.html (Đó là cho Tomcat 7.0.x. Bạn đã không đề cập đến phiên bản của bạn vì vậy tôi đã cho bạn một liên kết đến tài liệu phiên bản mới nhất của).

+0

Cảm ơn bạn - Phiên bản 7 của nó, Còn các tệp WAR thì sao? mỗi khách hàng cần triển khai khác nhau? – user648026

+1

@ user648026 Mỗi đều có appBase riêng, vì vậy bạn có thể chọn đặt các tệp WAR của bạn vào một trong hai hoặc cả hai. Chọn một tệp tin sẽ làm cho tệp WAR đó chỉ truy cập được bằng tên máy chủ là , trong khi đặt tệp WAR vào cả hai nghĩa là bạn sẽ có hai bản sao của webapp chạy đồng thời trong cùng một vùng chứa: một cho một máy chủ và một cho người khác . –

+0

Vì vậy, duy nhất tomcat chạy trên cổng 80 có thể xử lý nhiều máy chủ trên cùng một cổng (80) với một WAR, sử dụng nhiều "máy chủ" cấu hình. – user648026

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