配置Tomcat监听80端口&配置Tomcat虚拟主机&Tomcat日志

点点圈 提交于 2019-12-01 01:37:30

16.4 配置Tomcat监听80端口

Tomcat默认监听8080、8005以及8009端口,日常进行浏览器访问时,需要输入域名+端口,十分不方便,我们可以通过修改Tomcat配置文件,使其监听80端口,即可解决这个问题。

修改配置文件

vim /usr/local/tomcat/conf/server.xml
将Connector port="8080" protocol="HTTP/1.1"修改为Connector port="80" protocol="HTTP/1.1"

重启Tomcat服务

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

查看监听的端口

netstat -lntp |grep java
tcp6       0      0 :::80                   :::*                    LISTEN      2108/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      2108/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      2108/java

8005端口监听速度要稍慢一些,在8005端口监听之前,访问Tomcat服务主页的速度会比较慢

注:如果Tomcat没有监听80端口,可能是其他服务将80端口占用(如Nginx),需要先停止相关服务,再重启Tomcat即可。

16.5/16.6/16.7 配置Tomcat虚拟主机

在之前的学习中,Apache还是nginx都属于webServer,都支持虚拟主机配置文件,虚拟主机配置文件就是一台服务器上或者一个webserver上,支持一个IP下可以访问多个域名,每个域名代表一个网站,所以可以配置多个网站,每个网站的虚拟主机,每个网站的许配置文件都是一个虚拟主机,tomcat同样也支持这个概念

虚拟主机配置文件简介

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定义应用的目录,比如搭建了一个tomcat,想要使用tomcat去跑一个网站,那么需要网站放在哪里呢?
  • 首先你的应用不能是一个传统所谓的目录,Apache,nginx访问网站,首先需要指定一个目录,目录里存放着PHP文件或者是html的文件,然后去访问;而tomcat则不一样,它需要提供一个WAR的包,就是一个压缩包,这个压缩包里面包含着运行这个网站的一些文件,包括配置,js代码,数据库相关的等等,都需要打包成war这种文件,而这个文件需要放置到 webapps 里面。
  • Java的应用通常是一个war的压缩包,你只需要将war的压缩包放到appBase目录下面即可。刚刚访问的Tomcat默认页其实就是在appBase目录下面,不过是在它子目录ROOT里。
  • unpackWARs 就是是否自动的解压war这个包,也就是war包放到webapps里面,就会自动解压
  • 除了使用war包以外,还可以单独的指定目录,这个目录里面存放着一些jsp文件,也就是提供的不是war包,而就是一个目录,这个目录里面有jsp的程序,如果是这样,还需要docbase去定义
  • webapps的默认路径为/usr/local/tomcat/webapps/,webapps目录下,默认有5个目录(docs examples host-manager manager ROOT)
  • autoDeploy 如果此项设置为true,表示tomcat服务处于运行状态,能够检测appbase下的文件,如果有新的web应用加入进来,会自动发布这个web应用

增加虚拟主机

增加虚拟主机,编辑/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>

docBase,这个参数用来定义网站的文件存放路径,如果不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase可以一样。

如果不定义appbase,不想要war存在,可以用docBase定义一个目录,目录里放网站的程序,这个相当于把war包解压放到目录里,如果不想要解压这个包,就可以放到appbase里面,这两个二选一,如果同时存在,可以把其中一个写空,防止相互干扰,有时会出现404问题,就有可能是appbase或者docbase定义错误。

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

下载zrlog

wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

appBase为应用存放目录(实际上是一个相对路径,相对于 /usr/local/tomcat/ 路径),它可以自动解压war包,通常是需要把war包直接放到该目录下面,它会自动解压成一个程序目录

拷贝源文件

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

通过ls命令可以发现,当文件拷贝至webapps目录下后,没有进行任何操作,war包已被自动解压。

[root@linux-5 webapps]# mv zrlog-1.7.1-baaecb9-release zrlog
[root@linux-5 ~]# rm -f /usr/local/tomcat/webapps/zrlog-1.7.1-baaecb9-release.war

删除webapps目录下的war包,避免重复解压,注意要现将解压后的目录改名字,否则连同解压后的目录会被一起删掉

访问zrlog

浏览器输入192.168.88.5/zrlog

访问后会弹出安装向导,填写数据库相关信息,zrlog不会自动创建,因此在安装之前我们需要创建相应的数据库与用户。

检查数据库是否正常启动

[root@linux-5 webapps]# ps aux|grep mysql
root        981  0.0  0.0 115384  1692 ?        S    19:17   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/linux-5.pid
mysql      1344  0.0 24.2 973052 452220 ?       Sl   19:17   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=/data/mysql/linux-5.err --pid-file=/data/mysql/linux-5.pid --socket=/tmp/mysql.sock --port=3306
root       3124  0.0  0.0 112676   984 pts/0    R+   23:02   0:00 grep --color=auto mysql

创建数据库

mysql> create database zrlog;

创建用户并授权数据库

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

登录用户验证操作

[root@linux-5 webapps]# 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 3
Server version: 5.6.35 MySQL Community Server (GPL)

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

继续安装zrlog

检查无误后,按要求填写相关信息

按要求完成安装后,即可查看主界面

通过appBase的方式搭建有一个缺点,在访问时除了输入地址外,还需要加一个/zrlog的目录。

针对上述问题,可以采用docBase指定路径,解决这个问题

创建docBase指定的路径

mkdir /data/wwwroot/123.cn/

移动文件路径

将zrlog的文件目录移动到docBase指定路径下

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

修改Windows上的hosts

重启Tomcat服务

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

访问测试

浏览器输入www.123.cn

网站可以正常访问

注:在自定义appBase的目录时,应在自定义的目录下创建一个ROOT目录,并将图片、静态文件、主页等存于该目录下,因为appBase搭建,默认访问的是自定义目录下的ROOT目录。否则在访问时可能会遇到404问题。

16.8 Tomcat日志

查看日志列表

[root@linux-5 webapps]# ls /usr/local/tomcat/logs
catalina.2018-07-04.log  host-manager.2018-07-04.log  localhost.2018-07-05.log             manager.2018-07-04.log
catalina.2018-07-05.log  host-manager.2018-07-05.log  localhost_access_log.2018-07-04.txt  manager.2018-07-05.log
catalina.out             localhost.2018-07-04.log     localhost_access_log.2018-07-05.txt

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

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

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

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

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

具体方法是在对应虚拟主机的<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,当出现问题时,我们应该第一想到去查看它。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!