16.1 Tomcat介绍
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公司(已被oracle收购)发布的jdk,除此之外,其实IBM公司也有发布JDK,CentOS上也可以用yum安装openjdk(开源)。
16.2 安装jdk
安装tomcat之前先安装jdk,因为tomcat安装依赖jdk的一些环境。
jdk目前的版本有:1.6、1.7、1.8,简称:6、7、8
1、下载jdk1.8,在oracle官网下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载到window中的安装包可以用xftp上传到Linux中。
2、安装jdk
解压安装包:tar zxvf jdk-8u191-linux-x64.tar.gz
重命名:mv jdk1.8.0_191 /usr/local/jdk1.8
在/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
用source /etc/profile 使添加内容生效。
2、测试jdk是否生效:
[root@liang-00 src]# java -version java version "1.8.0_191" Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode) [root@liang-00 src]#
如果版本信息和下载的安装包信息不一致,含有openjdk可以查看下之前是否已经安装了openjdk,如果安装了卸载就可以了,但是在线上的服务器绝对不可以卸载的。
[root@liang-00 src]# rpm -qa |grep openjdk [root@liang-00 src]#
16.3 安装Tomcat
tomcat是一个中间件,真正起作用的解析java脚本的是jdk。tomcat是一个webserver,它解析java时要用到jdk。
1、下载tomcat二进制源码包。
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz
2、安装tomcat。
解压包、重命名
tar zxvf apache-tomcat-8.5.35.tar.gz
mv apache-tomcat-8.5.35 /usr/local/tomcat
3、启动tomcat。
/usr/local/tomcat/bin/startup.sh
[root@liang-00 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@liang-00 src]#
查看进程:
[root@liang-00 src]# ps aux|grep java root 1840 58.6 8.4 2754784 84784 pts/0 Sl 12:09 0:13 /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 1899 2.0 0.0 112704 972 pts/0 S+ 12:10 0:00 grep --color=auto java [root@liang-00 src]#
关闭tomcat。
- tomcat不支持restart,只能用:/usr/local/tomcat/bin/shutdown.sh 先停掉tomcat,再用 /usr/local/tomcat/bin/startup.sh 启动。
- 修改配置文件后也只能先 /usr/local/tomcat/bin/shutdown.sh 再 /usr/local/tomcat/bin/startup.sh
[root@liang-00 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@liang-00 src]#
tomcat服务一共有三个端口:
- 8080为提供web服务的端口;
- 8005为管理端口;
- 8009端口为第三方服务调用的端口,比如httpd和Tomcat结合时会用到;
[root@liang-00 src]# netstat -nltp|grep 80 tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1959/java tcp6 0 0 :::8009 :::* LISTEN 1959/java tcp6 0 0 :::8080 :::* LISTEN 1959/java [root@liang-00 src]#
浏览器访问tomcat(8080端口)。
16.4 配置Tomcat监听80端口
1、编辑 vim /usr/local/tomcat/conf/server.xml
把8080端口改为80。
2、重启tomcat服务。
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
[root@liang-00 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@liang-00 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@liang-00 src]#
查看服务端口:
[root@liang-00 src]# netstat -nltp|grep 80 tcp6 0 0 127.0.0.1:8005 :::* LISTEN 2246/java tcp6 0 0 :::8009 :::* LISTEN 2246/java tcp6 0 0 :::80 :::* LISTEN 2246/java [root@liang-00 src]#
浏览器测试80端口访问。
16.5-16.7 配置Tomcat的虚拟主机
apache、nginx和tomcat都支持虚拟主机。
1、tomcat配置文件。
vim /usr/local/tomcat/conf/server.xml
其中:<Host>和</Host>之间为虚拟主机配置
其中:
- name:定义域名;
- appBase:定义应用目录,此目录是相对目录,完整路径“usr/local/tomcat/目录”,java的应用通常是一个war包,只需要将war的压缩包放到appBase目录下面即可;之前访问的tomcat默认主页就是在appBase目录下,是在它的子目录ROOT下;
- upbackWARs:如果是true,放在appBase下的war包会自动解压;
- <Valve />:配置日志相关的内容;
2、增加虚拟主机。
<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没有定义,所有可以定义一个docBase,存放一些目录文件;appBase和docBase只能有一个存在,一个存在另一个就要设置成空。
3、部署zrlog
ZrLog是使用Java开发的博客/CMS程序,具有简约,易用,组件化,内存占用低等特点。
下载zrlog
wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
[root@liang-00 src]# du -sh zrlog-1.7.1-baaecb9-release.war 6.8M zrlog-1.7.1-baaecb9-release.war [root@liang-00 src]#
把zrlog-1.7.1-baaecb9-release.war 移动到 /usr/local/tomcat/webapps/ 会自动解压。
[root@liang-00 webapps]# ls docs examples host-manager manager ROOT zrlog zrlog-1.7.1-baaecb9-release zrlog-1.7.1-baaecb9-release.war [root@liang-00 webapps]#
浏览器访问zrlog:http://192.168.37.200/zrlog/
要填写数据库信息首先要在mysql数据库中配置相关内容;数据库中创建zrlog数据库和用户:
Query OK, 1 row affected (0.12 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | db1 | | my_test_db | | mysql | | performance_schema | | test | | zrlog | +--------------------+ 7 rows in set (0.00 sec) mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by '123456'; Query OK, 0 rows affected (0.18 sec)
完成填写zrlog信息。
总结:
zrlog部署步骤:1、部署jdk和tomcat环境;2、下载zrlog的war包放在appBase目录下自动解压,就是访问的项目;3、配置数据库mysql,在浏览器中完成配置部署。
4、用域名访问zrlog
之前访问的zrlog都是用ip,下面来完成用域名访问zrlog。
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>
配置文件中appBase没有定义,所以可以用docBase来定义访问目录。
首先创建docBase目录,把appBase的zrlog目录下的文件拷贝到docBase下:
[root@liang-00 webapps]# mkdir /data/wwwroot/123.cn [root@liang-00 webapps]# mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/ [root@liang-00 webapps]#
在window中绑定hosts,测试ping www.123.cn,重启tomcat服务。
[root@liang-00 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@liang-00 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@liang-00 webapps]#
浏览器访问:www.123.cn
5、webapp目录下的ROOT目录。
[root@liang-00 webapps]# ls ROOT/ asf-logo-wide.svg bg-middle.png bg-nav.png favicon.ico RELEASE-NOTES.txt tomcat.gif tomcat-power.gif WEB-INF bg-button.png bg-nav-item.png bg-upper.png index.jsp tomcat.css tomcat.png tomcat.svg [root@liang-00 webapps]#
appBase默认访问的就是ROOT目录
在部署自定义appBase目录也应该有ROOT目录,来存放一些图片、jsp等静态文件。
16.8 Tomcat日志
查看日志文件:ls /usr/local/tomcat/logs/
[root@liang-00 tomcat]# ls logs/ catalina.2018-12-25.log host-manager.2018-12-25.log localhost_access_log.2018-12-25.txt catalina.out localhost.2018-12-25.log manager.2018-12-25.log [root@liang-00 tomcat]#
其中:
- 其中catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志;
- 其中catalina.2018-xx-xx.log和catalina.out内容相同,前者会每天生成一个新的日志;
- host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志;
- localhost和localhost_access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。
访问日志默认不会生成的,需要在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"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="123.cn_access" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
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
tomcat常用数据库连接的方法 http://wjw7702.blog.51cto.com/5210820/1109263
JAR、WAR包区别 http://blog.csdn.net/lishehe/article/details/41607725
tomcat常见配置汇总 http://blog.sina.com.cn/s/blog_4ab26bdd0100gwpk.html
resin安装 http://fangniuwa.blog.51cto.com/10209030/1763488/
1 tomcat 单机多实例:
http://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
2 tomcat的jvm设置和连接数设置:
http://www.cnblogs.com/bluestorm/archive/2013/04/23/3037392.html
3 jmx监控tomcat:
http://blog.csdn.net/l1028386804/article/details/51547408
4 jvm性能调优监控工具jps/jstack/jmap/jhat/jstat:
http://blog.csdn.net/wisgood/article/details/25343845
http://guafei.iteye.com/blog/1815222
5 gvm gc 相关:
http://www.cnblogs.com/Mandylover/p/5208055.html
http://blog.csdn.net/yohoph/article/details/42041729
tomcat内存溢出:
https://blog.csdn.net/ye1992/article/details/9344807