16.4 配置Tomcat监听80端口

16.5/16.6/16.7 配置Tomcat虚拟主机
16.8 Tomcat日志


16.4 配置Tomcat监听80端口

大纲

blob.png

Tomcat默认监听8080端口,如果想修改监听80端口,则需要修改Tomcat的配置文件,server.xml

1 修改server.xml

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

2 找到Connector port="8080" protocol="HTTP/1.1"修改为Connector port="80" protocol="HTTP/1.1"

#找到并修改,
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
#修改后
<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

3 重启服务

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


4 检查进程和监听端口状态

[root@AliKvn tomcat]# ps aux |grep java
root     19693  2.4  4.4 2501500 84308 pts/1   Sl   11:03   0:02 /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 -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     19728  0.0  0.0 112660   964 pts/1    R+   11:05   0:00 grep --color=auto java
[root@AliKvn tomcat]# netstat -lntp |grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      29522/nginx: master 
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN      19693/java          
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN      19693/java

可以看到监听80端口的是nginx,此时nginx占用了80端口。

此时如果nginx把80端口占用了并导致tomcat修改的80端口监听失败的话,可以把nginx停掉,把80端口给空出来。

4.1 把nginx服务停止,并重启Tomcat服务

[root@AliKvn tomcat]# /etc/init.d/nginx stop
Stopping nginx (via systemctl):                            [  OK  ]
[root@AliKvn 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@AliKvn tomcat]# /usr/local/tomcat/bin/startup.sh.sh 
-bash: /usr/local/tomcat/bin/startup.sh.sh: No such file or directory
[root@AliKvn 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

4.2 再次检查监听的80端口(8005加载会比较慢,因为是管理端口)

[root@AliKvn tomcat]# netstat -lntp |grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      19793/java          
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN      19793/java          
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN      19793/java

4.3 在windows测试访问tomcat网页

利用本地ip直接在浏览器访问,不需要加任何端口(因为访问浏览器是通过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

16.5 配置Tomcat的虚拟主机(上)

大纲

blob.png

在之前的httpd和nginx里,提到有虚拟主机的概念,其实Tomcat也有虚拟主机一说。

Tomcat的虚拟主机配置文件是/usr/local/tomcat/conf/server.xml

介绍参数

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

blob.png

参数解释:

  • 其中<Host>和</Host>之间的配置为虚拟主机配置部分,name定义域名。

  • appBase定义应用的目录,Java的应用通常是一个war的压缩包,只需要将war的压缩包放到appBase目录下面即可。(而httpd,nginx定义的虚拟主机目录是root)

  • unpackWARs表示自动解压war包,前提条件是war在appBase目录下(appBase的目录在/usr/local/tomcat/webapps/)

  • 刚刚访问的Tomcat默认页其实就是在appBase目录下面,不过是在它子目录ROOT里。


 创建新的虚拟主机

在</Host>开始建立新的虚拟主机


#vim /usr/local/tomcat/conf/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>


参数解释:

  • Host name="www.123.cn"                        域名是www.123.cn

  • docBase="/data/wwwroot/123.cn/"        不定义war包,就需要定义docBase,其实这里相当于是war后解压后的文件。

  • docBase与appBase二选一,如果同时存在,需要把其中一项写空。


16.6 配置Tomcat虚拟主机(中)

大纲

blob.png

  • docBase,这个参数用来定义网站的文件存放路径,如果不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase可以一样。在这一步操作过程中很多同学遇到过访问404的问题,其实就是docBase没有定义对。

  • appBase为应用存放目录,通常是需要把war包直接放到该目录下面,它会自动解压成一个程序目录


下面通过部署一个java的应用来体会appBase和docBase目录的作用

1 下载zrlog到/usr/local/src

cd /usr/local/src
wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

2 appBase的目录里的文件能自动解压war包(前提条件是unpackWARs= "true")

appBase的目录在

[root@AliKvn src]# ls /usr/local/tomcat/webapps/
docs  examples  host-manager  manager  ROOT

2.1 cp zrlog的包到appBase下

[root@AliKvn src]# cp zrlog-1.7.1-baaecb9-release.war  /usr/local/tomcat/webapps/
[root@AliKvn src]# !ls
ls /usr/local/tomcat/webapps/
docs  examples  host-manager  manager  ROOT  zrlog-1.7.1-baaecb9-release.war

2.2再次进入appBase目录,zrlog包已经被解压,是因为unpackWARs= "true"参数起了作用

[root@AliKvn 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

2.3 将解压后的war包改名(改名的目的是方便后面页面访问,因为网页访问就是访问war后的内容)

[root@AliKvn webapps]# mv zrlog-1.7.1-baaecb9-release zrlog
[root@AliKvn webapps]# ls
docs  examples  host-manager  manager  ROOT  zrlog  zrlog-1.7.1-baaecb9-release.war

2.4 改名完成后,war包发现自己解压出来的包不见了,从而还会继续自动解压(有必要时可以删掉war包)

[root@AliKvn webapps]# ls
docs      host-manager  ROOT   zrlog-1.7.1-baaecb9-release
examples  manager       zrlog  zrlog-1.7.1-baaecb9-release.war

3 访问zrlog

在网页访问zrlog,进行配置(本机ip/zrlog)

blob.png

3.1 进入mysql创建一个库名为zrlog的库

mysql> create database zrlog;
Query OK, 1 row affected (0.00 sec)

3.2 创建用户,赋予相应权限

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

3.3 zrlog用户登录,查看数据库,库添加成功。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
| zrlog              |
+--------------------+
3 rows in set (0.00 sec)

3.4 回到windows浏览器zrlog配置访问页面,录入相关信息,端口默认3306

blob.png

3.5 设置管理者信息

blob.png

完成安装部署

4 测试

配置完成后,再次访问zrlog页面

blob.png

4.1 发文章测试

blob.pngblob.png

总结:

  • Tomcat环境搭建:JDK+Tomcat

  • 下载war包到appBase,让其自动解压,解压后的目录就是部署的项目

  • 配置数据库(添加zrlog账号,zrlog库),管理数据。



16.7 配置Tomcat虚拟主机(下)

本节目的,访问zrlog不通过域名ip/zrlog的形式登录访问,而是直接通过域名访问。

1  编辑Tomcat配置文件

[root@AliKvn webapps]# vim /usr/local/tomcat/conf/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>

利用新建的www.123.cn虚拟主机做实验

1.1 创建123.cn的目录

[root@AliKvn webapps]# mkdir /data/wwwroot/123.cn

1.2 把zrlog下面的相关程序摞到www.123.cn的docBase下面

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

2 绑定windows的本机host

在host里面添加www.123.cn

2.1 绑定完成后,ping测试

ping后的ip必须会是本机的ip.

3 配置完成后,需要重启tomcat服务

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

3.1 查看监听端口

[root@AliKvn webapps]# netstat -lntp |grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      20619/java          
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN      20619/java          
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN      20619/java

4 在windows浏览器测试

blob.png

5 tomcat/root目录

之前访问Tomcat的默认页其实就是在appBase目录下面,不过是在它的子目录ROOT里


总结:

1 本机IP访问zrlog需要加/zrlog/(格式 ip:port/zrlog/),

原因是appBase定义了webapps,而webapps是一个相对路径,相对于/usr/local/tomcat/webapps

它是利用war包(zrlog目录)来打开应用的,所以需要加/zrlog/

2 www.123.cn直接跳转到zrlog页面,是因为定义了docBase,而docBase相当于是www.123.cn的目录,

要想直接从www.123.cn跳转到zrlog,把web的应用相关文件(zrlog目录里面的文件)全部拷贝到里面,从而达到使用webapp(zrlog)的使用目的。

3 appBase与docBase二选一 

appBase 放war包

docBase 放webapp,网站程序



16.8 Tomcat日志

1 Tomcat日志分为四类

[root@AliKvn ~]# cd /usr/local/tomcat/
[root@AliKvn tomcat]# ls logs/
catalina.2018-05-14.log      localhost.2018-05-15.log
catalina.2018-05-15.log      localhost_access_log.2018-05-14.txt
catalina.out                 localhost_access_log.2018-05-15.txt
host-manager.2018-05-14.log  manager.2018-05-14.log
host-manager.2018-05-15.log  manager.2018-05-15.log
localhost.2018-05-14.log     zrlog

解释:

  • 其中catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。 关注点:erro,严重,错误

  • 其中catalina.2017-xx-xx.log和catalina.out内容相同,前者会每天生成一个新的日志。

  • host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志。

  • localhost和localhost_access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。


2 访问日志默认不会生成,需要在server.xml中配置一下。

具体方法是在对应虚拟主机的<Host></Host>里面加入下面的配置(假如域名为123.cn):

#vim server.xml
<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,当出现问题时,我们应该第一想到去查看它。



课后扩展
邱李的tomcat文档 spacer.gifhttps://www.linuser.com/forum.php?mod=forumdisplay&fid=37  
JAR、WAR包区别  spacer.gifhttp://blog.csdn.net/lishehe/article/details/41607725  
tomcat常见配置汇总  spacer.gifhttp://blog.sina.com.cn/s/blog_4ab26bdd0100gwpk.html 
resin安装 spacer.gifhttp://fangniuwa.blog.51cto.com/10209030/1763488/  
1 tomcat  单机多实例
spacer.gifhttp://www.ttlsa.com/tomcat/config-multi-tomcat-instance/  
2 tomcat的jvm设置和连接数设置
spacer.gifhttp://www.cnblogs.com/bluestorm/archive/2013/04/23/3037392.html  
3 jmx监控tomcat
spacer.gifhttp://blog.csdn.net/l1028386804/article/details/51547408  
4 jvm性能调优监控工具jps/jstack/jmapspacer.gifat/jstat   
spacer.gifhttp://blog.csdn.net/wisgood/article/details/25343845    
spacer.gifhttp://guafei.iteye.com/blog/1815222  

5 gvm gc 相关
spacer.gifhttp://www.cnblogs.com/Mandylover/p/5208055.html  
spacer.gifhttp://blog.csdn.net/yohoph/article/details/42041729