Tomcat介绍 安装jdk 安装Tomcat 配置Tomcat监听80端口 配置Tomcat虚拟主机 Tomcat日志扩展

1、Tomcat介绍

  • Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
  • java程序写的网站用tomcat+jdk来解析、运行
  • tomcat是一个中间件,用来运行java语言写的网站,真正起作用的,解析java脚本的是jdk
  • jdk(java development kit)是整个java的核心,它包含了java运行环境和一堆java相关的工具以及java基础库。
  • 最主流的jdk为sun公司发布的jdk,除此之外,其实IBM公司也有发布JDK,CentOS上也可以用yum安装openjdk;java写的网页是jsp后缀,解析需要jdk

2、安装jdk

  • 安装tomcat和jdk,首先需要安装jdk,因为tomcat要想启动,依赖于jdk的环境变量
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 
// 下载jdk-8u171-linux-x64.tar.gz。
//使用Xftp命令,从Windows传到linux系统里,存放到/usr/local/src目录下。
root@aming1 ~]# cd /usr/local/src/
[root@aming1 src]# ls
jdk-8u171-linux-x64.tar.gz
  • 解压jdk安装包,移动目录并改名为jdk1.8
[root@aming1 src]# tar xzvf jdk-8u171-linux-x64.tar.gz
[root@aming1 src]# mv jdk1.8.0_171 /usr/local/jdk1.8
[root@aming1 src]# cd ..
[root@aming1 local]# ls
bin  etc  games  include  jdk1.8  lib  lib64  libexec  sbin  share  src
  • 修改环境变量:/etc/profile,增加下面几行
[root@aming1 src]# vim /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 命令使文件生效
[root@aming1 src]# source /etc/profile
  • 验证是否安装成功:显示版本号,代表安装成功
[root@aming1 src]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
  • 如果显示的版本号与你安装的1.8版本不符,查看是否yum安装过openjdk 
  • 3、安装Tomcat
  • 下载tomcat的安装包
,wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz
  • 解压后,移动到/usr/local/目录下,并更改名字为tomcat
[root@aming1 src]# tar xzvf apache-tomcat-8.5.32.tar.gz
[root@aming1 src]# mv apache-tomcat-8.5.32 /usr/local/tomcat
[root@aming1 src]# ls /usr/local
bin  etc  games  include  jdk1.8  lib  lib64  libexec  sbin  share  src  tomcat
[root@aming1 src]# ls /usr/local/tomcat
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
  • 启动tomcat,因为tomcat软件包下载的是 二进制免编译包 ,不用去编译;;启动脚本:/usr/local/tomcat/bin/startup.sh
[root@aming1 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.

查看进程;注:如果启动后没有进程,要先shutdown.sh  (/usr/local/romcat/bin/shutdown.sh),再重新startup.sh  。因为tomcat没有restart命令;

[root@aming1 src]# ps aux |grep java
root      1319  1.1  8.4 2756984 85192 pts/0   Sl   11:22   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/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      1367  0.0  0.0 112676   980 pts/0    S+   11:31   0:00 grep --color=auto java
  • 查看tomcat的监听端口,会看到的监听端口为8080端口和8009端口,还有一个8005端口
  • 8080为提供web服务的端口,8005为管理端口,8009端口为第三方服务调用的端口,比如httpd和Tomcat结合时会用到;一般使用的是8080端口
[root@aming1 src]# netstat -lntp |grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      1319/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1319/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      1319/java
  • 访问测试:先关闭防火墙firewalld
[root@aming1 src]# systemctl stop firewalld
[root@aming1 src]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@aming1 src]# curl 127.0.0.1:8080 -I
HTTP/1.1 200 
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 17 Jul 2018 03:35:34 GMT

4、配置Tomcat监听80端口

  • tomcat默认监听8080端口,但是用户输入域名必须要写上端口号;可以把tomcat的监听端口改为80,域名中的80端口默认可以省略
  • 自定义端口:8080改为80,编辑配置文件server.xml(/usr/local/tomcat/conf/server.xml)
[root@aming1 src]# vim /usr/local/tomcat/conf/server.xml
搜索 /8080
这里是控制监听端口的,将这里的 8080 改为 80
    <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
  • 改完配置文件后,重启服务
[root@aming1 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@aming1 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@aming1 src]# netstat -lntp |grep java
tcp6       0      0 :::80                   :::*                    LISTEN      1499/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1499/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      1499/java
  • 但有可能会没看到tomcat监听80端口,因为nginx已经监听了80端口,80端口被占用
  • nginx占用80端口 解决方法: 停掉nginx服务命令/etc/init.d/nginx stop;再来重启tomcat,会看到tomcat监听的是80端口
  • 浏览器访问:http://192.168.222.110/

若是在实际线上的生产环境,就不能直接停掉Nginx,这时可以让nginx代理tomcat了,80 代理 8080

5、配置Tomcat虚拟主机

  • 一个ip下有多个域名,一个域名访问一个网站,所以一个ip可以访问多个网站,通过配置tomcat的虚拟主机实现
  • 打开tomcat虚拟主机配置文件
[root@aming1 src]# vim /usr/local/tomcat/conf/server.xml
搜索 /<Host
 <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/webapps/ROOT目录下,是提供一个war包压缩文件,不像html和php文件

  • unpackWARs 就是是否自动的解压war这个包,也就是war包放到webapps里面,就会自动解压

  • 除了使用war包以外,还可以单独的指定目录,这个目录里面存放着一些jsp文件,也就是提供的不是war包,而就是一个目录,这个目录里面有jsp的程序,如果是这样,还需要docbase去定义

  • webapps的默认路径为/usr/local/tomcat/webapps/,webapps目录下,默认有5个目录(docs examples host-manager manager ROOT)

    扫描二维码关注公众号,回复: 3033060 查看本文章
  • autoDeploy 如果此项设置为true,表示tomcat服务处于运行状态,能够检测appbase下的文件,如果有新的web应用加入进来,会自动发布这个web应用

  • 增加虚拟主机,编辑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>
  • 如果不定义appbase,不想要war存在,可以定义一个目录,目录里放网站的程序,这个相当于把war包解压放到目录里,如果不想要解压这个包,就可以放到appbase里面,这两个二选一,如果同时存在,可以把其中一个写空,防止相互 干扰。有时会出现404问题,就有可能是appbase或者docbase定义错误

总结

  1. docBase,这个参数用来定义网站的文件存放路径,如果不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase可以一样。在这一步操作过程中很多同学遇到过访问404的问题,其实就是docBase没有定义对。
  2. appBase为应用存放目录(实际上是一个相对路径,相对于 /usr/local/tomcat/ 路径),通常是需要把war包直接放到该目录下面,它会自动解压成一个程序目录
  • 为了方便测试,下载一个zrlog(java写的blog站点应用,轻量),zrlog实际就是一个war包

  • 下载到/usr/local/src目录下

[root@aming1 src]# wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
 --2018-07-17 14:01:40--  http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
  • appbase是支持自动解压war包的,将war文件放到appbase里面,appbase默认是在/usr/local/tomcat/webapps/
[root@aming1 src]# ls /usr/local/tomcat/webapps/
docs  examples  host-manager  manager  ROOT
  • 默认在下面有五个目录
  • 将zrlog的war文件拷贝到/usr/local/tomcat/webapps/目录下,然后再来查看/usr/local/tomcat/webapps/,会看到war包自动解压了;前提,tomcat正常启动着,否则是无法自动解压的
[root@aming1 src]# cp zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
[root@aming1 src]# ls /usr/local/tomcat/webapps/
docs      host-manager  ROOT                         zrlog-1.7.1-baaecb9-release.war
examples  manager       zrlog-1.7.1-baaecb9-release
  • 也就是说war包放到appbase定义的路径下会自动解压

  • 解压完之后,就可以正常去访问了,修改zrlog包名称

  • 为了不影响实验结果,先更改自动生成的目录的名字,再移走webapps目录下的war包;因为一旦移走war包,和war同名的目录也会自动删除;如果这个目录下没有和war同名的目录,也会重复的解压

  • 若删除appbase下的war包,那么解压的包也会跟着直接删除
  • 修改war包的名称后,只要下载的war包一直存在,那么就会再次生成一个目录
[root@aming1 src]# cd /usr/local/tomcat/webapps/
[root@aming1 webapps]# mv zrlog-1.7.1-baaecb9-release zrlog
[root@aming1 webapps]# ls
docs      host-manager  ROOT   zrlog-1.7.1-baaecb9-release
examples  manager       zrlog  zrlog-1.7.1-baaecb9-release.war

访问zrlog:192.168.222.110\zrlog

  • 进入了zrlog的安装向导,设置数据库等信息
  • 进入到数据库中,在数据库里面创建一个zrlog的数据库
[root@aming1 mysql]# mysql -uroot -p123456
mysql> create database zrlog;
Query OK, 1 row affected (0.02 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| zrlog              |
+--------------------+
5 rows in set (0.01 sec)
  • 创建完数据库之后,还需要创建一个用户(库名可以不加单引号)
mysql> mysql -uzrlog -h127.0.0.1 -p123456

[root@aming1 mysql]# 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 7
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.01 sec)
  • 填写数据库信息:

  • 设置管理后台用户名和密码,之后就完成安装,即可使用zrlog了

总结

  1. 首先部署环境,tomcat加jdk
  2. 部署完环境后偶,下载zrlog的war包过来
  3. 把war包放到appbase里面,它会自动的帮你解压,解压成一个目录,这个目录就是我们需要项目
  4. 配置一个数据库,对应的用户,数据库,密码
  5. 但这种访问,还需要在后面加一个目录
  • 根据之前server.xml的虚拟主机配置 123.com,我们可以把zrlog目录放到docBase下,就可以直接访问w ww.123.com 域名访问zrlog博客了。
[root@aming1 ~]# mkdir -p /data/wwwroot/123.cn/
[root@aming1 ~]# mv /usr/local/tomcat/webapps/zrlog /data/wwwroot/123.com
[root@aming1 ~]# ls /data/wwwroot/123.com/
admin  assets  error  favicon.ico  include  install  META-INF  WEB-INF
  • 修改配置文件后,重启tomcat服务
[root@aming1 ~]# /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@aming1 ~]# /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.
  • 把www .123.com 加入Windows的hosts文件,通过浏览器访问 www .123.com 就可以访问zrlog博客了

6、Tomcat日志扩展

[root@aming1 webapps]# cd /usr/local/tomcat/logs/ 
[root@aming1 logs]# ls
catalina.2018-07-17.log  host-manager.2018-07-17.log  localhost_access_log.2018-07-17.txt
catalina.out             localhost.2018-07-17.log     manager.2018-07-17.log
  • tomcat日志分为四种
  1. 其中catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。一般关注其中的错误信息
  2. 其中catalina.2018-xx-xx.log和catalina.out内容相同,前者会每天生成一个新的日志。
  3. host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志。
  4. 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,当出现问题时,我们应该第一想到去查看它
[root@aming1 logs]# ls
123.cn_access.2018-07-17.log  host-manager.2018-07-17.log          log                     sim.pid
catalina.2018-07-17.log       localhost.2018-07-17.log             logs                    temp
catalina.out                  localhost_access_log.2018-07-17.txt  manager.2018-07-17.log

猜你喜欢

转载自blog.csdn.net/xou6363/article/details/81082394