Tomcat基础与Nginx的动静分离

一、TOMCAT基础功能

(一)自动解压war包

在配置文件中讲到,当接受到请求后,会匹配符合要求的Host,在配置文件中的Host只有一个,且规定了自动解压war包

自动解压war包

.war:WebApp打包,类zip格式文件,通常包括一个应用的所有资源,比如jsp,html,配置文件等

.jar:EJB类文件的打包压缩类zip格式文件,,包括很多的class文件, 网景公司发明

.rar:资源适配器类打包文件,目前已不常用

.ear:企业级WebApp打包,目前已不常用

传统应用开发测试后,通常打包为war格式,这种文件部署到Tomcat的webapps目录下,并默认会自动

建立两个文件,使用jar命令,压缩文件,并且以.war结尾

移动到该目录下后,会自动解压,形成目录文件

这个主站点目录比较特殊,在访问的URL没有任何上下文的情况下,默认以webapps/ROOT目录文主站点,如果有其它目录则以具体URL为主

(二)状态页

tomcat状态页是Apache Tomcat服务器提供的一个管理界面,通过这个页面可以查看和监控Tomcat运行时的状态信息。

状态页的相关文件也存放在webapps目录下

注释:tree需要安装: yum -y install tree

可以使用浏览器来访问查看

也可以直接输入/manager/status进行查看。但是会被拒绝访问

1.登录状态页

需要去修改配置文件,打开conf目录下tomcat-users.xml文件,并跳转到最后

#这些为注释的信息。它定义了Tomcat服务器中的角色(roles)和用户(users),以及这些

#用户所归属的角色。(角色的含义相当于用户组)

<role rolename="tomcat"/>

#定义了一个名为 "tomcat" 的角色,这个角色可以对应于Tomcat服务器预定义的一些权限,比如

#访问管理界面或部署应用等。

<role rolename="role1"/>

#定义了一个名为 "role1" 的自定义角色,可以根据实际需求赋予特定权限。

<user username="tomcat" password="<must-be-changed>" roles="tomcat"/>

#定义了一个用户名为 "tomcat" 的用户,并设置了初始密码(这里需要在实际使用时替换为强密码)

#该用户归属于 "tomcat" 角色,因此拥有与该角色关联的所有权限。

<user username="both" password="<must-be-changed>" roles="tomcat,role1"/>

#定义了一个用户名为 "both" 的用户,同样设置了初始密码。这个用户同时属于 "tomcat"

#和 "role1" 两个角色,因此拥有这两个角色合并后的所有权限。

<user username="role1" password="<must-be-changed>" roles="role1"/>

#定义了一个仅属于 "role1" 角色的用户。

了解这些信息后,将从拒绝界面复制的信息粘贴到配置文件的末尾,而后重启服务,使配置文件生效

这个时候,就可以使用虚拟机本机的浏览器去访问回环地址登录状态页

登录之后,就可以看到java虚拟机(JVM)的一些状态信息

PS Eden Space

'这是年轻代(Young Generation)的一部分,主要用于存储新创建的对象。当前已使用的内

存大小为210.02 MB,占其总容量(225.50 MB)的约93%。'

PS Old Gen

'这是老年代(Old Generation),存放长期存活或晋升过来的对象。当前已使用的内存大小

为25.57 MB,占其总容量(629.50 MB)的4%。'

PS Survivor Space

'同样是年轻代的一部分,用于保存在年轻代中经历过一次GC但尚未被回收的对象。当前已使用的

内存大小为7.54 MB,占其总容量(45.00 MB)的16%。'

Code Cache

'非堆内存区域,用于存储JIT编译后的机器码。当前已使用的内存大小为12.97 MB,占其最大可

扩展容量(240.00 MB)的5%。'

Compressed Class Space

'另一个非堆内存区域,当类空间过大时,经过压缩的类会被存放到此区域以节省内存。当前已使

用的内存大小为6.58 MB,占其最大容量(1024.00 MB)的0%,这里的"0%"可能是显示错误,因

为已经使用了6.58 MB的空间。'

Metaspace

'从Java 8开始取代了永久代(PermGen),用于存储类元数据信息。这里显示的最大容量为"-0.00 MB",

这意味着Metaspace的大小可以动态调整,不受固定上限限制;当前已使用的内存大小为54.99 MB'

2.远程登录

修改完上面的配置文件后,只能使用本机去登录回环地址才可以访问,这也是在配置文件里就已经规定的,想要使用IP地址登录,还需要去修改manager目录下的META-INF/context.xml文件

在配置文件中,添加允许通过的字段,修改完毕后重新启动服务

这个时候再去使用该网段的地址去登录就可以了

由于状态页比较重要,在设置登录权限时需要注意哪些地址可以访问,一般不建议开启远程登录

(三)服务管理界面

Apache Tomcat的Manager App界面是一个基于Web的管理工具,用于管理和监控部署在Tomcat服务器上的Web应用程序。访问路径为/manager/html

通过Manager App,管理员可以执行以下操作:

1.部署应用:上传WAR文件到Tomcat服务器,并部署为新的Web应用程序。

2.重新加载应用:无需停止整个服务器或卸载再部署,即可更新已部署应用的内容。

3.启动和停止应用:控制单个Web应用的启动与停止状态。

4.删除应用:从Tomcat服务器中移除已经部署的Web应用程序。

5.查看应用列表和状态:列出所有部署在Tomcat服务器上的Web应用程序及其当前运行状态(如是否正在运行、部署路径等信息)

(四)Host虚拟主机

Apache Tomcat中的虚拟主机(Virtual Hosts)是指在同一台物理服务器上通过不同的域名或IP地址来运行多个独立的Web应用程序。这种方式使得一个Tomcat实例可以为多个网站提供服务,每个网站对应一个虚拟主机。

1.设置虚拟主机

需要在配置文件(conf/server.xml)中添加Host信息
2.建立站点目录与文件

使用客户端进行访问

二、实现动静分离与负载均衡

Nginx 负载均衡模式: ●rr 负载均衡模式: 每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails,默认1),在失效时间内(fail_timeout,默认10秒),该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后,那么将所有节点都恢复为有效继续探测,一般来说rr可以根据权重来进行均匀分配。

●least_conn 最少连接: 优先将客户端请求调度到当前连接最少的服务器。

●ip_hash 负载均衡模式: 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,但是ip_hash会造成负载不均,有的服务请求接受多,有的服务请求接受少,所以不建议采用ip_hash模式,session 共享问题可用后端服务的 session 共享代替 nginx 的 ip_hash(使用后端服务器自身通过相关机制保持session同步)。

●fair(第三方)负载均衡模式: 按后端服务器的响应时间来分配请求,响应时间短的优先分配。

●url_hash(第三方)负载均衡模式: 基于用户请求的uri做hash。和ip_hash算法类似,是对每个请求按url的hash结果分配,使每个URL定向到同一个后端服务器,但是也会造成分配不均的问题,这种模式后端服务器为缓存时比较好。

Nginx 服务器:192.168.80.10:80

Tomcat服务器1:192.168.80.100:80

Tomcat服务器2:192.168.80.101:8080 192.168.80.101:8081

1.部署Nginx 负载均衡器

systemctl stop firewalld

setenforce 0

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

useradd -M -s /sbin/nologin nginx

cd /opt

tar zxvf nginx-1.12.0.tar.gz -C /opt/

cd nginx-1.12.0/

./configure \

--prefix=/usr/local/nginx \

--user=nginx \

--group=nginx \

--with-file-aio \ #启用文件修改支持

--with-http_stub_status_module \ #启用状态统计

--with-http_gzip_static_module \ #启用 gzip静态压缩

--with-http_flv_module \ #启用 flv模块,提供对 flv 视频的伪流支持

--with-http_ssl_module #启用 SSL模块,提供SSL加密功能

--with-stream #启用 stream模块,提供4层调度


./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-stream

make && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

vim /lib/systemd/system/nginx.service

Unit

Description=nginx

After=network.target

Service

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx

ExecrReload=/bin/kill -s HUP $MAINPID

ExecrStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true

Install

WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service

systemctl start nginx.service

systemctl enable nginx.service

2.部署2台Tomcat 应用服务器

systemctl stop firewalld

setenforce 0

tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/

vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_91

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:{JAVA_HOME}/lib:{JRE_HOME}/lib

export PATH={JAVA_HOME}/bin:{JRE_HOME}/bin:$PATH

source /etc/profile

tar zxvf apache-tomcat-8.5.16.tar.gz

mv /opt/apache-tomcat-8.5.16/ /usr/local/tomcat

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

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

netstat -ntap | grep 8080

3.动静分离配置

(1)Tomcat1 server 配置

mkdir /usr/local/tomcat/webapps/test

vim /usr/local/tomcat/webapps/test/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<html>

<head>

<title>JSP test1 page</title> #指定为 test1 页面

</head>

<body>

<% out.println("动态页面 1,http://www.test1.com");%>

</body>

</html>

三、使用tomcat搭建博客

(一)安装mysql

安装好tomcat后安装mysql数据库,由于本地yum的mysql安装包版本比较老旧,所以不推荐直接使用yum安装,可以自己搭建一个yum仓库

而后再使用yum安装,需要注意安装包的名字不要输错:

1.修改mysql密码

在之前介绍LNAP的时候,就将讲解过如何修改密码,但是之前是编译安装,只是安装一些基础功能,一些安全环境与优化,没有yum做的全,比如初始密码,编译安装的时候初始密码为空,而yum安装是有初始密码的

可以使用grep过滤错误日志中的关键字进行查看

这个密码是随机生成的,有时候会有一些特殊字符,在使用该密码登录的时候,需要使用引号,将密码引起来

登录进去之后,可以修改密码,或者直接使用mysqladmin -u root -p password修改密码

但在修改密码前需要了解validate_password_policy 和 validate_password_length这两个参数

validate_password_policy: 这个参数用于指定密码验证策略的严格程度。其可选值包括0、1和2,默认值根据MySQL版本的不同可能会有所变化。值的含义如下:

0:只检查密码长度。

1(默认):检查密码长度以及字符种类(数字、小写字母、大写字母和特殊字符)。

2:最严格的策略,除了长度和字符种类外,还增加了其他复杂度要求,例如禁止使用常见密码。

validate_password_length 设置全局密码最小长度
2.建立数据库用户并授予权限

(二)建立博客

需要将博客系统的压缩包放在tomcat服务默认的站点目录下

此时就可以使用浏览器去访问博客系统了

输入创建的数据库、用户及密码

这个时候就可以进行编辑管理文章等一些列操作了

相关推荐
超梦dasgg7 小时前
工作中 Git 完整使用指南(职场实战版)
git
Ws_7 小时前
Git + Gerrit 第七课:stash 临时保存工作区修改
git
enjoywindstorm8 小时前
git从入门到精通
git
好好风格8 小时前
宝塔面板 HTTPS 端口证书不生效排查记录
linux·运维·nginx
宋冠巡10 小时前
OpenEuler 系统下 Nginx 安装配置与管理指南(基于 OpenEuler 22.03 LTS SP4)
nginx·openeuler
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ11 小时前
nginx部署教程
运维·网络·nginx
Adorable老犀牛12 小时前
Git 发布正式版本的一个专属的硬核功能,叫做 打标签(Tag)。
git
我先去打把游戏先14 小时前
Ubuntu虚拟机(服务器版本)Git卸载完全教程——彻底移除与清理配置
服务器·git·单片机·嵌入式硬件·物联网·ubuntu·51单片机
m0_7447249315 小时前
Tomcat相关
java·tomcat
不做无法实现的梦~15 小时前
Git Clone 使用 Watt/Steam++ 加速时报证书错误的原因与解决方法
大数据·git·elasticsearch