1. 程式人生 > >配置Tomcat虛擬主機

配置Tomcat虛擬主機

12月13日任務

16.4 配置Tomcat監聽80埠

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

16.8 Tomcat日誌

 

配置tomcat監聽80埠

預設tomcat監聽的是8080埠,如果想直接輸入ip就訪問到網頁,就需要進行如下操作:

  • 修改配置檔案
[root@localhost src]# vim /usr/local/tomcat/conf/server.xml 
/定位到8080
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
修改8080為80,儲存退出
  • 重啟服務
# 先關閉後啟動
[root@localhost src]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost src]# /usr/local/tomcat/bin/startup.sh 
  • 驗證是否生效
[root@localhost src]# netstat -lntp | grep java
tcp6       0      0 :::80                   :::*                    LISTEN      2823/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      2751/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      2751/java                 

如果系統內已經安裝並啟動了apache/nginx web服務,80端已被佔用,需要關閉這些web伺服器,然後重啟tomcat服務。


Tomcat虛擬主機

跟apache/nginx web伺服器一樣,tomcat也可以設定虛擬主機。

在tomcat配置檔案中<Host>和</Host>之間的配置為虛擬主機配置部分,name定義域名,appBase定義應用的目錄,Java的應用通常是一個war的壓縮包,你只需要將war的壓縮包放到appBase目錄下面即可。

[root@localhost src]# vim /usr/local/tomcat/conf/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>

# 部分引數說明:
# name:需要填寫的是虛擬主機的域名
# appBase:應用專案(WAR包)所在目錄,配合unpackWARs將自動解壓WAR包成一個程式目錄
# WAR包:開發人員開發的組建網站的各種網頁、配置、jsp程式碼、資料庫相關檔案會被打包成一個WAR包,便於存放和傳輸。
# unpackWARs: 自動解壓WAR包
# docBase:在該處定義的目錄記憶體放的是解壓後的WAR包的檔案,定義了該項後,以該目錄為主,appBase可以不需要定義,也可以定義成一樣;如果不定義,預設檔案存放在appBase/ROOT下,兩者取其以即可。如果docBase沒有定義正確,任意產生404錯誤。

appBase和docBase

appBase內寫的是相對路徑,其相對的是/usr/local/tomcat/

使用WAR包的時候需要寫appBase,同時unpackWARs需要設定成“True”,否則無法自動解壓。

如果提供的網站是一個目錄,那些所涉及的所有檔案就放在docBase引數所指定的目錄下。

webapps目錄下的ROOT目錄

[root@localhost webapps]# ls ROOT/
asf-logo-wide.svg  bg-upper.png       tomcat.gif
bg-button.png      favicon.ico        tomcat.png
bg-middle.png      index.jsp          tomcat-power.gif
bg-nav-item.png    RELEASE-NOTES.txt  tomcat.svg
bg-nav.png         tomcat.css         WEB-INF

可以直接通過localhost/index.jsplocalhost/bg-nav.png的方式進行訪問,即預設訪問的是ROOT目錄

自己定義的程式目錄也需要建立一個ROOT目錄,同時把圖片、靜態檔案放在ROOT目錄下,這樣就可以直接訪問自定義網站了。

虛擬主機例項 --- zrlog部落格的搭建

搭建好tomcat環境後,我們可以搭建一個簡單的blog應用網站來體驗下。

  1. 下載zrlog的WAR包
[root@localhost src]# wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
[root@localhost src]# du -sh zrlog-1.7.1-baaecb9-release.war 6.8M	zrlog-1.7.1-baaecb9-release.war
  1. 移動至tomcat目錄下的webapps目錄內
[root@localhost src]# cp zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
# 改名的目的是為了訪問的方便,畢竟包名有點長
[root@localhost webapps]# mv zrlog-1.7.1-baaecb9-release zrlog
  1. 建立相關資料庫及使用者
# 前提是系統內有mysql並啟動
[root@localhost webapps]# ps aux | grep mysql
# 登入mysql,去建立zrlog使用者
[root@localhost webapps]# mysql -uroot -p
Enter password: 
# 建立資料庫zrlog
mysql> create database zrlog;
Query OK, 1 row affected (0.03 sec)
# 建立新使用者zrlog,並賦予其許可權
mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by 'zrlog';
Query OK, 0 rows affected (0.04 sec)
mysql> quit
Bye

# 使用zrlog使用者登入測試
[root@localhost webapps]# mysql -uzrlog -h127.0.0.1 -p
Enter password: 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
| zrlog              |
+--------------------+
3 rows in set (0.03 sec)

mysql> quit
Bye
  1. 使用瀏覽器登入註冊

    • 輸入剛建立的zrlog使用者及其密碼,郵箱隨意

    step1

    • 設定管理員密碼,自定義網站標籤及子標題

    step2

    • 完成註冊

    step3

    • 部落格效果圖

    web

註冊成功後使用admin賬戶就可以登入部落格自由的編輯、釋出blog了!


Tomcat日誌

[root@localhost tomcat]# ls /usr/local/tomcat/logs/

tomcat的日誌分為4類:

  • catalina開頭的日誌為Tomcat的綜合日誌,它記錄Tomcat服務相關資訊,也會記錄錯誤日誌。tomcat會每天生成一個新的日誌catalina.YYYY-mm-dd.log。catalina.out內容相同
  • host-manager為管理相關的日誌,其中host-manager為虛擬主機的管理日誌。日誌內容可能為空
  • manager也是管理相關的日誌,與host-manager類似
  • localhost開頭的為虛擬主機相關日誌,其中帶access字樣的日誌為訪問日誌,不帶access字樣的為預設虛擬主機的錯誤日誌

訪問日誌預設不生成,需要在server.xml內定義

<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" />

# directory定義日誌存放的目錄,這裡是/usr/local/tomcat/logs目錄
# prefix定義訪問日誌的字首
# suffix定義日誌的字尾
# pattern定義日誌格式。

新增加的虛擬主機預設並不會生成類似預設虛擬主機的那個localhost.日期.log日誌,錯誤日誌資訊會統一記錄到catalina.out中。因此當出現問題時,應該第一時間去檢視catalina.out檔案。