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
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
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
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,成功访问,不用跟端口号
16.5/16.6/16.7 配置Tomcat虚拟主机
配置虚拟主机
[root@arslinux-01 ~]# vim /usr/local/tomcat/conf/server.xml
name 域名
appBase=" " 定义应用的目录,Java 的应用通常是一个 war 的压缩包
unpackWARs="true" 是否自动解压 WAR 包,拷贝 WAR 包到 webapps 目录中会自动解压
autoDeploy="true"
增加虚拟主机,在 server.xml 的 下面增加如下内容
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,出现安装向导
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 填写信息
完成安装
可以进到后台写文章进行管理
顺序总结:
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,不用再进入目录才能看到博客内容
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
访问日志默认不会生成,需要在 server.xml 中配置一下。
具体方法:
在对应虚拟主机的< Host> 里面加入下面的配置(假如域名为123.cn):
prefix="123.cn_access" suffix=".log" pattern="%h %l %u %t "%r" %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