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


猜你喜欢

转载自blog.51cto.com/11530642/2401796