2010-08-10 21 views
17

我認爲這是一個很好的問題。Tomcat安裝在/ usr/share/tomcat6中的CATALINA_HOME和/ var/lib/tomcat6中的CATALINA_BASE中

我發現它也令人困惑。幾分鐘前(過了一段時間)我安裝了tomcat,我注意到它們是兩個不同的「webapps」地方。

位於/ usr /共享/ tomcat6中/ webapps /下default_root/ 位於/ var/lib中/ tomcat6中/ webapps /目錄ROOT/

兩者的內容是相同的,但他們都不是符號鏈接。

當我開始Tomcat的,它說:

報價:

這是默認的Tomcat主頁。它可以在本地文件系統訪問:/var/lib/tomcat6/webapps/ROOT/index.html

的Tomcat6退伍軍人會很高興地得知,Tomcat的這個系統實例與安裝在/ usr CATALINA_HOME/share/tomcat6和CATALINA_BASE在/ var/lib/tomcat6中 因此,基於這些信息,/ usr/share/...文件夾保持向後兼容性,對吧?

但根據您發佈的庫正在從CATALINA_HOME而不是CATALINA_BASE讀取。

也許他們仍然保留該默認參考以防止其他系統在更新後停止工作?

很好的觀察!

UPDATE:

我讀到這在:/usr/share/tomcat6/bin/catalina.sh:

報價:

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

當我們在閱讀中:/ etc /init.d/tomcat6:

(開頭)

CATALINA_HOME=/usr/share/$NAME 

(然後...)

# Directory for per-instance configuration files and webapps 
CATALINA_BASE=/var/lib/$NAME 

但是,如果你嘗試手動啓動Tomcat(正如我剛纔做了很長一段時間)用: 須藤/usr/share/tomcat6/bin/startup.sh

它顯示:

報價:

Using CATALINA_BASE: /usr/share/tomcat6 
Using CATALINA_HOME: /usr/share/tomcat6 
Using CATALINA_TMPDIR: /usr/share/tomcat6/temp 
Using JRE_HOME: /usr 
touch: cannot touch `/usr/share/tomcat6/logs/catalina.out': No such file or directory 
/usr/share/tomcat6/bin/catalina.sh: 357: cannot create /usr/share/tomcat6/logs/catalina.out: Directory nonexistent 

那麼,爲什麼在這裏CATALINA_BASE設置爲同C ATALINA_HOME?

在/ usr /共享/ tomcat6中/日誌/不存在,但存在在/ var/lib中/ tomcat6中/日誌/

我看到我的日誌寫入的/ var/lib中/ ......當從init.d腳本啓動Tomcat。所以它更好地從那裏開始。

回答

16

我不是Tomcat的專家,但我有同樣的問題,我能夠用命令重新啓動服務器: sudo /etc/init.d/tomcat6 restart

0

我不能告訴你爲什麼CATALINA_HOME和CATALINA_BASE是相同的在startup.sh(或catalina.sh) - 這真的很奇怪。

當然,您可以通過init.d腳本啓動Tomcat。但有時您可能想通過startup.sh/catalina.sh啓動它(例如,用於調試)。

因此,作爲一種解決方法/黑客可以通過添加下面一行在/usr/share/tomcat6/bin/catalina.sh

export CATALINA_BASE=/var/lib/tomcat6 
3

CATALINA_HOME的開始糾正問題 - 告訴「組織。 apache.catalina.startup.Bootstrap「在哪裏查找所需的/ lib/bin和其他 - 這些是運行服務器的依賴項。它基本上是你的Tomcat安裝主目錄。

CATALINA_BASE - 需要某個目錄結構來掃描(一旦啓動)。例如/ conf來查找特定於Web應用程序的server.xml和web.xml。只要你有那個目錄結構和內容,CATALINA_BASE可以是任何目錄。

1

我見過。

適當和可愛的方法是創建一個「setenv.sh」腳本到你的CATALINA_HOME/bin文件夾(在你的情況下「/usr/share/tomcat6/bin/setenv.sh」)。

您setenv.sh的內容:

#!/bin/sh 
export CATALINA_BASE=/new/catalinabase/path 

所以沒有必要自行修改catalina.sh。如果setenv.sh存在於bin目錄中,catalina.sh將自動執行它。

-3
chmod +x startup.sh 
chmod +x shutdown.sh 
chmod +x catalina.sh 
chmod +x setclasspath.sh 
chmod +x bootstrap.jar 
chmod +x tomcat-jni.jar 

希望它能工作。

-1

我可以通過執行以下命令做到這一點,

$ service tomcat6 start

其重新初始化我CATALINA_*路徑和啓動Tomcat實例