1. 程式人生 > >配置tomcat監聽80端口、配置tomcat虛擬機、tomcat日誌

配置tomcat監聽80端口、配置tomcat虛擬機、tomcat日誌

classname nginx代理 data restart cal 停止 環境 生產環境 netstat

配置tomcat監聽80端口

tomcat 監聽的是8080端口,如果想要直接訪問,不加8080端口(默認輸入一個IP或者域名,訪問80端口時是可以省略IP後端口號的)就需要配置tomcat監聽80端口,tomcat是支持端口自定義的。

  • 編輯tomcat 配置文件

    [root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
    ......
    <Connector port="80" protocol="HTTP/1.1" // 將這裏的8080改成80
    connectionTimeout="20000"
    redirectPort="8443" />

    ......
    // 配置文件75行

  • 重啟tomcat 服務

    [root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
    Using CATALINA_BASE: /usr/local/tomcat
    Using CATALINA_HOME: /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME: /usr/local/jdk1.8
    Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

    // 關閉tomcat 服務

    [root@localhost ~]# /usr/local/tomcat/bin/startup.sh
    Using CATALINA_BASE: /usr/local/tomcat
    Using CATALINA_HOME: /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME: /usr/local/jdk1.8
    Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Tomcat started.

    // 開啟tomcat 服務

    // 因為tomcat 不支持restart,所以只能先關閉再啟動

  • 查看服務狀態

    [root@localhost ~]# netstat -lntp | grep java
    tcp6 0 0 :::80 ::: LISTEN 2622/java
    tcp6 0 0 127.0.0.1:8005 :::
    LISTEN 2622/java
    tcp6 0 0 :::8009 :::* LISTEN 2622/java
    [root@localhost ~]# ps aux | grep tomcat
    root 2622 1.2 4.1 803536 77772 pts/0 Sl 21:20 0:02 /usr/local/jdk1.8/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
    root 2673 0.0 0.0 112680 972 pts/0 S+ 21:23 0:00 grep --color=auto tomcat

    // 如果重新啟動後tomcat 還沒有占用80端口,說明80端口已經被占用。
    // 使用命令 netstat -lntp | grep 80,查看哪個服務占用了80端口。
    // 將占用80 端口的服務停止,再重啟tomcat即可。
    // 在實際線上的生產環境中,如果nginx占用80端口的話就不能直接停掉nginx,這時可以讓nginx代理tomcat了,即80代理8080.

// tomcat啟動後,8005端口啟動需要一點時間,在8005端口沒有啟動之前訪問tomcat頁面會很慢。
技術分享圖片

配置tomcat 虛擬主機

tomcat和apache、nginx一樣,都支持虛擬主機配置。每個虛擬主機配置文件就是一臺服務器,支持一個IP下可以訪問多個域名,每個域名代表一個網站。所以一臺服務器上可以配置多個網站。

  • 查看 tomcat 配置文件

    [root@localhost ~]# 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>
    ......
    // name 定義域名。
    // appBase 表示war包(應用)的目錄在哪裏
    // unpackWARs 表示是否自動解壓war這個包。
    // autoDeploy 如果此項設置為true,表示tomcat服務處於運行狀態,能夠檢測appbase下的文件,如果有新的web應用加入進來,會自動發布這個web應用

  • 搭建了一個tomcat,想要使用tomcat去跑一個網站。首先應用不能是一個傳統所謂的目錄(Apache,nginx訪問網站,首先需要指定一個目錄,目錄裏存放著PHP文件或者是html的文件,然後去訪問),tomcat需要提供一個WAR的包,就是一個壓縮包,這個壓縮包裏面包含著運行這個網站的一些文件,包括配置,js代碼,數據庫相關的等等,都需要打包成war這種文件,而這個文件需要放置到 webapps 裏面。

  • 如果不定義appbase,不想要war存在,可以定義一個目錄,目錄裏放網站的程序,這個相當於把war包解壓到一個目錄中。

  • 增加虛擬主機:

    [root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
    <Host name="www.123.cn" appBase=""
    // 域名為www.123.cn,appbase後為空,就不會與後面的docBase相互幹擾
    unpackWARs= "true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>
    // 自定義站點路徑,不使用自動安裝war的方式
    </Host>
    // 如果出現404問題,可能是appbase或者docbase定義錯誤

  • docBase,這個參數用來定義網站的文件存放路徑,如果不定義,默認是在appBase/ROOT下面,定義了docBase就以該目錄為主了,其中appBase和docBase可以一樣。在這一步操作過程中很多同學遇到過訪問404的問題,其實就是docBase沒有定義對。

  • appBase為應用存放目錄(實際上是一個相對路徑,相對於 /usr/local/tomcat/ 路徑),通常是需要把war包直接放到該目錄下面,它會自動解壓成一個程序目錄

  • 測試準備

    為了方便測試,下載一個zrlog(Java寫的blog站點應用,輕量),zrlog實際就是一個war包。

    先暫時將war包下載到src目錄下:
    [root@localhost ~]# cd /usr/local/src
    [root@localhost src]# wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

    appbase支持自動解壓,所以直接將war包拷貝到/usr/local/tomcat/webapps/目錄下:
    [root@localhost src]# cp zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
    [root@localhost src]# ls /usr/local/tomcat/webapps/
    docs examples host-manager manager ROOT zrlog-1.7.1-baaecb9-release zrlog-1.7.1-baaecb9-release.war

    // 將war包拷貝到/usr/local/tomcat/webapps/目錄下之後,包會自動解壓。(前提是tomcat正常啟動。)

    重命名war包的文件名:
    [root@localhost webapps]# mv zrlog-1.7.1-baaecb9-release zrlog

    [root@localhost webapps]# ls
    docs examples host-manager manager ROOT zrlog zrlog-1.7.1-baaecb9-release zrlog-1.7.1-baaecb9-release.war

    [root@localhost webapps]# rm zrlog-1.7.1-baaecb9-release.war
    rm:是否刪除普通文件 "zrlog-1.7.1-baaecb9-release.war"?y

    [root@localhost webapps]# ls
    docs examples host-manager manager ROOT zrlog

    // 先將/usr/local/tomcat/webapps/目錄下的zrlog-1.7.1-baaecb9-release 文件夾改名為zrlog,然後再將war包刪除。
    // 一但重命名或刪除war包解壓後的包的文件時,war包就會在解壓出一個文件夾。
    // 刪除war包時,其解壓出來的文件夾也同時會被刪除。

  • 測試

用瀏覽器訪問192.168.159.131/zrlog

技術分享圖片

出現安裝向導,這是一個配置數據庫的過程。

  • 創建一個zrlog用戶

    進入到數據庫中,在數據庫中創建一個zrlog數據庫:
    [root@localhost mysql]# mysql -uroot -p
    Enter password:
    ......

    MySQL > create database zrlog;
    Query OK, 1 row affected (0.00 sec)
    // 創建一個zrlog數據庫;

    MySQL > grant all on zrlog.* to ‘zrlog‘@127.0.0.1 identified by ‘159820‘;
    Query OK, 0 rows affected (0.00 sec)
    // 創建一個zrlog用戶

    MySQL > quit
    Bye

    // 使用zrlog用戶登錄
    [root@localhost mysql]# mysql -u zrlog -h127.0.0.1 -p
    Enter password:
    ......
    // 檢查數據庫用戶
    MySQL > show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | test |
    | zrlog |
    +--------------------+
    3 rows in set (0.00 sec)

    • 使用 zrlog用戶信息填寫剛才在瀏覽器中打開的網頁
      技術分享圖片
      技術分享圖片

下一步,安裝完成點擊查看
技術分享圖片

  • 之前想要訪問zrlog需要在瀏覽器中指定IP和目錄(192.168.8.132/zrlog),那麽如何才能輸入IP直接訪問該目錄呢?

    查看虛擬主機docBase 的路徑:
    [root@localhost webapps]# vim /usr/local/tomcat/conf/server.xml
    ......
    <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 定義的目錄為:/data/wwwroot/123.cn

    將/usr/local/tomcat/webapps/zrlog 中的所有文件移動到 /data/wwwroot/123.cn/目錄下
    [root@localhost webapps]# mkdir /data/wwwroot/123.cn
    [root@localhost webapps]# mv /usr/local/tomcat/webapps/* /data/wwwroot/123.cn/

    重啟tomcat服務:
    [root@localhost webapps]# /usr/local/tomcat/bin/shutdown.sh
    Using CATALINA_BASE: /usr/local/tomcat
    Using CATALINA_HOME: /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME: /usr/local/jdk1.8
    Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    [root@localhost webapps]# /usr/local/tomcat/bin/startup.sh
    Using CATALINA_BASE: /usr/local/tomcat
    Using CATALINA_HOME: /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME: /usr/local/jdk1.8
    Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Tomcat started.

    ping www.123.cn 看ip是否為虛擬機ip,如果是的話現在就可以訪問了。

  • 使用www.123.cn 訪問:

    需先修改本地hosts文件
    技術分享圖片

tomcat日誌

tomcat日誌目錄:
/usr/local/tomcat/logs
[root@localhost webapps]# ls /usr/local/tomcat/logs
catalina.2018-01-23.log  host-manager.2018-01-23.log  localhost_access_log.2018-01-23.txt
catalina.out             localhost.2018-01-23.log     manager.2018-01-23.log

// tomcat日誌文件總的有4類
  • catalina開頭的日誌為Tomcat的綜合日誌,它記錄Tomcat服務相關信息,也會記錄錯誤日誌。 // 關註錯誤日誌就行。

  • catalina.2017-xx-xx.log和catalina.out內容相同,前者會每天生成一個新的日誌。

  • host-manager和manager為管理相關的日誌,其中host-manager為虛擬主機的管理日誌。

  • localhost和localhost_access為虛擬主機相關日誌,其中帶access字樣的日誌為訪問日誌,不帶access字樣的為默認虛擬主機的錯誤日誌。

  • 訪問日誌默認不會生成,需要在server.xml中配置一下。

  • 日誌配置文件

    [root@localhost webapps]# vim /usr/local/tomcat/conf/server.xml
    ......
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    prefix="localhost_access_log" suffix=".txt"
    pattern="%h %l %u %t "%r" %s %b" />
    ......
    // 配置文件中valve為日誌文件配置

    // prefix定義訪問日誌的前綴;
    // suffix定義日誌的後綴;
    // pattern定義日誌格式。
    // 新增加的虛擬主機默認並不會生成類似默認虛擬主機的那個localhost.日期.log日誌,錯誤日誌會統一記錄到catalina.out中。關於Tomcat日誌,你最需要關註catalina.out,當出現問題時,我們應該第一想到去查看它。

配置tomcat監聽80端口、配置tomcat虛擬機、tomcat日誌