linux 学习笔记-058-Tomcat-配置监听 80 端口,配置虚拟主机,Tomcat 日志

发布于 2018-03-30  622 次阅读


配置 Tomcat 监听 80 端口

因为浏览器默认访问的是 80 端口,而 Tomcat 默认监听 8080 端口,不过 Tomcat 是支持修改监听端口的,可以在配置文件中把 8080 端口修改为 80 端口,Tomcat 的配置文件格式跟 Apache 和 Nginx 都不一样,后缀名为 xml

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

  <Connector port="80" protocol="HTTP/1.1"

                 connectionTimeout="20000"

                 redirectPort="8443" />

[root@am-01:~#] systemctl stop nginx.service

[root@am-01:~#] netstat -lntp | grep 80

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      19516/java         

tcp6       0      0 :::8009                 :::*                    LISTEN      19516/java         

tcp6       0      0 :::8080                 :::*                    LISTEN      19516/java         

[root@am-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@am-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@am-01:~#] netstat -lntp | grep java

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      21337/java         

tcp6       0      0 :::8009                 :::*                    LISTEN      21337/java         

tcp6       0      0 :::80                   :::*                    LISTEN      21337/java   

#修改 Tomcat 的配置文件,把 8080 端口改为 80 端口,同时把 nginx 暂停,因为 nginx 占用的也是 80 端口,再把 Tomcat 停止运行,重新启动,可见,Tomcat 已经在监听 80 端口了

windows 客户端浏览器测试,没加端口号,默认使用 80 端口,可以访问

linux 学习笔记-058-Tomcat-配置监听 80 端口,配置虚拟主机,Tomcat 日志

配置 Tomcat 的虚拟主机

虚拟主机意思就是,在一台服务器上,部署多个域名的站点,而这每个站点就是一个虚拟主机

appBase:一个存放 war 包的目录,它会自动把 war 包解压成一个程序目录

docBase:相当于已经把 war 包解压出来的目录

war 包:一个把网站需要的文件打包在一起的包文件

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

  <Host name="localhost"  appBase="webapps"

              unpackWARs="true" autoDeploy="true">



          <!-- SingleSignOn valve, share authentication between web applications

               Documentation at: /docs/config/valve.html -->

          <!--

          <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

          -->



          <!-- Access log processes all example.

               Documentation at: /docs/config/valve.html

               Note: The pattern used is equivalent to using pattern="common" -->

          <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

                 prefix="localhost_access_log" suffix=".txt"

                 pattern="%h %l %u %t &quot;%r&quot; %s %b" />



  </Host>

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

appBase 定义应用的目录,Java 的应用通常是一个 war 的压缩包,你只需要将 war 的压缩包放到 appBase 目录下面即可。

#war 压缩包包含了网站运行的一些文件,html、js、图片、静态文件等

#也能指定一个目录用存放 html、js、图片、静态文件等文件,但要指定目录的话就需要 docBase 参数

#unpackWARs 如果设为 true,则会自动解压这个包

#autoDeploy 如果设为 true,表示 Tomcat 服务处于运行状态时,能够监测 appBase 下的文件,如果有新有 web 应用加入进来,会自动发布这个 WEB 应用
[root@am-01:~#] 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

下面,做实验!

我们这里使用基于 java 的博客软件 zrlog 来体会下 appBase 和 docBase 的区别

首先,体验下 appBase:

[root@am-01:~#] cd /usr/local/src/

[root@am-01:/usr/local/src#] wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

--2018-03-31 01:17:38--  http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

正在解析主机 dl.zrlog.com (dl.zrlog.com)... 150.138.216.175

正在连接 dl.zrlog.com (dl.zrlog.com)|150.138.216.175|:80... 已连接。

已发出 HTTP 请求,正在等待回应... 200 OK

长度:7122027 (6.8M) [application/zip]

正在保存至: “zrlog-1.7.1-baaecb9-release.war”



100%[=============================================================================================>] 7,122,027   1.12MB/s 用时 15s   



2018-03-31 01:17:53 (461 KB/s) - 已保存 “zrlog-1.7.1-baaecb9-release.war” [7122027/7122027])

[root@am-01:/usr/local/src#] ls /usr/local/tomcat/webapps/

docs  examples  host-manager  manager  ROOT

[root@am-01:/usr/local/src#] cp zrlog-1.7.1-baaecb9-release.war  /usr/local/tomcat/webapps/

[root@am-01:/usr/local/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

#把下载下来的 zelog 拷贝到 appBase 指定的目录下,发现会自动解压,这里注意,放到 webapps 下的 war 包不能删除,要不然会把自动解压出来的目录也删除掉
[root@am-01:/usr/local/src#] mv /usr/local/tomcat/webapps/zrlog-1.7.1-baaecb9-release /usr/local/tomcat/webapps/zrlog

[root@am-01:/usr/local/src#] ls /usr/local/tomcat/webapps/

docs  examples  host-manager  manager  ROOT  zrlog  zrlog-1.7.1-baaecb9-release  zrlog-1.7.1-baaecb9-release.war

#为了方便做实验,把自动解压出来的 zrlog-1.7.1-baaecb9-release 改名为 zrlog,但你会发现,过了一会,又会自动的把 war 包解压出来,不过没关系,我们要用的只是改名后的 zrlog

windows 客户端测试,可以见到,已经能访问到创建博客的页面了,实验室成功的!

linux 学习笔记-058-Tomcat-配置监听 80 端口,配置虚拟主机,Tomcat 日志

到这里,顺便使用 mysql 创建 zrlog 博客的数据库及其用户

[root@am-01:/usr/local/src#] mysql -uroot -pitsupport.0

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 30

Server version: 5.6.36 MySQL Community Server (GPL)



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



mysql> grant all on zrlog.* to zrlog@127.0.0.1 identified by '123456';

Query OK, 0 rows affected (0.03 sec)



mysql> quit

Bye

[root@am-01:/usr/local/src#] mysql -uzrlog -h127.0.0.1 -p123456

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 32

Server version: 5.6.36 MySQL Community Server (GPL)



Copyright (c) 2000, 2017, 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)

#新建 zrlog 数据库和 zrlog 用户,测试是可用的,这里就可以开始搭建 zrlog 博客了,按照提示填入正确的信息就可以了,这里略过

我这里已经把这个 zrlog 博客搭起来了,但是你会发现,访问的时候地址是:"http://172.17.1.240/zrlog/",这明显不太科学,其实这是因为,默认的虚拟主机配置并没有配置域名,而我们添加的虚拟主机配置文件,用的又不是 appBase,而是 docBase,下面,我们来看下我们自己新建的虚拟主机配置,使用 docBase 是怎么样的吧!

linux 学习笔记-058-Tomcat-配置监听 80 端口,配置虚拟主机,Tomcat 日志

[root@am-01:~#] 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>

[root@am-01:~#] mkdir /data/wwwroot/123.cn

[root@am-01:~#] mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/

[root@am-01:~#] ls -l /data/wwwroot/123.cn/

总用量 16

drwxr-x--- 6 root root 4096 3 月  31 01:25 admin

drwxr-x--- 6 root root   50 3 月  31 01:25 assets

drwxr-x--- 2 root root   51 3 月  31 01:25 error

-rw-r----- 1 root root 9662 4 月   9 2017 favicon.ico

drwxr-x--- 4 root root   33 3 月  31 01:25 include

drwxr-x--- 2 root root  112 3 月  31 01:25 install

drwxr-x--- 3 root root   54 3 月  31 01:25 META-INF

drwxr-x--- 6 root root  132 3 月  31 05:28 WEB-INF

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

#查看我们自定义的虚拟主机配置,可以见到 docBase 所指定的目录,这里我们先手工新建这个目录,并把 webapps/zrlog/目录下的所有文件剪切到 docBase 所指定的目录,最后把 Tomcat 服务重新启动一下(因为在之前自定义虚拟主机配置之后并没有重启服务)

在客户端设置 host,用指定的域名"www.123.cn"访问 rzlog 博客

linux 学习笔记-058-Tomcat-配置监听 80 端口,配置虚拟主机,Tomcat 日志

linux 学习笔记-058-Tomcat-配置监听 80 端口,配置虚拟主机,Tomcat 日志

注:设置为 webapps 的时候,访问站点时实际上访问的是 webapps 目录下的 ROOT 目录,所以,就算以后自定义了 webapps 的目录,也应该把站点文件放到一个叫 ROOT 的目录下

Tomcat 日志

日志很重要,一般站点出问题,首先要看日志,从日志信息中排错

[root@am-01:~#] ls /usr/local/tomcat/logs/

catalina.2018-03-29.log      host-manager.2018-03-31.log          localhost_access_log.2018-03-31.txt

catalina.2018-03-31.log      localhost.2018-03-29.log             manager.2018-03-29.log

catalina.out                 localhost.2018-03-31.log             manager.2018-03-31.log

host-manager.2018-03-29.log  localhost_access_log.2018-03-29.txt

#可以见到,Tomcat 的日志一共有四类
[root@am-01:~#] less /usr/local/tomcat/logs/catalina.out

31-Mar-2018 05:44:13.964 警告 [main] org.apache.catalina.core.StandardHost.setAppBase Using an empty string

for appBase on host [www.123.cn] will set it to CATALINA_BASE, which is a bad idea

31-Mar-2018 05:44:14.017 警告 [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin [SetPropertiesR

ule]{Server/Service/Engine/Host} Setting property 'xmlValidation' to 'false' did not find a matching propert

y.

[root@am-01:~#] less /usr/local/tomcat/logs/catalina.2018-03-31.log

31-Mar-2018 00:43:17.737 信息 [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a sh

ared selector for servlet write/read

31-Mar-2018 00:43:17.739 信息 [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1

817 ms

# 其中 catalina 开头的日志为 Tomcat 的综合日志,它记录 Tomcat 服务相关信息,也会记录错误日志。 其中 catalina.2017-xx-xx.log 和 catalina.out 内容相同,前者会每天生成一个新的日志。
[root@am-01:~#] less /usr/local/tomcat/logs/host-manager.2018-03-31.log

[root@am-01:~#] less /usr/local/tomcat/logs/manager.2018-03-31.log

#host-manager 和 manager 为管理相关的日志,其中 host-manager 为虚拟主机的管理日志。
[root@am-01:~#] less /usr/local/tomcat/logs/localhost.2018-03-31.log

31-Mar-2018 01:25:06.590 严重 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.core.ApplicationFilterConfig.release Failed to destroy the filter named [JFinalFilter] of type [com.jfinal.core.JFinalFilter]

[root@am-01:~#] less /usr/local/tomcat/logs/localhost_access_log.2018-03-31.txt

172.17.1.1 - - [31/Mar/2018:01:22:38 +0800] "GET /zrlog HTTP/1.1" 404 1075

172.17.1.1 - - [31/Mar/2018:01:22:44 +0800] "GET / HTTP/1.1" 200 11250

172.17.1.1 - - [31/Mar/2018:01:28:02 +0800] "GET /zrlog HTTP/1.1" 302 -

172.17.1.1 - - [31/Mar/2018:01:28:05 +0800] "GET /zrlog/ HTTP/1.1" 200 5051

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

#访问日志默认不会生成,需要在 server.xml 中配置一下。
[root@am-01:~#] 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"/>

      <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" />

  </Host>

#新增"www.123.cn"的访问日志信息

#prefix 定义访问日志的前缀,suffix 定义日志的后缀,pattern 定义日志格式。新增加的虚拟主机默认并不会生成类似默认虚拟主机的那个 localhost.日期.log 日志,错误日志会统一记录到 catalina.out 中。关于 Tomcat 日志,最需要关注 catalina.out,当出现问题时,我们应该第一时间想到去查看它。

扩展

邱李的 tomcat 文档:

https://www.linuser.com/forum.php?mod=forumdisplay&fid=37

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/

tomcat  单机多实例:

http://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

tomcat 的 jvm 设置和连接数设置:

http://www.cnblogs.com/bluestorm/archive/2013/04/23/3037392.html

jmx 监控 tomcat:

http://blog.csdn.net/l1028386804/article/details/51547408

jvm 性能调优监控工具 jps/jstack/jmap/jhat/jstat:

http://blog.csdn.net/wisgood/article/details/25343845

http://guafei.iteye.com/blog/1815222

gvm gc 相关:

http://www.cnblogs.com/Mandylover/p/5208055.html

http://blog.csdn.net/yohoph/article/details/42041729