tomcat总结笔记

文章目录

Tomcat

1、什么是tomcat?

Tomcat是用于发布和解析JSP(Java Server Page)网页(基于JAVA语言开发的代码),将Tomcat称为JAVA容器,Tomcat软件本身基于JAVA语言开发。

端口号:8080

主配置文件:/usr/local/tomcat/conf/server.xml

三个端口:

​ 8080 -- 默认tomcat访问端口

​ 8005 -- 用于关闭tomcat的(SHUTDOWN 必须要大写,小写不管用)

8009 -- AJP端口 用于Apache和Tomcat内部通讯端口

2、rpm安装jre环境

# rpm -ivh jdk-8u301-linux-x64.rpm
在/etc/profile下写入
export JAVA_HOME=/usr/java/jdk1.8.0_301-amd64    #这里安装路径自动定位在这里
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/fre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HMOE/jre/bin:$PATH
[root@hd2 ~]# source /etc/profile   
#查看java版本
[root@hd2 ~]# java -version  

3、源码安装jdk环境

1、安装JDK---源码安装

1、系统环境说明
# cat /etc/redhat-release   系统信息 
# uname -a 查看系统信息
# getenforce 
# systemctl status firewalld.service
2 、安装 JDK
# mkdir /usr/local/java 安装工作目录
# tar xzf jdk-8u60-linux-x64.tar.gz 
# mv jdk1.8.0_192 /usr/local/java/jdk	
# 设置环境变量
# vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk   #指定java安装目录
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH    #用于指定java系统查找命令的路径
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar  #类的路径,在编译运行java程序时,如果有调用到其他类的时候,在classpath中寻找需要的类。
# source /etc/profile  #让环境变量生效
2、测试jdk是否安装成功
# java -version

4、安装tomcat --源码安装

# tar xvf apache-tomcat-9.0.11.tar.gz
# mkdir /usr/local/tomcat
#  mv apache-tomcat-9.0.11 /usr/local/tomcat
# 设置环境变量
# echo 'export TOMCAT_HOME=/usr/local/tomcat'>>/etc/profile
# source /etc/profile
# chown -R root.root /usr/java/jdk1.8.0_301-amd64/ /usr/local/tomcat/  # 注意授权,统一权限
2、检查tomcat是否安装成功
# /usr/local/tomcat/apache-tomcat-9.0.11/bin/startup.sh
# netstat -naput | grep tomcat(8080)

5、相关目录文件

*├── bin              #存放tomcat管理脚本 (操作命令)
*├── conf             # tomcat 配置文件
├── lib              # web应用调用的jar包存放路径
├── LICENSE
*├── logs             # tomcat 日志存放目录,catalina.out 为主要输出日志
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp             # 存放临时文件
*├── webapps          # web程序存放目录
└── work             # 存放编译产生的.java 与 .class文件
webapps
├── docs            # tomcat 帮助文档
├── examples       # web应用实例
├── host-manager  # 主机管理
├── manager         # 管理
└── ROOT             # 默认站点根目录
Tomcat 配置文件目录介绍(conf)
├── Catalina
├── catalina.policy     配置tomcat对文件系统中目录或文件的读、写执行等权限,及对一些内存,session等的管理权限
├── catalina.properties   配置tomcat的classpath等
├── context.xml           tomcat的默认context容器
├── logging.properties      配置tomcat的日志输出方式
├── logs
*├── server.xml           # tomcat 主配置文件
├── server.xml.bak
├── server.xml.bak2
*├── tomcat-users.xml     # tomcat 管理用户配置文件
├── tomcat-users.xsd
└── web.xml              tomcat的应用程序的部署描述符文件
tomcat的相关管理命令在$prefix/bin目录下

/usr/local/tomcat/bin

catalina.sh 主命令脚本
configtest.sh 检测配置文件
shutdown.sh 关闭
startup.sh 启动
version.sh 查看版本
netstat -naput | grep 8080  查看tomcat

实战1、:配置nginx动静分离

192.168.1.12 -- Tomcat1 & Tomcat2
192.168.1.11 -- Nginx
多实例
[root@hd2 ~]# mv /usr/local/tomcat /usr/local/tomcat1
[root@hd2 ~]# cp -a /usr/local/tomcat1/ /usr/local/tomcat2
主配置文件
[root@hd2 ~]# vim /usr/local/tomcat2/apache-tomcat-9.0.11/conf/server.xml

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
改为
    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

    <Server port="8005" shutdown="SHUTDOWN">
改为
    <Server port="8006" shutdown="SHUTDOWN">
开启两个tomcat
[root@hd2 ~]# /usr/local/tomcat1/apache-tomcat-9.0.11/bin/startup.sh
Tomcat started.
[root@hd2 ~]#  /usr/local/tomcat2/apache-tomcat-9.0.11/bin/startup.sh
Tomcat started.
查看
[root@hd2 ~]# ps -ef | grep tomcat
tomcat默认访问目录
/usr/local/tomcat2/webapps下 ROOT目录
建立index.jsp测试代码
<html>
<body>
<h1>JSP Test Page tomcat2 </h1>
<%=new java.util.Date()%>
</body>
</html>

安装Nginx 并创建虚拟主机
[root@hd1~]# wget http://www.nginx.org/download/nginx-1.14.2.tar.gz
[root@hd1 ~]# yum -y install openssl-devel
[root@hd1 ~]# useradd www
[root@hd1 ~]# tar -xvf nginx-1.14.2.tar.gz
[root@hd1 ~]# cd nginx-1.14.2
[root@hd1 ~]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
[root@Hd2-LB nginx-1.14.2]#make && make install 
修改配置文件,创建虚拟主机
[root@hd1 ~]#  cd /usr/local/nginx/conf/
[root@hd1 ~]# mv nginx.conf nginx.conf.bak
[root@hd1 ~]# egrep -v "#|^$" nginx.conf.bak > nginx.conf
[root@hd1 ~]# vim nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
keepalive_timeout  65;
#这是我们自己添加的一个子配置文件路径
    include /usr/local/domain/*;
}
[root@hd1 ~]#  mkdir /usr/local/domain
[root@hd1 ~]# vim /usr/local/domain/bbs.a.conf  
upstream tomcat_web {
 server 192.168.1.12:8080 weight=1 max_fails=2 fail_timeout=15;
 server 192.168.1.12:8081 weight=1 max_fails=2 fail_timeout=15;

}
server {
 listen 80;
 server_name bbs.a.com;
 location / {
  root html;
  index index.html index.htm;
  proxy_set_header Host $host;
  proxy_pass http://tomcat_web;
 }
 location ~* .*\.(html|htm|js|png|jpg|gif|css|jpeg|txt|gz|bz2|zip|bmp|doc|xls|docx)$ {
 root /var/www/html;
 expires 30d;
 }
}
#location ~* 表示不区分大小写匹配  .*\.(html|htm)$ 正则表达式表示以.html或htm结尾的所有网页
启动nginx
[root@hd1 ~]# /usr/local/nginx/sbin/nginx
[root@hd1 ~]# mkdir /var/www/html -p
[root@hd1 ~]# cd /var/www/html
[root@hd1 ~]# echo "wo shi nginx web" >index.html
重启tomcat
[root@hd2 ~]#  /usr/local/tomcat1/bin/shutdown.sh
[root@hd2 ~]# /usr/local/tomcat1/bin/startup.sh
[root@hd2 ~]#  /usr/local/tomcat2/bin/shutdown.sh
[root@hd2 ~]#  /usr/local/tomcat2/bin/startup.sh

测试一下负载均衡集群
这里的ip是nginx的ip
[root@hd1 ~]#  curl 192.168.8.139/index.jsp
<html>
<body>
<h1>JSP Test Page tomcat1 </h1>
Thu Jul 29 21:47:01 CST 2021
</body>
</html>
[root@hd1 ~]#  curl 192.168.8.139/index.html
wo shi nginx web

实战2、配置基于tomcat的虚拟主机配置

Tomcat配置文件,一对Host标签就是一个虚拟主机,即相当于一个nginx中的server模块
基于tomcat1的多虚拟主机配置  两个网站分别是:www.a.com 和www.b.com
#autoDeploy=true 表示自动部署(jvm)
#unpackWARs=true  表示自动解压war包
#&quot表示双引号

[root@hd2 ~]# vim /usr/local/tomcat1/conf/server.xml
     <Host name="www.a.com"  appBase="webapps/a"
            unpackWARs="true" autoDeploy="true">
     <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 name="www.b.com"  appBase="webapps/b"
         unpackWARs="true" autoDeploy="true">
     <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>   
#日志格式对比(重要)
含义   	tomcat	                nginx
客户端ip地址	%h	                $remote_addr
时间	      %t	              $time_local
请求	      %r	              $request
状态码	     %S  	              $status
资源大小	%b	                 $body_bytes_sent
跳转	 %{Referer}i	          $http_referer
客户端	%{User-Agent}i	          $http_user_agent
真实客户端ip	%{X-Forwarded-For}	$http_x_forwarded_for

配置两个虚拟站点的环境
[root@hd2 ]# cd /usr/local/tomcat1/webapps/
[root@hd2 webapps]# mkdir a/ROOT b/ROOT -p
[root@Hd2 webapps]# echo "wo shi t a" >a/ROOT/index.html
[root@Hd2 webapps]# echo "wo shi t b" >b/ROOT/index.html
[root@Hd2 webapps]# /usr/local/tomcat1/bin/shutdown.sh 
[root@Hd2 webapps]# /usr/local/tomcat1/bin/startup.sh
配置windows主机的hosts文件设置内容如下:
/windows/system32/drivers/etc/hosts
192.168.0.12 www.a.com www.b.com
测试
curl 192.168.8.138:8080
curl www.a.com:8080

实战3、配置jforum论坛部署

#将war包上传到/root目录之下
[root@hd2 ROOT]# pwd
/usr/local/tomcat1/webapps/a/ROOT 
[root@hd2 ROOT]# mv /root/jforum-2.7.0.war  . 
[root@hd2 ROOT]#  jar xf jforum-2.6.2.war

重启tomcat
[root@hd2 ~]#  /usr/local/tomcat1/bin/shutdown.sh
[root@hd2 ~]#/usr/local/tomcat1/bin/startup.sh

配置tomcat服务启动脚本

tomcat提供了方便的启动命令脚本,但是却没有提供服务器中经常管理使用的service脚本。可以自行编写服务管理脚
本
1.编辑启动脚本,生成tomcat.pid
# cd /usr/local/tomcat1/apache-tomcat-9.0.11/bin/
# vim catalina.sh
137gg  跳转到137行
在PRGDIR下面添加
CATALINA_PID=/var/run/tomcat.pid
2.

基于域名访问的host配置

1、建立项目目录并写入测试文件
# cd /usr/local/tomcat/webapps/
# mkdir devops/ROOT -p
# cd /devops/ROOT
# touch index.html
# echo "this is tomcat.devops.com"
2、编辑/usr/local/tomcat/conf/server.xml
# vim /usr/local/tomcat/conf/server.xml
添加
<Host name="localhost"  appBase="webapps/devops">
</Host>
name可以写成域名
<Host name="tomcat.devops.com"  appBase="webapps/devops">
</Host>
3、检测配置并重启
# service tomcat configtest
# service tomcat restart
4、访问主机解析域名
# vim /etc/hosts
192.168.8.138 tomcat.devops.com
5、测试

服务器状态查看

1.去掉访问ip限制

vim /usr/local/tomcat1/apache-tomcat-9.0.11/webapps/manager/META-INF/context.xml

注释掉

2、创建用户和密码开启访问权限

vim /usr/local/tomcat/conf/tomcat-users.xml

加入

二进制升级

TERM, INT(快速退出,当前的请求不执行完成就退出) -s stop
QUIT (优雅退出,执行完当前的请求后退出)  -s quit
HUP (重新加载配置文件,用新的配置文件启动新worker进程,并优雅的关闭旧的worker进程) -s reload
USR1 (重新打开日志文件)  -s reopen
USR2 (平滑的升级nginx二进制文件  拉起一个新的主进程  旧主进程不停止)
WINCH (优雅的关闭worker进程)

1、nginx的升级
# ps -ef | grep 80(nginx)
# kill -USR2 nginx主进程号   平滑的启动一个进程 升级操作
# kill -WINCH nginx子进程号 优雅的关闭子进程
# kill -QUIT nginx主进程    优雅的关闭主进程
#修改路由
echo "1" >/proc/sys/net/ipv4/ip forward

①编译安装新版本
# shell > tar xvf nginx-1.16.0.tar.gz
# shell > cd nginx-1.16.0
# shell > ./configure  --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module  --with-http_stub_status_module --with-http_realip_module
# shell > make && make install
②新旧版本同时运行
# shell > kill -USR2 主进程号
③停止掉旧进程
# shell > kill -WINCH 旧的工作进程号
# shell > kill -QUIT 旧的主进程号
在nginx中,默认提供了平滑升级的操作,只需要执行以下命令
#注意先configure  在nginx源码包执行
# shell > make install && make upgrade
相关推荐
P.H. Infinity19 分钟前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天23 分钟前
java的threadlocal为何内存泄漏
java
caridle34 分钟前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
^velpro^39 分钟前
数据库连接池的创建
java·开发语言·数据库
苹果醋343 分钟前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
秋の花1 小时前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端1 小时前
第六章 7.0 LinkList
java·开发语言·网络
Wx-bishekaifayuan1 小时前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
全栈开发圈1 小时前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫