配置Tomcat監聽80端口&配置Tomcat虛擬主機&Tomcat日誌

16.4 配置Tomcat監聽80端口

Tomcat默認監聽8080、8005以及8009端口,平常進行瀏覽器訪問時,須要輸入域名+端口,十分不方便,咱們能夠經過修改Tomcat配置文件,使其監聽80端口,便可解決這個問題。html

修改配置文件

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

查看監聽的端口

netstat -lntp |grep java
tcp6       0      0 :::80                   :::*                    LISTEN      2108/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      2108/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      2108/java

8005端口監聽速度要稍慢一些,在8005端口監聽以前,訪問Tomcat服務主頁的速度會比較慢java

注:若是Tomcat沒有監聽80端口,多是其餘服務將80端口占用(如Nginx),須要先中止相關服務,再重啓Tomcat便可。mysql

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

在以前的學習中,Apache仍是nginx都屬於webServer,都支持虛擬主機配置文件,虛擬主機配置文件就是一臺服務器上或者一個webserver上,支持一個IP下能夠訪問多個域名,每一個域名錶明一個網站,因此能夠配置多個網站,每一個網站的虛擬主機,每一個網站的許配置文件都是一個虛擬主機,tomcat一樣也支持這個概念linux

虛擬主機配置文件簡介

vim /usr/local/tomcat/conf/server.xml
 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

 </Host>

其中<Host>和</Host>之間的配置爲虛擬主機配置部分nginx

  • name定義域名
  • appBase定義應用的目錄,好比搭建了一個tomcat,想要使用tomcat去跑一個網站,那麼須要網站放在哪裏呢?
  • 首先你的應用不能是一個傳統所謂的目錄,Apache,nginx訪問網站,首先須要指定一個目錄,目錄裏存放着PHP文件或者是html的文件,而後去訪問;而tomcat則不同,它須要提供一個WAR的包,就是一個壓縮包,這個壓縮包裏面包含着運行這個網站的一些文件,包括配置,js代碼,數據庫相關的等等,都須要打包成war這種文件,而這個文件須要放置到 webapps 裏面。
  • Java的應用一般是一個war的壓縮包,你只須要將war的壓縮包放到appBase目錄下面便可。剛剛訪問的Tomcat默認頁其實就是在appBase目錄下面,不過是在它子目錄ROOT裏。
  • unpackWARs 就是是否自動的解壓war這個包,也就是war包放到webapps裏面,就會自動解壓
  • 除了使用war包之外,還能夠單獨的指定目錄,這個目錄裏面存放着一些jsp文件,也就是提供的不是war包,而就是一個目錄,這個目錄裏面有jsp的程序,若是是這樣,還須要docbase去定義
  • webapps的默認路徑爲/usr/local/tomcat/webapps/,webapps目錄下,默認有5個目錄(docs examples host-manager manager ROOT)
  • autoDeploy 若是此項設置爲true,表示tomcat服務處於運行狀態,可以檢測appbase下的文件,若是有新的web應用加入進來,會自動發佈這個web應用

增長虛擬主機

增長虛擬主機,編輯/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>

docBase,這個參數用來定義網站的文件存放路徑,若是不定義,默認是在appBase/ROOT下面,定義了docBase就以該目錄爲主了,其中appBase和docBase能夠同樣。web

若是不定義appbase,不想要war存在,能夠用docBase定義一個目錄,目錄裏放網站的程序,這個至關於把war包解壓放到目錄裏,若是不想要解壓這個包,就能夠放到appbase裏面,這兩個二選一,若是同時存在,能夠把其中一個寫空,防止相互干擾,有時會出現404問題,就有多是appbase或者docbase定義錯誤。sql

下面經過部署一個java的應用來體會appBase和docBase目錄的做用數據庫

下載zrlog

wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

appBase爲應用存放目錄(其實是一個相對路徑,相對於 /usr/local/tomcat/ 路徑),它能夠自動解壓war包,一般是須要把war包直接放到該目錄下面,它會自動解壓成一個程序目錄apache

拷貝源文件

cp zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
[root@linux-5 ~]# ls /usr/local/tomcat/webapps/
docs  examples  host-manager  manager  ROOT  zrlog-1.7.1-baaecb9-release  zrlog-1.7.1-baaecb9-release.war

經過ls命令能夠發現,當文件拷貝至webapps目錄下後,沒有進行任何操做,war包已被自動解壓。vim

[root@linux-5 webapps]# mv zrlog-1.7.1-baaecb9-release zrlog
[root@linux-5 ~]# rm -f /usr/local/tomcat/webapps/zrlog-1.7.1-baaecb9-release.war

刪除webapps目錄下的war包,避免重複解壓,注意要現將解壓後的目錄更名字,不然連同解壓後的目錄會被一塊兒刪掉

訪問zrlog

瀏覽器輸入192.168.88.5/zrlog

訪問後會彈出安裝嚮導,填寫數據庫相關信息,zrlog不會自動建立,所以在安裝以前咱們須要建立相應的數據庫與用戶。

檢查數據庫是否正常啓動

[root@linux-5 webapps]# ps aux|grep mysql
root        981  0.0  0.0 115384  1692 ?        S    19:17   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/linux-5.pid
mysql      1344  0.0 24.2 973052 452220 ?       Sl   19:17   0:05 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/linux-5.err --pid-file=/data/mysql/linux-5.pid --socket=/tmp/mysql.sock --port=3306
root       3124  0.0  0.0 112676   984 pts/0    R+   23:02   0:00 grep --color=auto mysql

建立數據庫

mysql> create database zrlog;

建立用戶並受權數據庫

mysql> grant all on zrlog.* to 'zrlog'@'127.0.0.1' identified by '123456';

登陸用戶驗證操做

[root@linux-5 webapps]# mysql -uzrlog -h127.0.0.1 -p123456
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

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

繼續安裝zrlog

檢查無誤後,按要求填寫相關信息

按要求完成安裝後,便可查看主界面

經過appBase的方式搭建有一個缺點,在訪問時除了輸入地址外,還須要加一個/zrlog的目錄。

針對上述問題,能夠採用docBase指定路徑,解決這個問題

建立docBase指定的路徑

mkdir /data/wwwroot/123.cn/

移動文件路徑

將zrlog的文件目錄移動到docBase指定路徑下

[root@linux-5 webapps]# mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/

修改Windows上的hosts

重啓Tomcat服務

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

訪問測試

瀏覽器輸入www.123.cn

網站能夠正常訪問

注:在自定義appBase的目錄時,應在自定義的目錄下建立一個ROOT目錄,並將圖片、靜態文件、主頁等存於該目錄下,由於appBase搭建,默認訪問的是自定義目錄下的ROOT目錄。不然在訪問時可能會遇到404問題。

16.8 Tomcat日誌

查看日誌列表

[root@linux-5 webapps]# ls /usr/local/tomcat/logs
catalina.2018-07-04.log  host-manager.2018-07-04.log  localhost.2018-07-05.log             manager.2018-07-04.log
catalina.2018-07-05.log  host-manager.2018-07-05.log  localhost_access_log.2018-07-04.txt  manager.2018-07-05.log
catalina.out             localhost.2018-07-04.log     localhost_access_log.2018-07-05.txt

• 其中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,當出現問題時,咱們應該第一想到去查看它。

相關文章
相關標籤/搜索