Tomcat基础架构——jdk、java、zrlog

Tomcat基础架构

1、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公司发布的jdk,除此以外,其实IBM公司也有发布JDK,CentOS上也能够用yum安装openjdk。

咱们已经学过了LAMP和LNMP架构;针对的开发语言是PHP;能够说PHP是一门开发Web程序很是流行的语言;早期的比较流行的是asp,是在windows平台上运行的一种编程语言;可是由于安全性不高;因此愈来愈多作网站的人用Php去开发网站,相对来讲也是比较安全的。php

除了PHP外,还有一门语言叫java;java是一门很是庞大的开发语言;不只仅是能够开发开网站;也能够开发大型的软件、工具、甚至是游戏均可以;tomcat其实是一个中间件,用来运行Java语言写的网站;那咱们Php写的代码,要用php去解析;java就要用tomcat加上JDK一块儿去解析。css

2、安装jdk

先在windows环境下,下载好jdk,用xftp传输到linux虚拟机root下java

[root@ying01 ~]# ls
10   11       221.txt  3  555  8  anaconda-ks.cfg  ccc  grep         ib_logfile1                 NBA  sed1    test      wenben  ysb
100  12zhang  222      5  6    9  awk              ch   ib_logfile0  jdk-8u171-linux-x64.tar.gz  sed  shiyan  test.txt  xargs
[root@ying01 ~]# mv jdk-8u171-linux-x64.tar.gz /usr/local/src/
[root@ying01 ~]# cd !$
cd /usr/local/src/
[root@ying01 src]# tar zxf jdk-8u171-linux-x64.tar.gz    //解压包
[root@ying01 src]# du -sh jdk1.8.0_171/              
374M	jdk1.8.0_171/
[root@ying01 src]# mv jdk1.8.0_171 /usr/local/jdk1.8    //移动并更名

在/etc/profile增长如下代码mysql

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

加载服务后,查看下载版本是否正确;linux

[root@ying01 src]# source /etc/profile             //加载服务
[root@ying01 src]# java -version                   //查看java版本
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)

3、安装Tomcat

其实Tomcat只是一个中间件,真正起做用的就是我们已经安装的jdk。没有Tomcat还不能够,他的做用就是监听8080;8005;8009端口。假如说,访问站点,须要一个webserver,而Tomcat就能够理解为webserver!nginx

在官网找到二进制包,下载;web

[root@ying01 src]# wget http://www-eu.apache.org/dist/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz

解压、并把解压包移到 /usr/local/tomcat下;sql

[root@ying01 src]# tar -zxf apache-tomcat-8.5.32.tar.gz
[root@ying01 src]# mv apache-tomcat-8.5.32 /usr/local/tomcat

开启服务与关闭服务数据库

[root@ying01 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@ying01 src]# ps aux |grep java      //java已经启动
root      7794  9.9  5.1 3000080 96832 pts/0   Sl   19:58   0:05 /usr/local/jdk1.8/bin/java -java.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      7852  0.0  0.0 112720   984 pts/0    S+   19:58   0:00 grep --color=auto java
[root@ying01 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@ying01 src]# !ps                                      //没有java进程
ps aux |grep java 
root      7897  0.0  0.0 112720   984 pts/0    S+   20:00   0:00 grep --color=auto java

查看java有关端口apache

[root@ying01 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@ying01 src]# netstat -lntp |grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      8986/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      8986/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      8986/java

三个端口释义:

  • 8080为提供web服务的端口;
  • 8005为管理端口;//显示调用会慢
  • 8009端口为第三方服务调用的端口,好比httpd和Tomcat结合时会用到

在关闭防火墙后,用浏览器访问其默认主页:192.168.112.136:8080

[root@ying01 src]# systemctl stop firewalld
[root@ying01 src]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

4、配置Tomcat监听80端口

要给Tomcat监听80端口,那先看戏80监听端口,是否占用;

[root@ying01 src]# netstat -lntp |grep 80               //被nginx占用
tcp        0      0 0.0.0.0:37580           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1072/nginx: master  
tcp6       0      0 :::8080                 :::*                    LISTEN      8986/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      8986/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      8986/java           
[root@ying01 src]# /etc/init.d/nginx stop               //关闭nginx服务  
Stopping nginx (via systemctl):                            [  肯定  ]
[root@ying01 src]# netstat -lntp |grep 80            
tcp        0      0 0.0.0.0:37580           0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::8080                 :::*                    LISTEN      8986/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      8986/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      8986/java

在确认80端口处于空闲状态,在tomcat主配置文件,把8080端口改成80端口;

[root@ying01 src]# vim /usr/local/tomcat/conf/server.xml

从新加载tomcat主配置文件,并查看80端口状况;

[root@ying01 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@ying01 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@ying01 src]# netstat -lntp |grep 80        //java占用80端口
tcp        0      0 0.0.0.0:37580           0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::80                   :::*                    LISTEN      9350/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      9350/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      9350/java

此时再在浏览器测试8080,已经打不开网页,而用80就能够;

5、配置Tomcat的虚拟主机

5.1 虚拟主机配置文件

在tomcat的配置文件中,增长一个虚拟主机,代码以下:

[root@ying01 ~]# 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/www.123.cn/" debug="0" reloadable="true" crossContext="true"/>
 </Host>

以上代码关键词释义:

  • name 定义域名;
  • appBase 定义应用的目录;
  • unpackWARs=”true” 是否自动解压;(也是就是说,当咱们往站点目录里面直接上传一个war的包,它会自动解压)
  • docBase,这个参数用来定义网站的文件存放路径,若是不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase能够同样。在这一步操做过程当中,可能会遇到过访问404的问题,其实就是docBase没有定义对。

5.2 创建java站点

  • 试验准备

下载站点程序zrlog;

[root@ying01 src]# wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

把此war包,复制一份到/usr/local/tomcat/webapps/下,在此目录下会自动解压;

[root@ying01 src]# cp zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
[root@ying01 src]# ls /usr/local/tomcat/webapps/         //多了一个zrlog的目录
docs  examples  host-manager  manager  ROOT  zrlog-1.7.1-baaecb9-release  zrlog-1.7.1-baaecb9-release.war

如今咱们作实验,把zrlog-1.7.1-baaecb9-release解压包,更名为zrlog;

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

此时在浏览器中输入:http://192.168.112.136/zrlog

  • 建立网站数据库

进入mysql,建立一个数据库,并建立用户

[root@ying01 webapps]# mysql -uroot -pyinglinux
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 4
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;             //建立zrlog数据库
Query OK, 1 row affected (0.07 sec)

mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 indentified by 'yinglinux1';  //指定密码
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'indentified by 'yinglinux1'' at line 1
mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by 'yinglinux1';
Query OK, 0 rows affected (0.19 sec)

mysql> quit
Bye

使用新用户,及密码登陆

[root@ying01 webapps]# mysql uzrlog -h127.0.0.1 -pyinglinux1
Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@ying01 webapps]# mysql -uzrlog -h127.0.0.1 -pyinglinux1
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 6
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;     //显示当前库,里面有zrlog数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
| zrlog              |
+--------------------+
3 rows in set (0.00 sec)

mysql> quit
  • 在浏览器测试

配置好数据库后,如今回到刚才的网页上,按下面填写;

点击下一步,按下图填写;

点击下一步,按下图操做;

此时,博客配置好,里面有一篇文章;

在上个页面,点击管理,进入后台操做;

在后台写一篇文章,自定义,它随时保存;

点击保存,刷新页面,这时主页出现新建的文章;

  • 测试另外一个虚拟主机,域名为www.123.cn

在windows下,host文件下,配置www.123.cn;在cmd下ping此域名;

Microsoft Windows [版本 10.0.17134.165]
(c) 2018 Microsoft Corporation。保留全部权利。

C:\Users\zqsgq>ping www.123.cn

正在 Ping www.abc.com [192.168.112.136] 具备 32 字节的数据:
来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64

192.168.112.136 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms

C:\Users\zqsgq>

按虚拟主机配置文件,建立相应的网站目录

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

把zrlog目录下全部文件,移到新建立的网站目录123.cn

[root@ying01 webapps]# mv zrlog/* /data/wwwroot/123.cn/

从新加载tomcat配置文件

[root@ying01 webapps]# /usr/local/tomcat/bin/shutdown.sh

[root@ying01 webapps]# /usr/local/tomcat/bin/startup.sh

[root@ying01 webapps]# netstat -lntp |grep 80               
tcp        0      0 0.0.0.0:37580           0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::80                   :::*                    LISTEN      10068/java          
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      10068/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      10068/java          
[root@ying01 webapps]#

回到浏览器下,用域名www.123.cn访问,此时获得以下页面;

5.3 ROOT目录

网站的图标和一些重要信息都在/usr/local/tomcat/webapps/ROOT下

[root@ying01 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@ying01 webapps]#

好比ROOT下tomcat-power.gif 动图,就是主页上一个图;

再好比这个按钮:bg-button.png

6、Tomcat日志

Tomcat日志目录位置/usr/local/tomcat/logs

[root@ying01 ~]# cd /usr/local/tomcat/
[root@ying01 tomcat]# ls logs
catalina.2018-07-16.log      localhost.2018-07-17.log
catalina.2018-07-17.log      localhost_access_log.2018-07-16.txt
catalina.out                 localhost_access_log.2018-07-17.txt
host-manager.2018-07-16.log  manager.2018-07-16.log
host-manager.2018-07-17.log  manager.2018-07-17.log
localhost.2018-07-16.log

日志目录下,各类日志的做用:

  • catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。
  • catalina.2017-xx-xx.log和catalina.out内容相同,前者会天天生成一个新的日志。
  • host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志。
  • localhost和localhost_access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。

访问日志默认不会生成,须要在server.xml中配置;

[root@ying01 tomcat]# vim /usr/local/tomcat/conf/server.xml

此为虚拟主机下的,访问日志配置:
   <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  //关键字logs
          prefix="localhost_access_log" suffix=".txt"         //定义的前缀名,后缀名
          pattern="%h %l %u %t &quot;%r&quot; %s %b" />       //定义日志格式

新增长的虚拟主机默认并不会生成相似默认虚拟主机的那个localhost.日期.log日志; 错误日志会统一记录到catalina.out中。

关于Tomcat日志,最须要关注catalina.out,当出现问题时,咱们应该第一想到去查看它。

相关文章
相关标签/搜索