云计算百科
云计算领域专业知识百科平台

Tomcat web应用服务器项目部署

1.7 web部署

1.部署样式解读

Tomcat
部署应用有三种方式:

1
以文件或
war
包直接部署

将应用文件夹或
war
包文件直接复制到
tomcat

webapps
目录下,这样
tomcat
启动的时候会


webapps
目录下的文件夹或
war
文件的内容当成应用部署。这种方式最简单且无须书写任何配置文件

2
编辑
/
data
/
server
/
tomcat
/
conf
/
server.xml
配置文件,添加
Context
标签


tomcat

server.xml
配置文件中的
Host
节点下增加
Context
子节点,配置域名,文件路径等

3

/
data
/
server
/
tomcat
/
conf
/
[Engine]
/
[Host]
/
目录下创建独立配置

在该目录下新建
xml
文件,文件名为应用名,然后在配置文件中添加
Context
子节点,配置域名,文件路径等

2.默认首页

全局默认主页配置

[root
@rocky9-12
tomcat]
# tail -n7 conf/web.xml | head -5

<
welcome-file-list
>

<
welcome-file
>
index.html
</
welcome-file
>

<
welcome-file
>
index.htm
</
welcome-file
>

<
welcome-file
>
index.jsp
</
welcome-file
>

</
welcome-file-list
>

单独项目默认主页

[root
@rocky9-12
tomcat]
# grep -A5 '<welcome-file-list' webapps/examples/WEB-INF/web.xml

<
welcome-file-list
>        

<
welcome-file
>
index.html
</
welcome-file
>      

<
welcome-file
>
index.xhtml
</
welcome-file
>        

<
welcome-file
>
index.htm
</
welcome-file
>        

<
welcome-file
>
index.jsp
</
welcome-file
>   

</
welcome-file-list
>

3.定制站点的默认主页

[root
@rocky9-12
tomcat]
# mkdir webapps/dira/WEB-INF

[root
@rocky9-12
tomcat]
# cat webapps/dira/WEB-INF/web.xml

<
?
xml version
=
"1.0"
encoding
=
"UTF-8"
?
>

<
web-app xmlns
=
"http://xmlns.jcp.org/xml/ns/javaee"

 xmlns
:
xsi
=
"http://www.w3.org/2001/XMLSchema-instance"

 xsi
:
schemaLocation
=
"http://xmlns.jcp.org/xml/ns/javaee

                     http
://
xmlns.jcp.org
/
xml
/
ns
/
javaee
/
web-app_4_0.xsd
"

 version
=
"4.0"

 metadata-complete
=
"true"
>    

<
welcome-file-list
>        

<
welcome-file
>
test.jsp
</
welcome-file
>          
#
第一优先级
test.jsp        

<
welcome-file
>
index.html
</
welcome-file
>   

</
welcome-file-list
>

</
web-app
>

重启服务

[root
@rocky9-12
tomcat]
# systemctl restart tomcat

检查效果

[root
@rocky9-12
tomcat]
# curl 10.0.0.12:8080/dira/

123

4.部署web

创建文件目录

[root
@rocky9-12
~
]
# mkdir -pv /data/web/webapps/ROOT

mkdir
:
已创建目录
'/data/web'

mkdir
:
已创建目录
'/data/web/webapps'

mkdir
:
已创建目录
'/data/web/webapps/ROOT'

定制
web
页面

定制
html

index
页面

[root
@rocky9-12
~
]
# cat > /data/web/webapps/ROOT/index.html <<-eof

<!
DOCTYPE html
>

<
html lang
=
"en"
>

<
head
>    

<
meta charset
=
"UTF-8"
>    

<
meta name
=
"viewport"
content
=
"width=device-width, initial-scale=1.0"
>    

<
title
>
Welcome to Tomcat
</
title
>

</
head
>

<
body
>   

<
h1
>
Welcome to Tomcat by pjli
</
h1
>

</
body
>

</
html
>

eof

定制
jsp

index
页面

[root
@rocky9-12
~
]
# cat > /data/web/webapps/ROOT/index.jsp <<-eof

<%
@
page contentType
=
"text/html;charset=UTF-8"
language
=
"java"
%>

<!
DOCTYPE html
>

<
html lang
=
"en"
>

<
head
>    

<
meta charset
=
"UTF-8"
>    

<
meta name
=
"viewport"
content
=
"width=device-width, initial-scale=1.0"
>    

<
title
>
Welcome to Tomcat JSP
</
title
>

</
head
>

<
body
>    

<
h1
>
Welcome to Tomcat by pjli
</
h1
>

</
body
>

</
html
>

eof

修改权限

[root
@rocky9-12
~
]
# chown tomcat:tomcat /data/web/webapps -R

添加基于域名的
web

[root
@rocky9-12
~
]
# vim /data/server/tomcat/conf/server.xml

#
增加如下配置     

     

<
Host name
=
"pjli.baidu.com"
 appBase
=
"/data/web/webapps"

            unpackWARs
=
"true"
autoDeploy
=
"true"
>

     

</
Host
>

重启服务,

[root
@rocky9-12
~
]
# systemctl restart tomcat.service

在客户端配置域名解析,并测试

[root
@rocky9-12
~
]
# echo '10.0.0.12 pjli.baidu.com' >> /etc/hosts

[root
@rocky9-12
~
]
# curl pjli.baidu.com:8080 -s | grep Tomcat

[root
@rocky9-12
~
]
# curl pjli.baidu.com:8080/index.jsp -s | grep Tomcat

效果如下:

疑:为什么浏览器出不来相应网页?

5.war包构建

准备目录

[root
@rocky9-12
~
]
# mkdir app1/dir1 -p

[root
@rocky9-12
~
]
# cp /data/web/webapps/ROOT/index.html app1/

[root
@rocky9-12
~
]
# cp /data/web/webapps/ROOT/index.jsp app1/dir1/

[root
@rocky9-12
~
]
# chown tomcat:tomcat -R app1/

创建
war

[root
@rocky9-12
~
]
# cd app1/

[root
@rocky9-12
app1]
# jar cvf ../app1.war *

[root
@rocky9-12
app1]
# cd ..

[root
@rocky9-12
~
]
#

如果没有
jar
命令的话,安装另外一个软件即可

yum install java-11-openjdk-devel

y

部署
war
包应用

[root
@rocky9-12
~
]
# rm -rf /data/web/webapps/ROOT/*

[root
@rocky9-12
~
]
# cp app1.war /data/web/webapps/

因为
tomcat
在配置
host
的时候,定制了
unpackWARs="true" –
自动解包,
autoDeploy="true" –
自动部署所以,可以看到目标目录下,的压缩文件已经展开了

浏览器访问

1.8 项目部署

1.jpress项目

简介 JPress是一个基于Java技术的开源内容发布系统,它提供了高效且简洁的博客和网站构建解决方案。官网:https://www.jpress.cn/  

注意:下载的时候,需要登录,它
不支持 tomcat
10
+
版本。

1.普通方式部署

获取项目

获取代码

方法
1 – git
方法

mkdir
/
data
/
code

cd
/
data
/
code

git clone https
://
gitee.com
/
JPressProjects
/
jpress.git

cd
jpress

编译打包

apt install maven

mvn clean package

获取程序

方法
2 –
直接获取源码包

root
@ubuntu24-13:
~
# mkdir -p /data/app

root
@ubuntu24-13:
~
# cd /data/softs

[root
@rocky9-12
softs]
# ls

jpress-v5
.1.2
.tar.gz

编译文件  

当然,也可以直接下载文件

root
@ubuntu24-13:softs
# tar xf jpress-v5.1.2.tar.gz

root
@ubuntu24-13:softs
# cd jpress-v5.1.2/

root
@ubuntu24-13:jpress-v5
.1.2
# mvn clean package   #
此步时间很长,需要提前

准备

查看文件

root
@ubuntu24-13:jpress-v5
.1.2
# ls starter-tomcat/target/

classes         starter-tomcat-5
.0
             starter-tomcat-5
.0
.war

maven-archiver  starter-tomcat-5
.0

classes.jar

root
@ubuntu24-13:jpress
# ls starter/target/

archive-tmp  generated-sources       maven-archiver  starter-5
.0
     starter-5
.0
.zip

classes      generated-test-sources  maven-status    starter-5
.0
.jar  test-classes

手动运行项目

修改配置

root
@ubuntu24-13:
~
# cd /data/code/jpress/starter/target/starter-5.0

root
@ubuntu24-13:starter-5
.0
# vim jpress.sh

#
取消下行注释

JAVA_OPTS
=
"-Dundertow.port=80 -Dundertow.host=0.0.0.0 -Dundertow.devMode=false"

启动服务

root
@ubuntu24-13:starter-5
.0
# ./jpress.sh start

..
.

Server running on
:

>
Local
:
  http
://
localhost
:
80

>
Network
:
http
://
192.168.8.124
:
80

>
Network
:
http
://
192.168.8.128
:
80

>
Network
:
http
://
10.0.0.105
:
80

>
Network
:
http
://
10.0.0.13
:
80

JbootResourceLoader is started, and watching resource
dir
:
webapp

检测服务端口

root
@ubuntu24-13:starter-5
.0
# netstat -tnulp | grep java

tcp6      
0      
0
:::
80      
:::*
         LISTEN      
13706
/
java

浏览器效果

查看终端日志

root
@ubuntu24-13:starter-5
.0
# ./jpress.sh start

。。。。

关闭服务

root
@ubuntu24-13:starter-5
.0
# ./jpress.sh stop

2.war方式部署

部署程序

root
@ubuntu24-13:
~
# cd /data/code/jpress/starter-tomcat/target

root
@ubuntu24-13:target
# ls

classes  maven-archiver  starter-tomcat-5
.0  

starter-tomcat-5
.0

classes.jar  starter-tomcat-5
.0
.war

转移文件

root
@ubuntu24-13:target
# mkdir /data/app/jpress -p

root
@ubuntu24-13:target
# cp starter-tomcat-5.0.war /data/app/jpress/ROOT.war

root
@ubuntu24-13:target
# chown tomcat:tomcat -R /data/app/jpress

root
@ubuntu24-13:target
# ll /data/app/jpress/

总计
125352

drwxr-xr-x
2
tomcat tomcat      
4096 5

21 00
:
05
.
/

drwxr-xr-x
3
root   root        
4096 5

21 00
:
01
../


rw-r–r

1
tomcat tomcat
128350601 5

21 00
:
05
ROOT.war

转移配置文件

root@ubuntu24-13:target# cp classes/* /data/server/tomcat/conf/

定制配置

添加配置

root
@ubuntu24-13:
~
# vim /data/server/tomcat/conf/server.xml

     

..
.  
#
更改
appBase
的属性路径为
jpress
的路径

     

<
Host name
=
"localhost"
 appBase
=
"/data/app/jpress"

           unpackWARs
=
"true"
autoDeploy
=
"true"
>

重启服务

root
@ubuntu24-13:
~
# systemctl restart tomcat

查看文件包

root
@ubuntu24-13:
~
# ls /data/app/jpress/

ROOT  ROOT.war

确认端口效果

root
@ubuntu24-13:
~
# netstat -tnulp |grep java

tcp6      
0      
0
:::
8080                
:::*
        LISTEN      
14207
/
java

tcp6      
0      
0 127.0.0.1
:
8005          
:::*
        LISTEN      
14207
/
java

浏览器访问 10.0.0.13:8080

3.数据库环境

安装
mysql

root
@ubuntu24-13:
~
# apt install mariadb-server -y

修改配置

root
@ubuntu24-13:
~
# vim /etc/mysql/mariadb.conf.d/50-server.cnf

bind-address
=
0.0.0.0

启动服务

root
@ubuntu24-13:
~
# systemctl restart mariadb.service

检查效果

root
@ubuntu24-13:
~
# netstat -tnulp | grep 3306

tcp        
0      
0 0.0.0.0
:
3306      
0.0.0.0
:*
    LISTEN      
7343
/
mariadbd

mysql
数据库创数据库,创建用户并授权

root
@ubuntu24-13:
~
# mysql

MariaDB [(none)]
>
create database jpress;

Query OK,
1
row affected (
0.000
sec)

MariaDB [(none)]
>
CREATE USER
'jpresser'
@'localhost
';

Query OK,
0
rows affected (
0.002
sec)

MariaDB [(none)]
>
ALTER USER
'jpresser'
@'localhost
' IDENTIFIED BY '
123456
';    

          Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]
>
grant all on jpress.
*
to jpresser
@'localhost
';

Query OK,
0
rows affected (
0.001
sec)

MariaDB [(none)]
>
exit

Bye

数据库配置完毕后,继续进行后续操作

设置账号密码等

并将账号密码登录在下面

最终效果

2. halo 项目

1.简介

Halo

manrajgrover
等人创建并维护,是一个现代化的开源博客系统,而且它提供了丰富的功能和活的定制选项,允许用户快速搭建并管理各种类型的网站。所以它是一个旨在为开发者提供一个易于使用且功能强大的平台,用于创建和管理个人或团队的博客、网站或内容管理系统。

获取文件

root
@ubuntu24-13:
~
# mkdir /data/halo ;cd /data/halo

root
@ubuntu24-13:halo
# wget https://dl.halo.run/release/halo-1.6.1.jar -O halo.jar (注:链接地址可能不稳定导致404)

root
@ubuntu24-13:halo
# ls

halo.jar

启动项目

root
@ubuntu24-13:halo
# java -jar halo.jar


   __  __      __

Halo has started successfully
!
#
启动成功的标识符

检查端口

root
@ubuntu24-13:
~
# netstat -tnulp | grep java

tcp6      
0      
0
:::
8090      
:::*
         LISTEN      
14532
/
java

浏览器访问
10.0.0.13
:
8090

1.9 进阶实践

1.常见部署方式

      关于
tomcat
的部署样式,除了我们之前站在
tomcat
本身的角度,所说的
java

jar

war
包、
java

字节码等方式的部署样式,其实,更多的情况下,我们是将
tomcat
结合其他的软件解决方案来实现的项目架构级别的部署,这些部署样式如下。

2.部署tomcat应用

简介

在同一台服务器上部署
Nginx

Tomcat

Nginx
监听
80
端口,将请求转发至后端
Tomcat

8080
端口进行处理。

准备
tomcat
的应用配置

[root
@rocky9-12
~
]
# tree /data/web/webapps

/
data
/
web
/
webapps

└──
ROOT

   

├──
index.html

   

└──
index.jsp

1
directory,
2
files

如果不是上面的效果的话,按照如下命令执行

cd
/
data
/
web
/
webapps
/

mv
app1
/
index.html ROOT
/

mv
app1
/
dir1
/
index.jsp ROOT
/

rm

rf app1
*

[root
@rocky9-12
~
]
# vim /data/server/tomcat/conf/server.xml

#
修改端口为
8080   

<
Connector port
=
"8080"
protocol
=
"HTTP/1.1"      

..
.
..
.

#
增加如下配置      

<
Host name
=
"pjli.baidu.com"
 appBase
=
"/data/web/webapps"

            unpackWARs
=
"true"
autoDeploy
=
"true"
>      

</
Host
>

重启服务,

[root
@rocky9-12
~
]
# systemctl restart tomcat.service

测试效果

[root
@rocky9-12
~
]
# curl 10.0.0.12:8080/index.jsp -s | grep Tomcat

[root
@rocky9-12
~
]
# curl -H "Host: pjli.baidu.com" 10.0.0.12:8080/index.jsp -s | grep Tomcat

结果显示:

使用
ip
地址无法访问,但是携带主机头就可以进行正常的访问。

2.0 反向代理

1.nginx反向代理Tomcat

安装nginx      yum install nginx -y

vim  /etc/nginx/conf.d/vhost.conf

server {
# 监听80端口,负责接收HTTP请求
listen 80;
# 指定该虚拟主机的域名,只有当客户端请求的域名是 pjli.baidu.com 时,此配置才会起作用
server_name pjli.baidu.com;

# 匹配所有路径的请求
location / {
# 将请求代理转发到本地的 8080 端口,也就是Tomcat服务器所在的端口
proxy_pass http://127.0.0.1:8080;
# 设置请求头中的 host 字段为客户端请求的原始 host,这样后端服务器可根据原始域名进行处理
proxy_set_header host $http_host;
}

# 使用正则表达式匹配以 .jsp 结尾的请求
location ~* \\.jsp$ {
# 同样将以 .jsp 结尾的请求代理转发到本地的 8080 端口
proxy_pass http://127.0.0.1:8080;
# 设置请求头中的 host 字段为客户端请求的原始 host
proxy_set_header host $http_host;
}
}

检测
nginx
配置

[root
@rocky9-12
~
]
# nginx -t

重启
nginx
服务

[root
@rocky9-12
~
]
# systemctl restart nginx.service

定制主机名解析

[root
@rocky9-12
~
]
# echo '10.0.0.12 pjli.baidu.com' >> /etc/hosts    

访问测试

[root
@rocky9-12
~
]
# curl pjli.baidu.com -s | grep Tomcat   (即用80端口访问成功)

[root
@rocky9-12
~
]
# curl pjli.baidu.com/index.jsp -s | grep Tomcat    (即用80端口访问成功)

遇到的疑惑趣事儿:

nginx -t  和 systemctl restart nginx 都没问题,结果出现下面的报错 其实是复制的时候格式问题。

后面用AI更新了一下vhost.conf文件里面的格式恢复正常。

2.项目实施与解读

定制一个
nginx
反向代理多个
tomcat
应用实例的效果。

1.Rocky9部署Tomcat

直接套用现在的
Tomcat
环境即可,修改
tomcat
的配置

[root
@rocky9-12
~
]
# vim /data/server/tomcat/conf/server.xml

     

<
Host name
=
"rocky9.baidu.com"
 appBase
=
"/data/web/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 "%r" %s %b %{x-forwarded-for}i"
/>

重启服务

[root
@rocky9-12
~
]
# systemctl restart tomcat

启动
tomcat
并测试

[root
@rocky9-12
~
]
# curl localhost:8080    (无法访问)

注意:

如果无法看到效果,可以设定域名主机为默认
Host
,或者

curl
使用

H
"Host: rocky9.baidu.com"
携带主机名头部进行访问

[root@rocky9-12 ~]# curl rocky9.baidu.com:8080    (访问正常)

2.ubuntu24部署Tomcat

部署
java
应用

root
@ubuntu24:
~
# apt install openjdk-11-jdk -y

部署
tomcat
应用

root
@ubuntu24:
~
# apt install tomcat10 -y

修改
tomcat
配置

root
@ubuntu24:
~
# vim /etc/tomcat10/server.xml

     

<
Host name
=
"ubuntu24.baidu.com"
 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 "%r" %s %b %{x-forwarded-for}i"
/>

定位
tomcat
首页

root
@ubuntu24:
~
# echo 'ubuntu24 Tomcat' >

/var/lib/tomcat10/webapps/ROOT/index.html

启动并测试

重启
tomcat

root
@ubuntu24:
~
# systemctl restart tomcat10.service

测试效果

root
@ubuntu24:
~
# curl localhost:8080

ubuntu24 Tomcat

注意:

如果无法看到效果,可以设定域名主机为默认
Host
,或者

curl
使用

H
"Host: ubuntu24.baidu.com"
携带主机名头部进行访问

3.openEuler部署Tomcat

基础软件部署

部署
java
应用

[root
@openeuler-14
~
]
# yum install java-11-openjdk -y

部署
tomcat
应用

[root
@openeuler-14
~
]
# yum install tomcat -y

定制配置文件

修改
tomcat
配置

[root
@openeuler-14
~
]
# vim /usr/share/tomcat/conf/server.xml

     

<
Host name
=
"openeuler.magedu.com"
 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 "%r" %s %b %{x-forwarded-for}i"
/>

           

定制首页

[root
@openeuler-14
~
]
# echo 'openeuler tomcat' >

/usr/share/tomcat/webapps/ROOT/index.jsp

4.nginx环境配置

[root
@rocky9-12
~
]
# vim /etc/nginx/conf.d/vhost.conf

# 定义名为rocky9的上游服务器组,其中包含一个后端服务器(同下解释)
upstream rocky9 {
server 10.0.0.12:8080;
}
upstream ubuntu24 {
server 10.0.0.13:8080;
}
upstream openeuler14 {
server 10.0.0.14:8080;
}

# 第一个虚拟主机配置,处理rocky9.baidu.com的请求
server {
# 监听80端口,接收HTTP请求
listen 80;
# 指定该虚拟主机对应的域名
server_name rocky9.baidu.com;
# 匹配所有路径的请求
location / {
# 将请求代理转发到名为rocky9的上游服务器组
proxy_pass http://rocky9;
# 设置请求头中的host字段为客户端请求的原始host
proxy_set_header host $http_host;
# 设置请求头中的X-Forwarded-For字段,记录客户端的真实IP地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

# 第二个虚拟主机配置,处理ubuntu24.baidu.com的请求
server {
listen 80;
server_name ubuntu24.baidu.com;
location / {
proxy_pass http://ubuntu24;
proxy_set_header host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

# 第三个虚拟主机配置,处理openeuler14.baidu.com的请求
server {
listen 80;
server_name openeuler14.baidu.com;
location / {
proxy_pass http://openeuler;
proxy_set_header host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

定制域名

[root
@rocky9-12
~
]
# echo '10.0.0.12 rocky9.baidu.com ubuntu24.baidu.com

openeuler14.baidu.com' >> /etc/hosts

测试效果

3. https反向代理

1.rocky9系统定制tomcat域名

修改配置文件 在host配置段内部增加

[root
@rocky9-12
~
]
# vim /data/server/tomcat/conf/server.xml      

<
Host name
=
"pjli.baidu.com"
 appBase
=
"/data/web/webapps"

            unpackWARs
=
"true"
autoDeploy
=
"true"
>

     

</
Host
>

[root
@rocky9-12 3]#
echo
'Tomcat jsp page from rocky9<br />SessionID = <span style="color:blue"><%=session.getId() %>'
> /data/web/webapps/ROOT/test.jsp

2.ubuntu系统定制tomcat域名

root
@ubuntu24:
~
# vim /etc/tomcat10/server.xml

#
修改主机名

<
Host name
=
"pjli.baidu.com"
 appBase
=
"webapps"

           unpackWARs
=
"true"
autoDeploy
=
"true"
>

定制
test.jsp
文件

root
@ubuntu24:
~
# echo
'Tomcat jsp page from ubuntu<br />SessionID = <span style="color:blue"><%=session.getId() %>'
> /var/lib/tomcat10/webapps/ROOT/test.jsp

3.OpenEuler系统定制tomcat域名

增加
Cluster
配置属性

[root
@openeuler-14
~
]
# vim /usr/share/tomcat/conf/server.xml

     

#
修改为同一个域名

     

<
Host name
=
"pjli.baidu.com"
 appBase
=
"webapps"

           unpackWARs
=
"true"
autoDeploy
=
"true"
>

定制
test.jsp
文件

[root
@openeuler-14
~
]
# echo
'Tomcat jsp page from openeuler<br />SessionID = <span style="color:blue"><%=session.getId() %>'
> /var/lib/tomcat/webapps/ROOT/test.jsp

4.定制CA证书

https定制

安装软件

[root
@rocky9-12
~
]
# yum install easy-rsa -y

注意:该软件依赖于
epel-release

初始化环境

[root
@rocky9-12
~
]
# cd /usr/share/easy-rsa/3

[root
@rocky9-12
3
]
# ./easyrsa init-pki

生成CA机构证书

[root
@rocky9-12
3
]
# ./easyrsa
build-ca nopass

。。。。。。

Common Name (eg
:
your user, host, or server name) [Easy-RSA CA]
:baidu
 
#
输入baidu

#
这里仅仅做个演示 我是想用rocky9.baidu.com申请 所以写的是baidu

。。。。。。

生成私钥和证书申请者文件

[root
@rocky9-12
3
]
# ./easyrsa
gen-req

rocky9.baidu.com

nopass

。。。。。。

Common Name (eg
:
your user, host, or server name) [rocky9.baidu.com]
:  
#
直接Enter

。。。。。。

Private-Key and Public-Certificate-Request files created.

Your files are
:

*
req
: /
usr
/
share
/
easy-rsa
/
3
/
pki
/
reqs
/
rocky9.baidu.com.req           #生成的申请者文件

*
key
: /
usr
/
share
/
easy-rsa
/
3
/
pki
/
private
/
rocky9.baidu.com.key       #生成的私钥文件

签发证书

[root
@rocky9-12
3
]
# ./easyrsa
sign-req server 
rocky9.baidu.com

。。。。。。

Confirm request details
:
yes
#
输入
yes

。。。。。。

合并(
服务器证书签发机构证书为一个文件,注意顺序

[root
@rocky9-12
3
]
#cat
pki/issued/rocky9.baidu.com.crt pki/ca.crt
>pki/rocky9.baidu.com.pem

给私钥加读权限

[root
@rocky9-12
3
]
# chmod +r pki/private/rocky9.baidu.com.key

4.nginx实现https

[root@rocky9-12 ~]# vim /etc/nginx/conf.d/vhost.conf

upstream tomcat {
# ip_hash;
# hash $cookie_JSESSION consistent;
# hash $remote_addr; # 三选一可以实现会话保持功能
server 10.0.0.12:8080;
server 10.0.0.13:8080;
server 10.0.0.14:8080;
}
#HTTP 重定向
server {
listen 80;
server_name rocky9.baidu.com;
return 302 https://$host$request_uri;
}
#HTTPS 处理
server {
listen 443 ssl;
server_name rocky9.baidu.com;
ssl_certificate /usr/share/easy-rsa/3/pki/sswang.magedu.com.pem;
ssl_certificate_key /usr/share/easy-rsa/3/pki/private/sswang.magedu.com.key;
ssl_session_cache shared:sslcache:20m;
ssl_session_timeout 10m;
location ~* \\.jsp$ {
proxy_pass http://tomcat;
proxy_set_header host $http_host;
}
}

未开启会话保持的状态

开启会话保持的状态

注意:

虽然访问的是同一个后端,但是并不是同一个会话

话说上面那些怎么可以在浏览器上查看 各位有知道的吗?

2.1 会话实践

当前时间 2025年5月6日14:57:36

Session
集群

在上述
Nginx
代理多机
Tomcat
的架构中,我们在
Nginx
代理节点通过调度算法实现会话绑定,将

来自于同一客户端的请求调度到同相的后端服务器上,在这种情况下,如果后端
Tomcat
服务不可用,
Nginx
在检测后会将请求调度到可用的后端节点,则原来的
Session
数据还是会丢失。

Apache Tomcat 9 (9.0.104) – Clustering/Session Replication How-To    

添加一个集群

将里面的auto改成对应的ip主机地址 然后就能找到4000端口了  具体可以看下面的操作

1. Rocky9主机配置tomcat10会话集群
修改配置文件 在host配置段内部增加配置
[root@rocky9-12 ~]# vim /data/server/tomcat/conf/server.xml           
<Host name="pjli.baidu.com"  appBase="/data/web/webapps"
            unpackWARs="true" autoDeploy="true">
       
<!– 在 server.xml 中 指定域名的 Host 标签内添加下列内容 –>
       
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
                        channelSendOptions="8">
         
<Manager className="org.apache.catalina.ha.session.DeltaManager"
                          expireSessionsOnShutdown="false"
                          notifyListenersOnReplication="true"/>
         
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
               
<Membership
className="org.apache.catalina.tribes.membership.McastService"
                address="228.0.0.4" port="45564" frequency="500"
dropTime="3000"/>
               
<Receiver
className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                address="10.0.0.12" port="4000" autoBind="100"
                selectorTimeout="5000" maxThreads="6"/>
               
<Sender
className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                 
<Transport
className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
               
</Sender>
               
<Interceptor
className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
               
<Interceptor
className="org.apache.catalina.tribes.group.interceptors.MessageDispatchIntercep
tor"/>
         
</Channel>
   <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
          <Valve 
className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                  tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/"
                  watchDir="/tmp/war-listen/" watchEnabled="false"/>
          <ClusterListener 
className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>
      </Host>
在web.xml文件末尾增加如下内容,注意:ROOT 下面的目录名字是 WEB-INF
启用会话复制
[root@rocky9-12 ~]# mkdir /data/web/webapps/ROOT/WEB-INF
[root@rocky9-12 ~]# cat /data/web/webapps/ROOT/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
 version="4.0" metadata-complete="true">
<display-name>Welcome to Tomcat</display-name>
<description>
    Welcome to Tomcat
</description>
<distributable />  # 以启用会话复制功能。 其实就多了一个这个命令
</web-app>
修改文件权限
[root@rocky9-12 ~]# chown tomcat:tomcat -R /data/web/webapps/ROOT/WEB-INF
[root@rocky9-12 ~]# chown tomcat:tomcat -R /data/server/tomcat/
重启tomcat服务
[root@rocky9-12 ~]# systemctl restart tomcat.service
测试效果
[root@rocky9-12 ~]# ss -tnlp | grep 4000
LISTEN 0      50     [::ffff:10.0.0.12]:4000  *:*  users:
(("java",pid=3338,fd=48))
2.ubuntu24主机配置tomcat10会话集群

 图像 小部件
tomcat如果涉及到xx功能的开启和禁用 权限属性 上下文  META_INF/context.xml
如果涉及到项目的功能 WEB_INFO/web.xml
3.OpenEuler主机配置tomcat9会话集群
 图像 小部件

[root@openeuler-14 ~]# vim /usr/share/tomcat/webapps/ROOT/WEB-INF/web.xml

方法1:tomcat会话复制:
1 tomcat server.xml 同步的配置  2 tomcat web.xml 开启同步功能  3 重启tomcat
方法2:nginx的会话保持功能设置:   
# ip_hash;
# hash $cookie_JSESSION consistent;
# hash $remote_addr;                三选一可以实现会话保持功能
方法3:会话共享:
memcache
redis
redisson
4.Rocky9主机配置nginx反向代理
定制nginx配置
[root@rocky9-12 ~]# cat /etc/nginx/conf.d/vhost.conf
upstream tomcat {
        # hash $remote_addr;
        server 10.0.0.12:8080;
        server 10.0.0.13:8080;
        server 10.0.0.14:8080;
}
server{
        listen 80;
        server_name rocky9.baidu.com;
        return 302 https://$host$request_uri;
}
server{
        listen 443 ssl;
        server_name rocky9.baidu.com;
        ssl_certificate /usr/share/easy-rsa/3/pki/rocky9.baidu.com.pem;
        ssl_certificate_key /usr/share/easyrsa/3/pki/private/rocky9.baidu.com.key;
        ssl_session_cache shared:sslcache:20m;
        ssl_session_timeout 10m;
        location ~* \\.jsp$ {
                proxy_pass http://tomcat;
                proxy_set_header host $http_host;
        }
}
nginx 环境测试
[root@rocky9-12 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx服务重启
[root@rocky9-12 ~]# systemctl restart nginx
curl测试每次都是一个session的值
[root@rocky9-12 ~]# curl https://rocky9.baidu.com/test.jsp -k -I

赞(0)
未经允许不得转载:网硕互联帮助中心 » Tomcat web应用服务器项目部署
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!