1. 程式人生 > >十四周五次課

十四周五次課

linux

十四周五次課

16.4配置Tomcat監聽80端口

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

16.8Tomcat日誌擴展

16.4配置Tomcat監聽80端口


配置Tomcat監聽80端口目錄概要

  • vim /usr/local/tomcat/conf/server.xml

Connector port="8080" protocol="HTTP/1.1"修改為Connector port="80" protocol="HTTP/1.1"
  • /usr/local/tomcat/bin/shutdown.sh

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

配置Tomcat監聽80端口

1.tomcat監聽的是8080端口,若想要直接直接訪問,不需要8080端口訪問,就是默認輸入一個IP或者域名,訪問的是80端口(訪問的時候80端口是可以省略的)

2.tomcat是支持自定義端口的,把 8080端口 改為 80端口

3.編輯tomcat的配置文件,在 /usr/local/tomcat/conf/目錄下有一個server.xml文件

[root@tianqi-01 src]# vim /usr/local/tomcat/conf/server.xml

搜索 /8080

這裏是控制監聽端口的,將這裏的 8080 改為 80

<Connector port="80" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" />

保存退出

4.改完配置文件後,重啟服務,因為是不支持restart的,只能先停止,然後在開啟

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

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

[root@tianqi-01 src]# /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@tianqi-01 src]# /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.

[root@tianqi-01 src]#

5.這時再來查看監聽端口是否改變,會看到監聽了80端口

[root@tianqi-01 src]# netstat -lntp |grep java

tcp6 0 0 :::80 :::* LISTEN 2098/java

tcp6 0 0 127.0.0.1:8005 :::* LISTEN 2098/java

tcp6 0 0 :::8009 :::* LISTEN 2098/java

[root@tianqi-01 src]#

6.但有可能會沒看到tomcat監聽80端口,因為nginx已經監聽了80端口,80端口被占用

  • nginx占用80端口

  • 解決方法:

    • 停掉nginx服務命令/etc/init.d/nginx stop

    • 再來重啟tomcat,會看到tomcat監聽的是80端口

7.這時再來瀏覽器訪問IP (若是剛重啟tomcat服務,8005端口還沒啟動,那麽瀏覽器訪問就會比較慢

技術分享圖片


8.若是在實際線上的生產環境,就不能直接停掉Nginx,這時可以讓nginx代理tomcat了,80 代理 8080

16.5/16.6/16.7配置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沒有定義對。

  • appBase為應用存放目錄,通常是需要把war包直接放到該目錄下面,它會自動解壓成一個程序目錄

  • 下面我們通過部署一個java的應用來體會appBase和docBase目錄的作用

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

  • mv zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/

  • mv /usr/local/tomcat/webapps/zrlog-1.7.1-baaecb9-release /usr/local/tomcat/webapps/zrlog 瀏覽器訪問 ip:8080/zrlog/install/

  • mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/

配置Tomcat虛擬主機

  • 在之前的學習中,Apache還是nginx都屬於webServer,都支持虛擬主機配置文件,虛擬主機配置文件就是一臺服務器上或者一個webserver上,支持一個IP下可以訪問多個域名,每個域名代表一個網站,所以可以配置多個網站,每個網站的虛擬主機,每個網站的許配置文件都是一個虛擬主機,tomcat同樣也支持這個概念

1.打開tomcat虛擬主機配置文件

  • tomcat的配置文件格式和Apache、nginx不一樣,是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>之間的就表示虛擬主機

  • name定義域名,域名為localhost

  • appBase 表示應用目錄在哪裏

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

    • 比如搭建了一個tomcat,想要使用tomcat去跑一個網站,那麽需要網站放在哪裏呢?

  • 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應用

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

</Host>

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

  • 如果不定義appbase,不想要war存在,可以定義一個目錄,目錄裏放網站的程序,這個相當於把war包解壓放到目錄裏,如果不想要解壓這個包,就可以放到appbase裏面,這兩個二選一,如果同時存在,可以把其中一個寫空,防止相互幹擾。

    • 有時會出現404問題,就有可能是appbase或者docbase定義錯誤

  • 總結

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

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

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

  • 下載到/usr/local/src目錄下

[root@tianqi-01 ~]# cd /usr/local/src

[root@tianqi-01 src]# wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

[root@tianqi-01 src]# du -sh zrlog-1.7.1-baaecb9-release.war

6.8Mzrlog-1.7.1-baaecb9-release.war

[root@tianqi-01 src]#

4.zrlog安裝很簡單,appbase是支持自動解壓war包的,將war文件放到appbase裏面,appbase默認是在/usr/local/tomcat/webapps/

[root@tianqi-01 src]# ls /usr/local/tomcat/webapps/

docs examples host-manager manager ROOT

[root@tianqi-01 src]#

  • 默認在下面有5個目錄

5.將zrlog的war文件拷貝到/usr/local/tomcat/webapps/目錄下,然後再來查看/usr/local/tomcat/webapps/,會看到war包自動解壓了——>前提,tomcat正常啟動著,否則是無法自動解壓的

[root@tianqi-01 src]# cp zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/

[root@tianqi-01 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

[root@tianqi-01 src]#

  • 也就是說war包放到appbase定義的路徑下會自動解壓

6.解壓完之後,就可以正常去訪問了,修改zrlog包名稱

  • 為了不影響實驗結果,先更改自動生成的目錄的名字,再移走webapps目錄下的war包;因為一旦移走war包,和war同名的目錄也會自動刪除;如果這個目錄下沒有和war同名的目錄,也會重復的解壓

    • 若刪除appbase下的war包,那麽解壓的包也會跟著直接刪除

    • 修改war包的名稱後,只要下載的war包一直存在,那麽就會再次生成一個目錄

[root@tianqi-01 src]# cd /usr/local/tomcat/webapps/

[root@tianqi-01 webapps]# mv zrlog-1.7.1-baaecb9-release zrlog

[root@tianqi-01 webapps]# ls

docs examples host-manager manager ROOT zrlog zrlog-1.7.1-baaecb9-release zrlog-1.7.1-baaecb9-release.war

7.然後去訪問,使用瀏覽器訪問IP,會看到安裝向導,其實就是一個配置數據庫的過程

技術分享圖片

8.檢查mysql服務是否正常啟動

[root@tianqi-01 webapps]# ps aux |grep mysql

root 938 0.0 0.1 115392 1668 ? S 19:09 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/tianqi-01.pid

mysql 1078 0.0 45.2 1038628 451876 ? Sl 19:09 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/tianqi-01.err --pid-file=/data/mysql/tianqi-01.pid --socket=/tmp/mysql.sock

root 2237 0.0 0.0 112660 984 pts/0 R+ 21:35 0:00 grep --color=auto mysql

[root@tianqi-01 webapps]#

9.進入到數據庫中,在數據庫裏面創建一個zrlog的數據庫

[root@tianqi-01 webapps]# mysql -uroot -paminglinux

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 1

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> create database zrlog;

Query OK, 1 row affected (0.13 sec)


mysql>

10.創建完數據庫之後,還需要創建一個用戶(庫名可以不加單引號)

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

Query OK, 0 rows affected (0.15 sec)


mysql> quit

Bye

[root@tianqi-01 webapps]#

11.檢查創建的數據庫用戶是否正確

[root@tianqi-01 webapps]# mysql -uzrlog -h127.0.0.1 -paminglinux1

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 2

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.05 sec)


mysql>

  • 在執行 show databases; 命令後,會只看到zrlog

12.接下來就是在瀏覽器訪問IP打開的網頁,填寫數據庫的信息(系統信箱自定義即可),之後就能訪問了,密碼為 aminglinux1

技術分享圖片

點擊下一步,保存

技術分享圖片

管理員密碼設置的簡單一些,這裏設置成123456

技術分享圖片

13.正常訪問搭建的博客,並可以在文章後臺發布文章

技術分享圖片

技術分享圖片

總結

  1. 首先部署環境,tomcat加jdk

  2. 部署完環境後偶,下載zrlog的war包過來

  3. 把war包放到appbase裏面,它會自動的幫你解壓,解壓成一個目錄,這個目錄就是我們需要項目

  4. 配置一個數據庫,對應的用戶,數據庫,密碼

  5. 但這種訪問,還需要在後面加一個目錄

搭建好zrlog(測試用docBase指定路徑,訪問是否生效)

1.在搭建好zrlog後,在訪問這個博客的時候,不想要這個目錄,比如訪問 192.168.202.130/zrlog/ ,去掉zrlog這個目錄,直接用域名去訪問

2.查看tomcat是配置文件,在配置文件中已經創建了一個新的虛擬主機,域名叫做www.123.cn,appbase沒有去定義,也就是說不需要弄任何的war包過來,但定義了一個docbase,docbase就是一個目錄,這裏面不需要設置任何的war包,而是war包解壓完的目錄放進去

[root@tianqi-01 webapps]# vim /usr/local/tomcat/conf/server.xml

</Host>

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

3.創建/data/wwwroot/123.cn/目錄

[root@tianqi-01 webapps]# mkdir /data/wwwroot/123.cn

[root@tianqi-01 webapps]#

4.然後把appbase下的zrlog目錄下的所有文件,全部移動到docbase下的/data/wwwroot/123.cn/目錄下

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

[root@tianqi-01 webapps]#

5.綁定hosts,在window物理機的hosts文件中,加入虛擬機的IP和網址

技術分享圖片

6.在windows物理機上ping www.123.cn,如果放到到的的虛擬機上,就可以去訪問它了

技術分享圖片

7.然後重啟tomcat服務

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

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

[root@tianqi-01 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@tianqi-01 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.

[root@tianqi-01 webapps]#

8.查看端口

[root@tianqi-01 webapps]# netstat -lntp |grep 80

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 800/sshd

tcp6 0 0 :::80 :::* LISTEN 2379/java

tcp6 0 0 :::22 :::* LISTEN 800/sshd

tcp6 0 0 127.0.0.1:8005 :::* LISTEN 2379/java

tcp6 0 0 :::8009 :::* LISTEN 2379/java

[root@tianqi-01 webapps]#

9.瀏覽器訪問www.123.cn ,按ctrl+f5刷新

技術分享圖片

16.8Tomcat日誌擴展

  • ls /usr/local/tomcat/logs

[root@tianqi-01 webapps]# cd ..

[root@tianqi-01 tomcat]# ls

bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work

[root@tianqi-01 tomcat]# ls logs

catalina.2018-03-29.log host-manager.2018-03-29.log localhost.2018-04-01.log manager.2018-03-29.log

catalina.2018-04-01.log host-manager.2018-04-01.log localhost_access_log.2018-03-29.txt manager.2018-04-01.log

catalina.out localhost.2018-03-29.log localhost_access_log.2018-04-01.txt

[root@tianqi-01 tomcat]#

  • tomcat日誌分為四種

    • 其中catalina開頭的日誌為Tomcat的綜合日誌,它記錄Tomcat服務相關信息,也會記錄錯誤日誌。

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

友情鏈接:http://www.apelearn.com阿銘linux


十四周五次課