tomcat - variabel CATALINA_BASE dan CATALINA_HOME

98

Saya memiliki beberapa contoh tomcat 6 yang berjalan di server yang sama (Linux) dan berfungsi seperti yang diharapkan. Saya mencoba untuk mencari tahu apa praktik standar yang berkaitan dengan pengaturan variabel CATALINA_HOMEdan CATALINA_BASE.

Dalam instalasi tomcat saya, saya memiliki pengaturan CATALINA_HOMEuntuk menunjuk ke folder "umum" (katakanlah /tomcat6) dan CATALINA_BASEvariabel bervariasi tergantung pada nama instance (katakanlah /tomcat_instance1, /tomcat_instance2)

Pertanyaan saya adalah ini:

  • Apakah saya benar-benar membutuhkan dua variabel?
  • Atau Bisakah saya memiliki satu CATALINA_HOMEdan menghapus CATALINA_BASE(atau sebaliknya)?
souser
sumber
3
Pertanyaan itu sendiri adalah jawaban yang sebenarnya.
Koray Tugay
4
Alasan Anda perlu melakukannya adalah untuk memisahkan pemeliharaan perangkat lunak Tomcat (yang ada di dalamnya $CATALINA_HOME) dari pemeliharaan konfigurasi dan konten instans Tomcat (yang aktif $CATALINA_BASE).
reinierpost

Jawaban:

106

Jika Anda menjalankan beberapa instance Tomcat pada satu host, Anda harus mengatur CATALINA_BASEagar sama dengan direktori .../tomcat_instance1or yang .../tomcat_instance2sesuai untuk setiap instance danCATALINA_HOME variabel lingkungan ke instalasi Tomcat umum yang filenya akan dibagikan di antara kedua instance tersebut.

The CATALINA_BASElingkungan adalah opsional jika Anda menjalankan Tomcat contoh tunggal pada host dan akan default ke CATALINA_HOMEdalam kasus itu. Jika Anda menjalankan beberapa contoh seperti Anda, itu harus disediakan.

Ada deskripsi yang cukup bagus tentang pengaturan ini di RUNNING.txtfile di root distribusi Apache Tomcat di bawah tajuk Konfigurasi Lanjutan - Beberapa Instans Tomcat

Russ
sumber
1
Paragraf kedua Anda salah saat menggunakan Tomcat yang dikemas di Ubuntu. Ini benar memisahkan perangkat lunak Tomcat (dalam $ CATALINA_HOME) dari instance Tomcat (dalam $ CATALINA_BASE).
reinierpost
85

CATALINA_HOME vs. CATALINA_BASE

Jika Anda menjalankan banyak instance, Anda memerlukan kedua variabel, jika tidak, hanya CATALINA_HOME.

Dengan kata lain: CATALINA_HOMEwajib diisi dan CATALINA_BASEopsional.

CATALINA_HOME mewakili root dari instalasi Tomcat Anda.

Secara opsional, Tomcat dapat dikonfigurasi untuk beberapa contoh dengan menentukan $CATALINA_BASEuntuk setiap contoh. Jika beberapa contoh tidak dikonfigurasi, $CATALINA_BASEsama dengan $CATALINA_HOME.

Lihat: Apache Tomcat 7 - Pendahuluan

Berjalan dengan terpisah CATALINA_HOMEdan CATALINA_BASEdidokumentasikan di RUNNING.txt yang mengatakan:

The CATALINA_HOMEdan CATALINA_BASElingkungan variabel yang digunakan untuk menentukan lokasi Apache Tomcat dan lokasi konfigurasi aktif, masing-masing.

Anda tidak dapat mengonfigurasi CATALINA_HOMEdan CATALINA_BASEvariabel dalam setenvskrip, karena mereka digunakan untuk menemukan file itu.

Sebagai contoh:

(4.1) Tomcat dapat dimulai dengan menjalankan salah satu dari perintah berikut:

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

  $CATALINA_HOME/bin/startup.sh           (Unix)

atau

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

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

Beberapa Instans Tomcat

Dalam banyak situasi, diinginkan untuk memiliki satu salinan distribusi biner Tomcat yang dibagikan di antara banyak pengguna di server yang sama. Untuk membuatnya mungkin, Anda dapat mengaturCATALINA_BASE variabel lingkungan ke direktori yang berisi file untuk instance Tomcat 'pribadi' Anda.

Saat menjalankan dengan CATALINA_HOMEdan terpisah CATALINA_BASE, file dan direktori dibagi sebagai berikut:

Masuk CATALINA_BASE:

  • bin - Hanya: setenv.sh (* nix) atau setenv.bat (Windows), tomcat-juli.jar
  • conf - File konfigurasi server (termasuk server.xml)
  • lib - Perpustakaan dan kelas, seperti yang dijelaskan di bawah ini
  • logs - Log dan file keluaran
  • webapps - Aplikasi web yang dimuat secara otomatis
  • work - Direktori kerja sementara untuk aplikasi web
  • temp - Direktori yang digunakan oleh JVM untuk file-file sementara>

Masuk CATALINA_HOME:

  • bin - Skrip startup dan shutdown
  • lib - Perpustakaan dan kelas, seperti yang dijelaskan di bawah ini
  • endorsed- Perpustakaan yang mengesampingkan standar "Standar yang Disahkan". Secara default tidak ada.

Bagaimana cara memeriksanya

Cara termudah untuk memeriksa apa yang Anda CATALINA_BASEdan CATALINA_HOMEadalah dengan menjalankan startup.sh, misalnya:

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

Anda juga dapat memeriksa di mana file Tomcat diinstal, dengan dpkgalat seperti di bawah ini (Debian / Ubuntu):

dpkg -L tomcat7-common
kenorb
sumber
8
Ini adalah jawaban yang lebih baik dari yang diterima. Dijelaskan dengan sangat baik.
dkanejs
Jelaskan bagaimana cara memulai beberapa instance tomcat dengan CATALINA_BASE yang berbeda?
Tandai
CATALINA_BASE dan CATALINA_HOME harus disetel sebagai variabel sistem: Windows: setel CATALINA_BASE = jalur
Tandai
11

Saya tidak bisa mengatakan saya tahu praktik terbaik, tapi inilah perspektif saya.

Apakah Anda menggunakan variabel ini untuk sesuatu?

Secara pribadi, saya tidak perlu mengubah baik, di Linux maupun Windows, di lingkungan yang bervariasi dari pengembangan ke produksi. Kecuali jika Anda melakukan sesuatu yang bergantung padanya, kemungkinan besar Anda bisa membiarkannya.

catalina.shmenetapkan variabel yang perlu dikerjakan Tomcat di luar kotak. Ia juga mengatakan itu CATALINA_BASEopsional:

#   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.

Saya cukup yakin Anda akan mengetahui apakah pengaturan Anda berfungsi atau tidak ketika Anda memulai server Anda.

Lauri Lehtinen
sumber
Bisakah Anda mengatur catalina_homejalur dalam \bin\catalina.shfile untuk kedua contoh tomcat ??
Giri
8

Menunjuk CATALINA_BASEke direktori yang berbeda dari CATALINA_HOMEmemungkinkan Anda untuk memisahkan direktori konfigurasi dari direktori binari.

Secara default, CATALINA_BASE(konfigurasi) dan CATALINA_HOME(binari) mengarah ke folder yang sama, tetapi memisahkan konfigurasi dari binari dapat membantu Anda menjalankan beberapa contoh Tomcat secara berdampingan tanpa menduplikasi binari.

Ini juga berguna ketika Anda ingin memperbarui binari, tanpa memodifikasi, atau perlu membuat cadangan / memulihkan file konfigurasi Anda untuk Tomcat.

Perbarui 2018

Ada cara yang lebih mudah untuk menyetel CATALINA_BASE sekarang dengan makebaseutilitas. Saya telah memposting tutorial yang mencakup subjek ini di http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-tomcat.html bersama dengan tutorial video di https://youtu.be / nuugoG5c-7M

Jawaban asli dilanjutkan di bawah

Untuk memanfaatkan fitur ini, cukup buat direktori config dan arahkan ke sana dengan CATALINA_BASEvariabel lingkungan. Anda harus meletakkan beberapa file di direktori itu:

  • Salin confdirektori dari direktori instalasi Tomcat asli, termasuk isinya, dan pastikan Tomcat memiliki izin membaca padanya. Edit file konfigurasi sesuai kebutuhan Anda.
  • Buat logsdirektori jika conf/logging.propertiesmengarah ke${catalina.base}/logs , dan pastikan Tomcat memiliki izin baca / tulis padanya.
  • Buat tempdirektori jika Anda tidak menimpa default $CATALINA_TMPDIRyang menunjuk ke ${CATALINA_BASE}/temp, dan pastikan Tomcat memiliki izin menulis padanya.
  • Buat workdirektori yang default ${CATALINA_BASE}/work, dan pastikan Tomcat memiliki izin menulis padanya.
isapir
sumber
1

CATALINA_BASE bersifat opsional.

Namun, dalam skenario berikut ini membantu untuk menyiapkan CATALINA_BASE yang terpisah dari CATALINA_HOME.

  1. Saat lebih dari 1 instance tomcat berjalan di host yang sama

    • Ini membantu hanya memiliki 1 runtime dari instalasi tomcat, dengan beberapa konfigurasi server CATALINA_BASE yang berjalan pada port terpisah.
    • Jika ada penambalan, atau peningkatan versi, hanya diperlukan 1 perubahan penginstalan, atau perlu diuji / diverifikasi / ditandatangani.
  2. Pemisahan perhatian (Tanggung jawab tunggal)

    • Waktu proses Tomcat adalah standar dan tidak berubah selama setiap proses rilis. yaitu binari Tomcat
    • Proses rilis dapat menambahkan lebih banyak barang sebagai aplikasi web (folder webapps), konfigurasi lingkungan (direktori conf), log / temp / direktori kerja
Amit Kaneria
sumber
-5

Itu adalah folder induk dari bin yang berisi file tomcat.exe:

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

CATALINA_BASEsama dengan CATALINA_HOME.

Guru
sumber
2
Jawaban Anda menyesatkan ... jawaban yang benar harus menyatakan Jika beberapa contoh tidak dikonfigurasi , $ CATALINA_BASE sama dengan $ CATALINA_HOME.` sesuai dengan dokumentasi
Eddie B
1
CATALINA_BASE sama dengan CATALINA_HOME hanya jika Anda menjalankan instance root. Jika Anda memiliki banyak contoh, itu akan berbeda.
percikan
1
Saya akan mengatakan bahwa CATALINA_BASE dan CATALINA HOME harus berbeda meskipun Anda hanya memiliki satu contoh. Dengan begitu, konten Anda terpisah dari instalasi Anda. Misalnya, CATALINA_HOME di / usr / share / tomcat dan CATALINA_BASE di / var / lib / tomcat
user1725779
tidak. Ini mungkin sama, tetapi mungkin tidak sama, untuk multi-instance.
Andrey Regentov