tomcat - biến CATALINA_BASE và CATALINA_HOME


97

Tôi có nhiều trường hợp tomcat 6 chạy trên cùng một máy chủ (Linux) và nó hoạt động như mong đợi. Tôi đang cố gắng tìm hiểu cách thực hành tiêu chuẩn liên quan đến việc thiết lập các biến CATALINA_HOMECATALINA_BASE.

Trong cài đặt tomcat của tôi, tôi đã thiết lập CATALINA_HOMEđể trỏ đến một thư mục "chung" (giả sử /tomcat6) và CATALINA_BASEbiến thay đổi tùy thuộc vào tên phiên bản (nói /tomcat_instance1, /tomcat_instance2)

Câu hỏi của tôi là:

  • Tôi có thực sự cần hai biến không?
  • Hoặc Tôi có thể chỉ có một cái CATALINA_HOMEvà bỏ đi với CATALINA_BASE(hoặc ngược lại)?

3
Câu hỏi tự nó là một câu trả lời thực sự.
Koray Tugay

4
Lý do bạn cần làm điều này là tách biệt việc bảo trì phần mềm Tomcat (nằm trong đó $CATALINA_HOME) khỏi việc bảo trì cấu hình và nội dung phiên bản Tomcat (tồn tại $CATALINA_BASE).
reinierpost

Câu trả lời:


106

Nếu bạn đang chạy nhiều phiên bản Tomcat trên một máy chủ duy nhất, bạn nên đặt CATALINA_BASEbằng .../tomcat_instance1hoặc .../tomcat_instance2thư mục phù hợp cho từng phiên bản và CATALINA_HOMEbiến môi trường đối với cài đặt Tomcat chung có các tệp sẽ được chia sẻ giữa hai phiên bản.

Các CATALINA_BASEmôi trường là không bắt buộc nếu bạn đang chạy một ví dụ Tomcat duy nhất trên máy chủ và sẽ mặc định CATALINA_HOMEtrong trường hợp đó. Nếu bạn đang chạy nhiều phiên bản như hiện tại, nó sẽ được cung cấp.

Có một mô tả khá tốt về thiết lập này trong RUNNING.txttệp trong thư mục gốc của bản phân phối Apache Tomcat với tiêu đề Cấu hình nâng cao - Nhiều phiên bản Tomcat


1
Đoạn thứ hai của bạn không chính xác khi sử dụng Tomcat đóng gói trên Ubuntu. Nó phân tách đúng cách phần mềm Tomcat (trong $ CATALINA_HOME) khỏi phiên bản Tomcat (trong $ CATALINA_BASE).
reinierpost

84

CATALINA_HOME vs CATALINA_BASE

Nếu bạn đang chạy nhiều phiên bản, thì bạn cần cả hai biến, nếu không thì chỉ CATALINA_HOME.

Nói cách khác: CATALINA_HOMElà bắt buộc và CATALINA_BASElà tùy chọn.

CATALINA_HOME đại diện cho gốc của cài đặt Tomcat của bạn.

Theo tùy chọn, Tomcat có thể được cấu hình cho nhiều trường hợp bằng cách xác định $CATALINA_BASEcho từng trường hợp. Nếu nhiều phiên bản không được định cấu hình, $CATALINA_BASEgiống như $CATALINA_HOME.

Xem: Apache Tomcat 7 - Giới thiệu

Chạy với tệp riêng biệt CATALINA_HOMECATALINA_BASEđược ghi lại trong RUNNING.txt cho biết:

Các biến CATALINA_HOMECATALINA_BASEmôi trường được sử dụng để chỉ định vị trí của Apache Tomcat và vị trí của cấu hình hoạt động của nó, tương ứng.

Bạn không thể cấu hình CATALINA_HOMECATALINA_BASEcác biến trong setenvtập lệnh, vì chúng được sử dụng để tìm tệp đó.

Ví dụ:

(4.1) Tomcat có thể được khởi động bằng cách thực hiện một trong các lệnh sau:

  %CATALINA_HOME%\bin\startup.bat         (Windows)

  $CATALINA_HOME/bin/startup.sh           (Unix)

hoặc là

  %CATALINA_HOME%\bin\catalina.bat start  (Windows)

  $CATALINA_HOME/bin/catalina.sh start    (Unix)

Nhiều phiên bản Tomcat

Trong nhiều trường hợp, mong muốn có một bản sao của bản phân phối nhị phân Tomcat được chia sẻ giữa nhiều người dùng trên cùng một máy chủ. Để thực hiện điều này, bạn có thể đặtCATALINA_BASE biến môi trường thành thư mục chứa các tệp cho phiên bản Tomcat 'cá nhân' của bạn.

Khi chạy với một CATALINA_HOMECATALINA_BASE, các tệp và thư mục được chia như sau:

Trong CATALINA_BASE:

  • bin - Chỉ: setenv.sh (* nix) hoặc setenv.bat (Windows), tomcat-juli.jar
  • conf - Các tệp cấu hình máy chủ (bao gồm server.xml)
  • lib - Thư viện và lớp học, như giải thích bên dưới
  • logs - Đăng nhập và xuất tệp
  • webapps - Các ứng dụng web được tải tự động
  • work - Thư mục làm việc tạm thời cho các ứng dụng web
  • temp - Thư mục được JVM sử dụng cho các tệp tạm thời>

Trong CATALINA_HOME:

  • bin - Tập lệnh khởi động và tắt máy
  • lib - Thư viện và lớp học, như giải thích bên dưới
  • endorsed- Các thư viện ghi đè "Tiêu chuẩn được phê duyệt" tiêu chuẩn. Theo mặc định, nó không có.

Làm thế nào để kiểm tra

Cách dễ nhất để kiểm tra cái gì đang CATALINA_BASEvà của bạn CATALINA_HOMEbằng cách chạy startup.sh, ví dụ:

$ /usr/share/tomcat7/bin/startup.sh
Using CATALINA_BASE:   /usr/share/tomcat7
Using CATALINA_HOME:   /usr/share/tomcat7

Bạn cũng có thể kiểm tra nơi các tệp Tomcat được cài đặt, bằng dpkgcông cụ như bên dưới (Debian / Ubuntu):

dpkg -L tomcat7-common

8
Đây là một câu trả lời tốt hơn nhiều khi được chấp nhận. Giải thích rất tốt.
dkanejs

Vui lòng giải thích cách khởi động nhiều phiên bản tomcat với CATALINA_BASE khác nhau?
Đánh dấu

CATALINA_BASE và CATALINA_HOME phải được đặt làm biến hệ thống: Windows: set CATALINA_BASE = path
Đánh dấu

11

Tôi không thể nói rằng tôi biết phương pháp hay nhất, nhưng đây là quan điểm của tôi.

Được bạn sử dụng các biến này cho bất cứ điều gì?

Cá nhân tôi không cần phải thay đổi, trên Linux và Windows, trong các môi trường khác nhau từ phát triển đến sản xuất. Trừ khi bạn đang làm điều gì đó đặc biệt dựa vào họ, rất có thể bạn có thể để họ yên.

catalina.shđặt các biến mà Tomcat cần để hoạt động hiệu quả. Nó cũng nói rằng đó CATALINA_BASElà tùy chọn:

#   CATALINA_HOME   May point at your Catalina "build" directory.
#
#   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions
#                   of a Catalina installation.  If not present, resolves to
#                   the same directory that CATALINA_HOME points to.

Tôi khá chắc rằng bạn sẽ tìm hiểu xem thiết lập của mình có hoạt động hay không khi bạn khởi động máy chủ của mình.


Bạn có thể đặt catalina_homeđường dẫn trong \bin\catalina.shtệp cho cả hai trường hợp của tomcat không ??
Giri

8

Trỏ CATALINA_BASEđến một thư mục khác từ CATALINA_HOMEcho phép bạn tách thư mục cấu hình khỏi thư mục nhị phân.

Theo mặc định, CATALINA_BASE(cấu hình) và CATALINA_HOME(tệp nhị phân) trỏ đến cùng một thư mục, nhưng việc tách các cấu hình khỏi tệp nhị phân có thể giúp bạn chạy nhiều phiên bản Tomcat song song mà không sao chép các tệp nhị phân.

Nó cũng hữu ích khi bạn muốn cập nhật các tệp nhị phân mà không cần sửa đổi hoặc cần sao lưu / khôi phục các tệp cấu hình của bạn cho Tomcat.

Cập nhật 2018

Có một cách dễ dàng hơn để đặt CATALINA_BASE ngay bây giờ với makebasetiện ích này. Tôi đã đăng một hướng dẫn bao gồm chủ đề này tại http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-tomcat.html cùng với một video hướng dẫn tại https://youtu.be / nuugoG5c-7M

Câu trả lời gốc tiếp tục bên dưới

Để tận dụng tính năng này, chỉ cần tạo thư mục cấu hình và trỏ tới nó bằng CATALINA_BASEbiến môi trường. Bạn sẽ phải đặt một số tệp trong thư mục đó:

  • Sao chép confthư mục từ thư mục cài đặt Tomcat ban đầu, bao gồm cả nội dung của nó và đảm bảo rằng Tomcat có quyền đọc đối với nó. Chỉnh sửa các tệp cấu hình theo nhu cầu của bạn.
  • Tạo một logsthư mục nếu conf/logging.propertiestrỏ đến${catalina.base}/logs và đảm bảo rằng Tomcat có quyền đọc / ghi đối với nó.
  • Tạo một tempthư mục nếu bạn không ghi đè mặc định $CATALINA_TMPDIRmà điểm trỏ đến ${CATALINA_BASE}/tempvà đảm bảo rằng Tomcat có quyền ghi vào nó.
  • Tạo một workthư mục mặc định ${CATALINA_BASE}/workvà đảm bảo rằng Tomcat có quyền ghi vào nó.

1

CATALINA_BASE là tùy chọn.

Tuy nhiên, trong các trường hợp sau, nó sẽ giúp thiết lập CATALINA_BASE tách biệt với CATALINA_HOME.

  1. Khi nhiều hơn 1 phiên bản tomcat đang chạy trên cùng một máy chủ

    • Điều này giúp chỉ có 1 thời gian chạy cài đặt tomcat, với nhiều cấu hình máy chủ CATALINA_BASE chạy trên các cổng riêng biệt.
    • Nếu cần bất kỳ bản vá hoặc nâng cấp phiên bản nào, chỉ cần 1 lần thay đổi cài đặt hoặc cần được kiểm tra / xác minh / đăng xuất.
  2. Tách mối quan tâm (Trách nhiệm đơn lẻ)

    • Thời gian chạy Tomcat là tiêu chuẩn và không thay đổi trong mọi quá trình phát hành. tức là mã nhị phân Tomcat
    • Quá trình phát hành có thể thêm nhiều thứ hơn như ứng dụng web (thư mục ứng dụng web), cấu hình môi trường (thư mục conf), thư mục nhật ký / tạm thời / công việc

-5

Đó là thư mục mẹ của bin chứa tệp tomcat.exe:

CATALINA_HOME='C:\Program Files\Apache Software Foundation\Tomcat 6.0'

CATALINA_BASEgiống như CATALINA_HOME.


2
Câu trả lời của bạn là gây hiểu nhầm ... câu trả lời đúng nên nói rõ Nếu có nhiều trường hợp không được cấu hình , $ CATALINA_BASE là giống như $ CATALINA_HOME.` theo tài liệu
Eddie B

1
CATALINA_BASE chỉ bằng CATALINA_HOME khi bạn chạy phiên bản gốc. Khi bạn có nhiều trường hợp thì nó sẽ khác.
sóng

1
Tôi sẽ nói rằng CATALINA_BASE và CATALINA HOME phải khác nhau ngay cả khi bạn chỉ có một phiên bản. Bằng cách đó, nội dung của bạn tách biệt với cài đặt của bạn. Ví dụ: CATALINA_HOME trong / usr / share / tomcat và CATALINA_BASE trong / var / lib / tomcat
user1725779

Không. Nó có thể giống nhau, nhưng có thể không giống nhau, đối với nhiều trường hợp.
Andrey Regentov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.