0528課的預習任務

16.1 Tomcat 介紹

  • Tomcat 是 Apache 軟件基金會(Apache Software Foundation)的 Jakarta 項目中的一個核心項目,由 Apache 、Sun 和其他一些公司及個人共同開發而成

  • java 程序寫的網站用 tomcat + jdk 來運行

  • tomcat 是一箇中間件,真正起作用的,解析 java 腳本的是 jdk

  • jdk(java development kit)是整個 java 的核心,它包含了 java 運行環境和一堆 java 相關的工具以及java基礎庫

  • 最主流的 jdk 爲 sun 公司發佈的 jdk ,除此之外,其實 IBM 公司也有發佈 JDK ,CentOS 上也可以用 yum 安裝 openjdk


16.2 安裝 jdk

jdk 版本 1.6、1.7、1.8

1、進到官網,下載對應版本到 windows 本地

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

1.png

2、使用 XFTP 上傳到虛擬機中

[root@arslinux-01 ~]# cd /usr/local/src/
[root@arslinux-01 src]# ls
apr-1.6.5         apr-util-1.6.1.tar.gz  jdk-8u211-linux-x64.tar.gz                  nginx-1.14.2.tar.gz
apr-1.6.5.tar.gz  httpd-2.4.38           mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz  php-5.6.39
apr-util-1.6.1    httpd-2.4.38.tar.gz    nginx-1.14.2

3、解壓

[root@arslinux-01 src]# tar xvf jdk-8u211-linux-x64.tar.gz
[root@arslinux-01 src]# du -sh jdk1.8.0_211/
392Mjdk1.8.0_211/

4、將目錄挪到 /usr/local/ 下,並改名爲 jdk1.8

[root@arslinux-01 src]# mv jdk1.8.0_211/ /usr/local/jdk1.8

5、在 環境變量 /etc/profile 中增加幾行,並使之生效

[root@arslinux-01 src]# vi /etc/profile
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_HOME=/usr/local/jdk1.8/jre
PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
[root@arslinux-01 src]# source /etc/profile

6、檢驗 jdk 是否安裝成功

[root@arslinux-01 src]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

如果版本號和安裝的不符,則 rpm -qa |grep openjdk,看是否安裝了 openjdk,卸載

如果是生產環境,yum list |grep openjdk 把 openjdk 對應版本的包全部安裝


16.3 安裝Tomcat

1、下載二進制安裝包到 /usr/local/src 下

[root@arslinux-01 src]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.tar.gz
[root@arslinux-01 src]# ls
apache-tomcat-8.5.37.tar.gz  httpd-2.4.38                                nginx-1.14.2.tar.gz
apr-1.6.5                    httpd-2.4.38.tar.gz                         php-5.6.39
apr-1.6.5.tar.gz             jdk-8u211-linux-x64.tar.gz                  php-5.6.39.tar.bz2
apr-util-1.6.1               mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
apr-util-1.6.1.tar.gz        nginx-1.14.2

2、解壓

[root@arslinux-01 src]# tar xvf apache-tomcat-8.5.37.tar.gz

3、挪到 /usr/local/ 下,並改名爲 tomcat

[root@arslinux-01 src]# tar xvf apache-tomcat-8.5.37.tar.gz

4、啓動 tomcat

[root@arslinux-01 tomcat]# /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@arslinux-01 tomcat]# ps aux|grep tomcat
root       8255 31.3  8.3 2292052 82676 pts/0   Sl   21:59   0:05 /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 -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomca/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       8304  0.0  0.0 112724   988 pts/0    R+   22:00   0:00 grep --color=auto tomcat
[root@arslinux-01 tomcat]# netstat -lntp| grep java
tcp6       0      0 :::8009                 :::*                    LISTEN      8255/java
tcp6       0      0 :::8080                 :::*                    LISTEN      8255/java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      8255/java

5、重啓 tomcat (不支持 restart )

[root@arslinux-01 tomcat]# /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@arslinux-01 tomcat]# ps aux|grep java
root       8353  0.0  0.0 112724   988 pts/0    R+   22:03   0:00 grep --color=auto java
[root@arslinux-01 tomcat]# /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@arslinux-01 tomcat]# ps aux|grep java
root       8370 93.5  5.7 2255884 57576 pts/0   Sl   22:03   0:01 /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 -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -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       8383  0.0  0.0 112724   988 pts/0    R+   22:03   0:00 grep --color=auto java

tomcat不支持restart,如果需要重啓,/usr/local/tomcat/bin/shutdown.sh 後,在執行 startup.sh

6、tomcat 監聽三個端口

[root@arslinux-01 tomcat]# netstat -lntp | grep java
tcp6       0      0 :::8009                 :::*                    LISTEN      8370/java
tcp6       0      0 :::8080                 :::*                    LISTEN      8370/java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      8370/java

三個端口:

8080 爲提供web服務的端口

8005 爲管理端口

8009 端口爲第三方服務調用的端口,比如httpd和Tomcat結合時會用到

7、瀏覽器訪問 192,168.194.130:8080

2.png

16.4 配置 Tomcat 監聽80端口

默認web服務訪問的是80端口,此時再訪問 http://192.168.194.130/ 就不用寫端口號了

1、編輯 /usr/local/tomcat/conf/server.xml

將 Connector port="8080" protocol="HTTP/1.1" 修改爲 Connector port="80" protocol="HTTP/1.1" 後

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


3.png

2、重啓 tomcat

[root@arslinux-01 ~]# /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@arslinux-01 ~]# /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@arslinux-01 ~]# netstat -lntp|grep java
tcp6       0      0 :::8009                 :::*                    LISTEN      8601/java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      8601/java

80 端口沒有被 tomcat 監聽

3、查看 80 端口,已經被 nginx 佔用了

[root@arslinux-01 ~]# netstat -lntp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      7530/nginx: master
tcp6       0      0 :::8009                 :::*                    LISTEN      8601/java
tcp6       0      0 :::3306                 :::*                    LISTEN      7808/mysqld
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      8601/java

80 端口被 nginx 佔用,關閉 nginx

4、關閉 nginx

[root@arslinux-01 ~]# /etc/init.d/nginx stop
Stopping nginx (via systemctl):                            [  確定  ]

5、重啓 tomcat ,再查看 80 端口

[root@arslinux-01 ~]# /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@arslinux-01 ~]# /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@arslinux-01 ~]# netstat -lntp|grep java
tcp6       0      0 :::8009                 :::*                    LISTEN      8702/java
tcp6       0      0 :::80                   :::*                    LISTEN      8702/java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      8702/java

6、訪問 192.168.194.130,成功訪問,不用跟端口號

4.png

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

  • 配置虛擬主機

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

5.png


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

name 域名

appBase=" " 定義應用的目錄,Java 的應用通常是一個 war 的壓縮包

unpackWARs="true" 是否自動解壓 WAR 包,拷貝 WAR 包到 webapps 目錄中會自動解壓

autoDeploy="true"


  • 增加虛擬主機,在 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>

6.png

docBase 和 appBase 類似,appBase 是把 jsp 文件放在 WAR 包中,而如果不想 WAR 包的存在,不定義 appBase ,那麼可以定義一個目錄,目錄裏面放網站的程序,其實就相當於 WAR 包解壓完的文件放到裏面,而用 docBase 來定義目錄位置

注意:appBase 和 docBase 只能選擇一個,另一個留空即可


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

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


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

1、下載 zrlog

[root@arslinux-01 ~]# cd /usr/local/src/
[root@arslinux-01 src]# wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
[root@arslinux-01 src]# du -sh zrlog-1.7.1-baaecb9-release.war
6.8Mzrlog-1.7.1-baaecb9-release.war

2、拷貝 .war 文件到 /usr/local/tomcat/webapps/ 下,.war 文件會自動解壓

[root@arslinux-01 src]# cp zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
[root@arslinux-01 src]# ls /usr/local/tomcat/webapps/
docs  examples  host-manager  manager  ROOT  zrlog-1.7.1-baaecb9-release.war
[root@arslinux-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

拷貝完後過一會纔會顯示出目錄

3、先將zrlog-1.7.1-baaecb9-release 改名爲 zrlog ,再刪除 .war 包

[root@arslinux-01 ~]# cd /usr/local/tomcat/webapps/
[root@arslinux-01 webapps]# ls
docs  examples  host-manager  logs  manager  ROOT  zrlog-1.7.1-baaecb9-release  zrlog-1.7.1-baaecb9-release.war
[root@arslinux-01 webapps]# mv zrlog-1.7.1-baaecb9-release zrlog
[root@arslinux-01 webapps]# rm -rf /usr/local/tomcat/webapps/zrlog-1.7.1-baaecb9-release.war

4、網頁登錄 192.168.194.130/zrlog,出現安裝嚮導

7.png

5、檢查 mysql 是否啓動

[root@arslinux-01 webapps]# ps aux|grep mysqld
root       7487  0.0  0.1 115436  1712 ?        S    22:34   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/arslinux-01.pid
mysql      7743  0.4 46.0 1302752 458468 ?      Sl   22:34   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=arslinux-01.err --pid-file=/data/mysql/arslinux-01.pid --socket=/tmp/mysql.sock
root       8277  0.0  0.0 112728   984 pts/0    R+   22:53   0:00 grep --color=auto mysqld

6、進到 mysql 中,創建數據庫 zrlog,創建用戶 zrlog

[root@arslinux-01 webapps]# mysql -uroot -parslinux
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.43 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, 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.00 sec)

mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by 'arslinux';
Query OK, 0 rows affected (0.01 sec)

mysql> quit
Bye
[root@arslinux-01 webapps]#

7、用 zrlog 登錄數據庫

[root@arslinux-01 webapps]# mysql -uzrlog -h127.0.0.1 -parslinux
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.43 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, 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.01 sec)

mysql> quit
Bye

8、回到瀏覽器裏 192.168.194.130/zrlog 填寫信息

8.png

9.png

10.png

11.png

完成安裝


  • 可以進到後臺寫文章進行管理

12.png


  • 順序總結:

1.部署環境 jdk + tomcat

2.下載 zrlog 的 war 包

3.把 war 包放到 server.xml 中定義的 appbase 的目錄下,unpackWARs需要定義爲 true 會自動解壓 war 包

4.創建對應的數據庫、用戶和密碼


之前訪問zrlog博客是在192,168,65,128/zrlog,zrlog目錄下訪問,如果不想域名後有目錄,可以按照以下步驟做


  • 之前在 server.xml 編輯新增的虛擬主機

-- 沒有定義 appBase

-- 而定義了 docBase="/data/wwwroot/123.cn/"

-- 因此將 war 包解壓出來的目錄拷貝到 docBase 定義的目錄下就可以通過 123.cn 來訪問 zrlog 內容

  • 創建目錄 /data/wwwroot/123.cn/,並移動 zrlog 到目錄中

[root@arslinux-01 webapps]# mkdir /data/wwwroot/123.cn/
[root@arslinux-01 webapps]# mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/
[root@arslinux-01 webapps]# ls !$
ls /data/wwwroot/123.cn/
zrlog
  • 在 windows 的 hosts 中重定向

  • 訪問 www.123.cn不用再進入目錄才能看到博客內容

13.png

appBase 和 docBase 的區別:

appBase 是放 war 包的,docBase 是直接放網站程序測


訪問 tomcat 默認是訪問目錄中的 ROOT 目錄,如果自己定義 appBase,目錄下需要創建 ROOT 目錄

如果出現 404 問題,需要考慮到 appBase 、docBase 和 ROOT 目錄的問題。


16.8 Tomcat日誌

  • 日誌目錄

[root@arslinux-01 ~]# cd /usr/local/tomcat/logs/
[root@arslinux-01 logs]# ls
catalina.2019-05-27.log  host-manager.2019-05-27.log  localhost.2019-05-28.log             manager.2019-05-27.log
catalina.2019-05-28.log  host-manager.2019-05-28.log  localhost_access_log.2019-05-27.txt  manager.2019-05-28.log
catalina.out             localhost.2019-05-27.log     localhost_access_log.2019-05-28.txt

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

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

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

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


[root@arslinux-01 logs]# cat catalina.out

14.png


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

15.png


  • 具體方法:

在對應虛擬主機的< 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,當出現問題時,我們應該第一想到去查看它。


擴展:

java容器比較 http://my.oschina.net/diedai/blog/271367

http://www.360doc.com/content/11/0618/21/16915_127901371.shtml

j2ee、j2se、ejb、javabean、serverlet、jsp之間關係 http://bbs.csdn.net/topics/50015576

tomcat server.xml配置詳解  http://blog.csdn.net/yuanxuegui2008/article/details/6056754

JAR、WAR包區別  http://blog.csdn.net/lishehe/article/details/41607725


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章