tomcat配置

weixin_34007291發表於2018-12-05

16.4 配置Tomcat監聽80埠
16.5/16.6/16.7 配置Tomcat虛擬主機
16.8 Tomcat日誌

16.4 配置Tomcat監聽80埠

為什麼有改80埠的需求:web訪問預設是80埠,tomcat監聽埠改為80後訪問ip就行,不用再輸入“:8080”。

編輯tomcat配置檔案vim /usr/local/tomcat/conf/server.xml。將Connector port="8080" protocol="HTTP/1.1"修改為Connector port="80" protocol="HTTP/1.1"。然後重啟tomcat即可。
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

8005埠會慢一點。另外,如果nginx開啟,80埠會被佔用,導致tomcat不能正常啟動。瀏覽器中輸入tomcat伺服器的ip,檢視是否正常訪問tomcat主頁。

16.5/16.6/16.7 配置Tomcat虛擬主機

tomcat與nginx、apache類似,都可以配置虛擬主機。開啟tomcat配置檔案vim /usr/local/tomcat/conf/server.xml,其中<Host>和</Host>之間的配置為虛擬主機配置部分,name定義域名,appBase定義應用的目錄,Java的應用通常是一個war的壓縮包,你只需要將war的壓縮包放到appBase目錄下面即可。剛剛訪問的Tomcat預設頁其實就是在appBase目錄下面,不過是在它子目錄ROOT裡。

增加虛擬主機,編輯server.xml,在</Host>下面增加如下內容:

<Host name="www.123.cn" appBase=""
   unpackWARs= "true" autoDeploy="true"
   xmlValidation="false" xmlNamespaceAware="false">
   <Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>
</Host>

docBase,這個引數用來定義網站的檔案存放路徑,如果不定義,預設是在appBase/ROOT下面,定義了docBase就以該目錄為主了,其中appBase和docBase可以一樣。在這一步操作過程中如果遇到訪問404的問題,很可能就是docBase沒有定義對。docbase和appbase定義一個就行。appBase為應用存放目錄,通常是需要把war包直接放到該目錄下面,它會自動解壓成一個程式目錄。

下面我們通過部署一個java的應用來體會appBase和docBase目錄的作用。zrlog基於java開發,與wordpress(基於php)功能類似,是一個部落格系統。

  1. wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war #下載zrlog
  2. mv zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
  3. mv /usr/local/tomcat/webapps/zrlog-1.7.1-baaecb9-release /usr/local/tomcat/webapps/zrlog
  4. 瀏覽器訪問 ip:8080/zrlog/install/ #進入安裝嚮導,主要是配置資料庫

配置資料庫簡單流程是,先建立zrlog的庫,然後建立zrlog的mysql使用者,最後把這兩步填入到安裝嚮導中。

上面講appbase和docbase配置一個即可。appbase配置後將war包放到tomcat/webapps目錄下就會自動解壓。這種配置,訪問部落格時要指定ip和部落格目錄。如果是配置docbase,把war解壓的內容複製到指定目錄:mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/。重啟tomcat就可以訪問新的虛擬主機。

其實appbase指定webapps目錄,webapps目錄是tomcat的預設頁,appbase還可以指定別的目錄。上面把war包放在webapps目錄下其實就是把zrlog與tomcat預設頁和用空間,所以訪問zrlog要用“ip/zrlog”。相通的,後面我們又試驗了docbase指定java網頁的目錄,並把zrlog轉到了一臺新虛擬主機。所以可以用域名直接訪問zrlog部落格(注意修改hosts檔案,不然dns找不到)。

再補充一點,tomcat預設網頁的內容是在webapps目錄下,預設頁index.jsp在webapps/ROOT。也就是說,預設訪問appbase下的ROOT目錄。以後自己定義appbase時也要建立ROOT目錄,將jsp和靜態檔案都放在該目錄下。

16.8 Tomcat日誌

ls /usr/local/tomcat/logs,有四類日誌。catalina開頭的日誌為Tomcat的綜合日誌,它記錄Tomcat服務相關資訊,也會記錄錯誤日誌。其中catalina.2017-xx-xx.log和catalina.out內容相同,前者會每天生成一個新的日誌。host-manager和manager為管理相關的日誌,其中host-manager為虛擬主機的管理日誌。localhost和localhost_access為虛擬主機相關日誌,其中帶access字樣的日誌為訪問日誌,不帶access字樣的為預設虛擬主機的錯誤日誌。

訪問日誌預設不會生成,需要在server.xml中配置一下。具體方法是在對應虛擬主機的<Host></Host>裡面加入下面的配置(假如域名為123.cn):

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

prefix定義訪問日誌的字首,suffix定義日誌的字尾,pattern定義日誌格式。新增加的虛擬主機預設並不會生成類似預設虛擬主機的那個localhost.日期.log日誌,錯誤日誌會統一記錄到catalina.out中。關於Tomcat日誌,最需要關注catalina.out,當出現問題時,第一想到去檢視它。

相關文章