WEB集群-网站演变与tomcat集群

462 阅读4分钟

1、Java容器

java容器:用于存放与运行java代码的环境.

web中间件

image-20240309213904612

2、JVM-JRE-JDK

JAVA的优秀性:1份代码处处运行与使用. 代码的可移植性.

  • JVM: java 虚拟机中,运行java代码的地方.
  • JRE: java Runtime Enviroment java运行环境 . 提供jvm环境,java命令.
  • JDK: Java Development Kit java开发环境 , jvm+jre+额外功能

image-20240309213916264

温馨提示: 未来部署Jdk即可,jdk

jdk——》oracle

openjdk——》开源

未来根据开发使用的环境准备即可. 目前主要版本: jdk 1.8 jdk 8

3、Tomcat极速上手指南

1)部署JDK

jdk 1.8.351 8u351

官网下载链接

image-20240309213525589

二进制安装

mkdir -p /app/tools/
tar xf jdk-8u341-linux-x64.tar.gz -C /app/tools/
ll /app/tools/
#创建软连接,更方便管理版本
ln -s /app/tools/jdk1.8.0_341/ /app/tools/jdk
#配置JAVA环境变量,一般是二进制安装需要配置(yum安装或rpm包方式安装就不需要配置).
#'EOF'说明不需要识别内容,原封不动直接追加文件
cat >>/etc/profile<<'EOF'
export JAVA_HOME=/app/tools/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
EOF
#刷新检查版本
source /etc/profile
java -version

2)部署tomcat

Tomcat官网

tar xf apache-tomcat-9.0.65.tar.gz -C /app/tools/ 
#软连接,注意后面不要加/,表示一个链接到一个文件,而不是目录
ln -s /app/tools/apache-tomcat-9.0.65/ /app/tools/tomcat
/app/tools/tomcat/bin/version.sh #检查jdk,tomcat信息

image-20240309214953648

3)启动tomcat

/app/tools/tomcat/bin/startup.sh
#检查
ss -lntup | grep java
ps -ef | grep java

image-20240309215254814

image-20240309215329216

4、Tomcat目录结构

1)目录简介

image-20240309220113147

2)bin目录

image-20240309220255083

3)conf

image-20240309220322274

4)log日志

image-20240309220337216

5)webapps

站点目录

war包,自动解压,自动部署

5、Tomcat日常管理与访问

1)书写systemctl管理配置文件进行管理

服务管理指令

存放在/usr/lib/systemd/system/xxxx.service

分为3个部分

修改或设置systemctl配置要进行重新加载配置.

image-20240309224049439

参考其他服务例如sshd服务

[root@clb1 system]# cat /usr/lib/systemd/system/sshd.service 
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
​
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
​
[Install]
WantedBy=multi-user.target

tomcat systemctl 配置

1、环境变量配置

cat /etc/sysconfig/tomcat
JAVA_HOME=/app/tools/jdk
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:/usr/bin/:/usr/sbin/:/usr/local/bin/:/usr/local/sbin/
CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

2、systemct文件配置

#systemctl配置
[root@clb1 ]# cat /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat java web container
After=network.target
​
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=/app/tools/tomcat/bin/startup.sh
ExecStop=/app/tools/tomcat/bin/shutdown.sh
ExecReload=/app/tools/tomcat/bin/shutdown.sh && sleep 1 && /app/tools/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
​
#让系统重新加载一下.service结尾的文件
[root@clb1]# systemctl daemon-reload

2)运行代码

  • 开发人员书写的java代码:java源代码,无法直接部署tomcat中
  • 需要对源代码进行编译:生成war包或jar包.

image-20240310011141028

如何编译java源代码:

通过maven,Gradle把java源代码,编译生成war包或jar包

案例01:war包案例,运行memtest.war包案例,放在webapps目录,然后访问即可

image-20240310005636731

image-20240310005803100

项目结果:

image-20240310011334538

案例02:jar包案例,运行指定的jar包.

#启动程序 nginxWebUI-3.4.0.jar ,提醒:进入子目录下运行jar包,绝对路径有时候有bug#先测试在前台
java -jar -Dfile.encoding=UTF-8 nginxWebUI-3.4.0.jar --server.port=8848  --project.home=/root/
​
#后台运行一个Java应用程序,该程序监听8080端口,并且不会将输出显示在终端上。
Linux: nohup java -jar -Dfile.encoding=UTF-8 /home/nginxWebUI/nginxWebUI.jar  --server.port=8080 --project.home=/home/nginxWebUI/ > /dev/null &
​
#参数说明(都是非必填)
--server.port 占用端口, 默认以8080端口启动
--project.home 项目配置文件目录,存放数据库文件,证书文件, 日志等, 默认为/home/nginxWebUI/
注意Linux命令最后加一个&号, 表示项目后台运行

image-20240310010950373

image-20240310010556671

6、WEB集群-Tomcat集群

1)配置文件server.xml

#8005端口
<Server port="8005" shutdown="SHUTDOWN">
8005 shutdown端口,连接这个端口输入shutdown字符,就可以关闭 Tomcat.
#配置 管理端认证功能 
<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>
#8080 处理用户的http请求的.
<Connector port="8080" protocol="HTTP/1.1"
             connectionTimeout="20000"
redirectPort="8443" /> 
#这里的8443是用于处理 https请求.
#engine部分,指定默认的虚拟主机.
<Engine name="Catalina" defaultHost="localhost">
defaultHost="localhost" 指定localhost作为默认的虚拟主机
​
#Host部分,虚拟主机的配置部分.
<Host name="localhost" appBase="webapps"
            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="域名"

image-20240310015853969

配置文件小结

端口:8005,8080,8443, 8009(从8.5开始隐藏,与apache连接) Host部分含义

2)规范tomcat访问日志格式

image-20240310015935201

pattern="%h %l %u %t &quot;%r&quot; %s %b &quot;% {Referer}i&quot; &quot;%{User-Agent}i&quot; &quot;% {X-Forwarded-For}i&quot;" />

&quot;表示双引号

3)tomcat与用户请求

1、请求与8080端口连接

2、域名与Host部分的Name进行匹配,

a) 匹配成功则使用对应的虚拟主机.

b) 匹配失败则使用Engine部分defaultHost指定的默认的虚 拟主机进行处理.

tomcat可以处理静态与动态请求. 处理静态请求的效率较低,擅长动态.

7、Tomcat部署zrlog应用

ZrLog 是使用 Java 开发的博客程序

1、代码war

2、创建数据库,用户

代码

修改war包名称为zrlog.war

数据库

create database zrlog;
grant all on zrlog.* to 'zrlog'@'172.16.1.%' identified by '2';
show databases ;
select user,host from mysql.user;

部署代码

改名为zrlog.war后 移动到webapps目录

浏览器访问

前台:
http://zrlog.oldboylinux.cn:8080/zrlog/
后台管理:
http://zrlog.oldboylinux.cn:8080/zrlog/admin/