tomcat简介

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。

Tomcat和Nginx、Apache(httpd)、lighttpd等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,

Tomcat处理静态HTML的能力不如Nginx/Apache服务器。

目前Tomcat最新版本为9.0。Java容器还有resin、weblogic等。

tomcat安装

系统环境:Centos7

第一步:下载tomcat安装包

tomcat官网:https://tomcat.apache.org/

第二步:安装包上传至linux中

第三步:下载java环境

选择yum安装tomcat需要的jdk,就不用再手动配置环境变量

[root@ken3 ~]# yum install java -y

第四步:解压tomcat安装包

[root@ken3 ~]# unzip apache-tomcat-9.0..zip

第五步:移动并改名

[root@ken3 ~]# mv apache-tomcat-9.0. /usr/local/tomcat

第六步:授予执行权限

[root@ken3 local]# chmod -R a+x  tomcat/

第七步:启动tomcat

[root@ken3 bin]# bash 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
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@ken3 bin]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN *: *:*
LISTEN *: *:*
LISTEN 127.0.0.1: *:*
LISTEN ::: :::*
LISTEN ::: :::*
LISTEN ::: :::*
LISTEN ::: :::*
LISTEN ::: :::*
LISTEN ::: :::*

第八步:浏览器访问

看到如下的界面即为成功

关闭tomcat

[root@ken3 bin]# bash 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
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@ken3 bin]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN *: *:*
LISTEN *: *:*
LISTEN 127.0.0.1: *:*
LISTEN ::: :::*
LISTEN ::: :::*
LISTEN ::: :::*
LISTEN ::: :::*

tomcat目录介绍

[root@ken ~]# cd /usr/local/tomcat/
[root@ken tomcat]# tree -L
.
├── bin #用以启动、关闭Tomcat或者其它功能的脚本(.bat文件和.sh文件)
├── conf #用以配置Tomcat的XML及DTD文件
├── lib #存放web应用能访问的JAR包
├── LICENSE
├── logs #Catalina和其它Web应用程序的日志文件
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp #临时文件
├── webapps #Web应用程序根目录
└── work #用以产生有JSP编译出的Servlet的.java和.class文件
directories, files [root@ken tomcat]# cd webapps/
[root@ken webapps]# ll
total
drwxr-xr-x root root Oct : docs #tomcat帮助文档
drwxr-xr-x root root Oct : examples #web应用实例
drwxr-xr-x root root Oct : host-manager #管理
drwxr-xr-x root root Oct : manager #管理
drwxr-xr-x root root Oct : ROOT #默认网站根目录

tomcat日志

[root@ken3 logs]# cd /usr/local/tomcat/logs/
[root@ken3 logs]# ls
catalina.--.log host-manager.--.log localhost_access_log.--.txt
catalina.out localhost.--.log manager.--.log #tomcat的实时日志catalina.out
[root@ken3 logs]# tail -f catalina.out
-Jan- ::50.314 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
-Jan- ::50.319 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [,] milliseconds
-Jan- ::28.455 INFO [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.
-Jan- ::28.456 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
-Jan- ::28.466 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-nio-8009"]
-Jan- ::28.479 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
-Jan- ::28.538 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
-Jan- ::28.549 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-nio-8009"]
-Jan- ::28.551 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
-Jan- ::28.552 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["ajp-nio-8009"]

tomcat主配置文件server.xml详解

<?xml version='1.0' encoding='utf-8'?>
<!--
<Server>元素代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个<Service>元素.并且它不能做为任何元素的子元素.
port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.
shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置
-->
<Server port="" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<!--service服务组件-->
<Service name="Catalina">
<!--
connector:接收用户请求,类似于httpd的listen配置监听端口.
port指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
address:指定连接器监听的地址,默认为所有地址(即0.0.0.)
protocol连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的, 在httpd反向代理用户请求至tomcat时使用(可见Nginx反向代理时不可用AJP协议)。
minProcessors服务器启动时创建的处理请求的线程数
maxProcessors最大可以创建的处理请求的线程数
enableLookups如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
redirectPort指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
acceptCount指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
connectionTimeout指定超时的时间数(以毫秒为单位)
-->
<Connector port="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort="" />
<Connector port="" protocol="AJP/1.3" redirectPort="" /> <!--engine,核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host
defaultHost指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的
-->
<Engine name="Catalina" defaultHost="localhost">
<!--Realm表示存放用户名,密码及role的数据库-->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<!--
host表示一个虚拟主机
name指定主机名
appBase应用程序基本目录,即存放应用程序的目录.一般为appBase="webapps" ,相对于CATALINA_HOME而言的,也可以写绝对路径。
unpackWARs如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
autoDeploy:在tomcat启动时,是否自动部署。
xmlValidation:是否启动xml的校验功能,一般xmlValidation="false"。
xmlNamespaceAware:检测名称空间,一般xmlNamespaceAware="false"。
-->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!--
Context表示一个web应用程序,通常为WAR文件
docBase应用程序的路径或者是WAR文件存放的路径,也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径。
path表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/****
reloadable这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重启tomcat的情况下改变应用程序
-->
<Context path="" docBase="" debug=""/> <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>
</Engine>
</Service>
</Server>

tomcat的三个端口

Tomcat主配置文件Server.xml文件里面有三个端口

第一个:接收SHUTDOWN指令

    port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.
shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置
-->
<Server port="" shutdown="SHUTDOWN">

第二个:接收HTTP协议

   connector:接收用户请求,类似于httpd的listen配置监听端口.
port指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
 redirectPort指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
<Connector port="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort="" />

第三个:接收AJP协议

  protocol连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的, 在httpd反向代理用户请求至tomcat时使用(可见Nginx反向代理时不可用AJP协议)
<Connector port="" protocol="AJP/1.3" redirectPort="" />

tomcat多实例部署

第一步:复制tomcat目录

[root@ken3 local]# cp -a tomcat tomcat1
[root@ken3 local]# cp -a tomcat tomcat2

第二步:修改配置文件

tomcat1

[root@ken3 local]# vim tomcat1/conf/server.xml
...
<Server port="" shutdown="SHUTDOWN">
...
<Connector port="" protocol="HTTP/1.1"
...

tomcat2

[root@ken3 local]# vim tomcat1/conf/server.xml
...
<Server port="" shutdown="SHUTDOWN">
...
<Connector port="" protocol="HTTP/1.1"
...
tomcat2

第三步:启动多实例

[root@ken3 local]# tomcat2/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat2
Using CATALINA_HOME: /usr/local/tomcat2
Using CATALINA_TMPDIR: /usr/local/tomcat2/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat2/bin/bootstrap.jar:/usr/local/tomcat2/bin/tomcat-juli.jar
Tomcat started.
[root@ken3 local]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN *: *:*
LISTEN *: *:*
LISTEN 127.0.0.1: *:*
LISTEN ::ffff:127.0.0.1: :::*
LISTEN ::: :::*
LISTEN ::ffff:127.0.0.1: :::*
LISTEN ::ffff:127.0.0.1: :::*
LISTEN ::: :::*
LISTEN ::: :::*
LISTEN ::: :::*
LISTEN ::: :::*
LISTEN ::: :::*
LISTEN ::: :::*
LISTEN ::: :::*

第四步:浏览器访问测试

tomat1

tomcat2

tomcat搭建集群

第一步:修改配置文件

[root@ken ~]# cd /usr/local/tomcat1/webapps/
[root@ken webapps]# ls
docs examples host-manager manager ROOT
[root@ken webapps]# mv ROOT/* /ken/1^C
[root@ken webapps]# mkdir /ken/2
[root@ken webapps]# mv ROOT/* /ken/2
[root@ken webapps]# echo "111" > ROOT/index.html

另外一台写上111以便区分

第二步:安装nginx

[root@ken ~]# yum install nginx -y

第三步:配置nginx

  [root@ken ~]# vim /etc/nginx/nginx.conf
...
upstream ken {
server 192.168.4.190:; #定义转发地址
server 192.168.4.190:;
} server {
listen default_server;
listen [::]: default_server;
server_name _;
root /usr/share/nginx/html; # Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf; location / {
proxy_pass http://ken; #转发至代理
}
...

第四步:检查nginx配置并重启

[root@ken ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@ken ~]# systemctl restart nginx

第五步:测试

浏览器输出本机IP地址即可

进行刷新

tomcat上线jpress博客系统

jpress类似于wordpress的一个开源博客系统

第一步:下载jpress

https://gitee.com/fuhai/jpress/blob/alpha/wars/jpress-web-newest.war

第二步:上传jpress包至ROOT下

[root@ken ROOT]# pwd
/usr/local/tomcat/webapps/ROOT
[root@ken ROOT]# rz [root@ken ROOT]# ls
fuhai-jpress-v2.-rc..zip

第三步:解压

使用unzip进行解压

[root@ken ROOT]# unzip fuhai-jpress-alpha.zip
[root@ken ROOT]# ls
fuhai-jpress-alpha.zip jpress

第四步:复制war包至ROOT下

[root@ken wars]# pwd
/usr/local/tomcat/webapps/ROOT/jpress/wars
[root@ken wars]# cp jpress-web-newest.war /usr/local/tomcat/webapps/ROOT/

第五步:解压war包

[root@ken ROOT]# unzip jpress-web-newest.war
[root@ken ROOT]# ls
fuhai-jpress-alpha.zip jpress jpress-web-newest.war META-INF robots.txt static templates WEB-INF

第六步:浏览器进行访问

浏览器输入IP,回车之后出现如下的界面

http://服务器IP:8080/jpress

第七步:安装

点击下一步

需要创建数据库及用户

第八步:数据库创建数据库及用户

MariaDB [(none)]> create database ken;
MariaDB [(none)]> grant all on *.* to ken@'localhost' identified by '';

第九步:继续安装

填好数据库信息后,点击下一步

根据提示输入网站名称及管理员账号和密码,点击完成

到这一步之后需要重启tomcat

第十步:重启tomcat

[root@ken 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
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@ken 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
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

第十一步:再次访问tomcat

第十二步:进入管理员界面

输入如下的地址,搜索admin,回车之后出现如下的界面

http://服务器IP:8080/admin/

输入之前设置的管理员账户及密码,点击登录

出现如下的界面即成功!

第十三步:撰写文章

退出当前登录用户

直接输入IP加端口再次访问即可看到我们刚才写的文章

tomcat使用详解(week4_day2)--技术流ken的更多相关文章

  1. vim编辑器详解(week1_day3)--技术流ken

    vi编辑器 作用:编辑文本文件中的内容的工具 命令历史 末行模式中,以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 v ...

  2. Shell编程(week4_day2)--技术流ken

    本节内容 1. shell变量简介 2. 定义变量 3. 使用变量 4. 修改变量的值 5. 单引号和双引号的区别 6. 将命令的结果赋值给变量 7. 删除变量 8. 变量类型 9. 特殊变量列表 1 ...

  3. MySQL系列详解八:MySQL多线程复制演示-技术流ken

    前言 Mysql 采用多线程进行复制是从 Mysql 5.6 开始支持的内容,但是 5.6 版本下有缺陷,虽然支持多线程,但是每个数据库只能一个线程,也就是说如果我们只有一个数据库,则主从复制时也只有 ...

  4. Ansible基础认识及安装使用详解(week5_day1_part1)--技术流ken

    Ansible简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量 ...

  5. 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3_day5_part2)-技术流ken

    前言 在上一篇博文<cobbler批量安装系统使用详解-技术流ken>中已经详细讲解了cobbler的使用以及安装,本篇博文将会使用单台cobbler实现自动化批量安装不同版本的操作系统. ...

  6. 学会这个删库再也不用跑路了~ --技术流ken

    前言 相信每一个学IT的人或多或少都听说过从删库到跑路这个梗~下图也是在各种交流群屡禁不止,新人听着也是瑟瑟发抖. 人们茶余饭后,街头巷角难免要问... 下面技术流ken就教给各位新手们一招删库再也不 ...

  7. 五分钟彻底学会iptables防火墙--技术流ken

    iptables简介 IPTABLES 是与最新的 3.5 版本 Linux内核集成的 IP 信息包过滤系统.如果 Linux 系统连接到因特网或 LAN.服务器或连接 LAN 和因特网的代理服务器, ...

  8. Docker之使用Dockerfile创建定制化镜像(四)--技术流ken

    前言 在之前的博客<Docker端口映射及创建镜像演示(二)--技术流ken>,演示了如何使用一个现有容器创建一个镜像,以及镜像在阿里云的上传和下载. 但是这样的镜像有很大的局限性,不能根 ...

  9. Docker端口映射及创建镜像演示(二)--技术流ken

    前言 在上一篇博客<Docker介绍及常用操作演示--技术流ken>中,已经详细介绍了docker相关内容以及有关镜像和容器的使用命令演示. 现在我们已经可以自己下载镜像,以及创建容器了. ...

随机推荐

  1. textarea--去掉空格的办法

    我在初次用到textarea多行文本框时,遇到的问题是:默认出现了两行空格,如图: 代码是(错误的写法): 最后才发现,原来是: textarea标签是需要写在同一行,不能换行,正确的写法:

  2. H5 _浏览器通知功能使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Reveal : Xcode辅助界面调试工具

    Reveal简介: Reveal是一款iOS界面调试工具,辅助Xcode进行界面调试,使用它可以在iOS开发的时候动态的查看和修改应用程序的界面. 软件下载 首先去官网下载Reveal,下载地址:ht ...

  4. CentOS 编译安装 Redis (实测 笔记 Centos 7.3 + redis 3.2.8)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  5. javascript 编程风格 部分精要

    1 换行保持两个缩进(通常是一行太长) 运算符前后加一个空格,包括赋值运算符和逻辑运算符 括号运算符,左括号之后,右括号之前不应该有空格 段代码无关,添加空行 命名驼峰式,一般首字母小写,其他单词首字 ...

  6. 使用poi读取Excel文件数据

    package com.haiyisoft.iecp.util; import java.io.File;import java.io.FileInputStream;import java.io.F ...

  7. 255.Spring Boot+Spring Security:使用md5加密

    说明 (1)JDK版本:1.8 (2)Spring Boot 2.0.6 (3)Spring Security 5.0.9 (4)Spring Data JPA 2.0.11.RELEASE (5)h ...

  8. 【从零开始搭建自己的.NET Core Api框架】(六)泛型仓储的作用

    系列目录 一.  创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...

  9. [Swift]LeetCode225. 用队列实现栈 | Implement Stack using Queues

    Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. po ...

  10. Redis 设计与实现 (六)--发布订阅

    发布订阅 相关命令:publish(发布)  subscribe(订阅)  psubscribe(支持通配符匹配) 发布者--频道--订阅者(发布和订阅都是客户端频道是服务端) 1.publish-  ...