1、tomcat部署服务及实现会话共享
安装JDK
官方下载 https://www.oracle.com/java/technologies/downloads/
root@ubuntu2204:~# tar -xf jdk-8u371-linux-x64.tar.gz -C /usr/local/
root@ubuntu2204:~# cd /usr/local/
root@ubuntu2204:/usr/local# ln -s jdk1.8.0_371/ jdk
root@ubuntu2204:/usr/local# ls jdk
bin COPYRIGHT include javafx-src.zip jmc.txt jre jvisualvm.txt legal lib LICENSE man README.html release src.zip THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt
root@ubuntu2204:/usr/local# vim /etc/profile.d/jdk.sh
root@ubuntu2204:/usr/local# cat /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME/jre
export CLASSPARH=.:$JAVA_HOME/lib/:$JRE_HOME/lib/
root@ubuntu2204:/usr/local# . /etc/profile.d/jdk.sh
root@ubuntu2204:/usr/local# java -version
java version "1.8.0_371"
Java(TM) SE Runtime Environment (build 1.8.0_371-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.371-b11, mixed mode)
root@ubuntu2204:/usr/local# which java
/usr/local/jdk/bin/java
安装tomcat
下载 tomcat:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/
root@ubuntu2204:~# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.83/bin/apache-tomcat-9.0.83.tar.gz
oot@ubuntu2204:~# tar -xf apache-tomcat-9.0.83.tar.gz -C /usr/local/
root@ubuntu2204:~# cd /usr/local/
root@ubuntu2204:/usr/local# ln -s apache-tomcat-9.0.83/ tomcat
root@ubuntu2204:/usr/local# echo 'PATH=/usr/local/tomcat/bin:$PATH' >/etc/profile.d/tomcat.sh
root@ubuntu2204:/usr/local# . /etc/profile.d/tomcat.sh
root@ubuntu2204:/usr/local# catalina.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Usage: catalina.sh ( commands ... )
commands:
debug Start Catalina in a debugger
debug -security Debug Catalina with a security manager
jpda start Start Catalina under JPDA debugger
run Start Catalina in the current window
run -security Start in the current window with security manager
start Start Catalina in a separate window
start -security Start in a separate window with security manager
stop Stop Catalina, waiting up to 5 seconds for the process to end
stop n Stop Catalina, waiting up to n seconds for the process to end
stop -force Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running
stop n -force Stop Catalina, wait up to n seconds and then use kill -KILL if still running
configtest Run a basic syntax check on server.xml - check exit code for result
version What version of tomcat are you running?
Note: Waiting for the process to end and use of the -force option require that $CATALINA_PID is defined
root@ubuntu2204:/usr/local# catalina.sh version
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Server version: Apache Tomcat/9.0.83
Server built: Nov 9 2023 20:57:42 UTC
Server number: 9.0.83.0
OS Name: Linux
OS Version: 5.15.0-88-generic
Architecture: amd64
JVM Version: 1.8.0_371-b11
JVM Vendor: Oracle Corporation
#启动tomcat
root@ubuntu2204:/usr/local# 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/local/jdk/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
root@ubuntu2204:/usr/local# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 127.0.0.1:6010 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::1]:6010 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
#停止服务
root@ubuntu2204:/usr/local/tomcat# 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/local/jdk/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
配置 tomcat 自启动的 service 文件
root@ubuntu2204:/usr/local/tomcat# useradd -r -s /sbin/nologin tomcat
root@ubuntu2204:/usr/local/tomcat# vim /usr/local/tomcat/conf/tomcat.conf
root@ubuntu2204:/usr/local/tomcat# cat /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/usr/local/jdk
#创建tomcat 专用账户
root@ubuntu2204:/usr/local/tomcat# useradd -r -s /sbin/nologin tomcat
#准备service变量
root@ubuntu2204:/usr/local/tomcat# vim /usr/local/tomcat/conf/tomcat.conf
root@ubuntu2204:/usr/local/tomcat# cat /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/usr/local/jdk
root@ubuntu2204:/usr/local/tomcat# chown -R tomcat:tomcat /usr/local/tomcat/
#创建service文件
root@ubuntu2204:/usr/local/tomcat# vim /lib/systemd/system/tomcat.service
root@ubuntu2204:/usr/local/tomcat# cat /lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/local/jdk
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
root@ubuntu2204:/usr/local/tomcat# systemctl daemon-reload
root@ubuntu2204:/usr/local/tomcat# systemctl enable --now tomcat
oot@ubuntu2204:/usr/local/tomcat# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 127.0.0.1:6010 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::1]:6010 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
负载均衡配置
网络规划
IP | 主机名 | 服务 | 软件 |
---|---|---|---|
10.0.0.150 | proxy.wang.org | 调度器 | Nginx |
10.0.0.151 | t1.wang.org | 服务 | JDK8、Tomcat9 |
10.0.0.512 | t2.wang.org | 服务 | JDK8、Tomcat9 |
在调度节点配置域名解析
vim /etc/hosts
#添加以下三行
10.0.0.150 proxy.wang.org proxy
10.0.0.151 t1.wang.org t1
10.0.0.152 t2.wang.org t2
负载均衡tomcat主机准备
修改tomcat的虚拟机主机为自定义的主机名,并设为默认的虚拟主机
t1虚拟主机配置conf/server.xml
<Engine name="Catalina" defaultHost="t1.wang.org">
<Host name="t1.wang.org" appBase="/data/webapps" autoDeploy="true" >
</Host>
</Engine>
t2虚拟主机配置conf/server.xml
<Engine name="Catalina" defaultHost="t2.wang.org">
<Host name="t2.wang.org" appBase="/data/webapps" autoDeploy="true" >
</Host>
</Engine>
准备负载均衡规划测试用的 jsp文件
#项目路径配置
mkdir -pv /data/webapps/ROOT
#编写测试jsp文件,内容在下面
vim /data/webapps/ROOT/index.jsp
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tomcat test</title>
</head>
<body>
<div>On <%=request.getServerName() %></div>
<div><%=request.getLocalAddr() + ":" + request.getLocalPort() %></div>
<div>SessionID = <span style="color:blue"><%=session.getId() %></span></div>
<%=new Date()%>
</body>
</html>
#设置权限
chown -R tomcat.tomcat /data/webapps/
#重启tomcat 服务
systemctl restart tomcat.service
Nginx 实现后端 Tomcat 的负载均衡调度
确保防火墙 selinx 关闭
[root@rocky8 ~]# yum install nginx -y
创建单独配置文件放到主配置文件 关联的路径中 include /etc/nginx/conf.d/*.conf;
[root@rocky8 ~]# vim /etc/nginx/conf.d/tomcat.conf
#在http块中加以下内容
upstream tomcat-server {
ip_hash; # 先禁用看看轮询,之后开启开黏性,只根据客户端IP的前三位十进制数字
#hash $remote_addr consistent; # 根据客户端IP的全部位
#hash $cookie_JSESSIONID consistent; # 先禁用看看轮询,之后开启开黏性,JSESSIONID可以小写
server t1.wang.org:8080;
server t2.wang.org:8080;
}
server {
listen 80;
server_name 10.0.0.150;
location / {
proxy_pass http://tomcat-server;
#proxy_set_header Host $http_host; #转发主机头至后端服务器
}
}
浏览器访问验证http://10.0.0.150/
打开 ip_hash指令 前后对比,发现打开前 主机和session 一直变化,打开后,主机和session 都不在变化
2、Nexus 安装及实现私有仓库
Nexus 下载安装
安装JDK
root@ubuntu2204:~# apt install openjdk-8-jdk -y
root@ubuntu2204:~# java -version
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (build 1.8.0_382-8u382-ga-1~22.04.1-b05)
OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)
下载Nexus 软件包
#官网下载软件包
https://help.sonatype.com/repomanager3/product-information/download/download-archives---repository-manager-3
wget https://download.sonatype.com/nexus/3/nexus-3.54.1-01-unix.tar.gz
root@ubuntu2204:~# ll nexus-3.54.1-01-unix.tar.gz
-rw-r--r-- 1 zheng zheng 210531214 Nov 26 14:21 nexus-3.54.1-01-unix.tar.gz
root@ubuntu2204:~# tar -xf nexus-3.54.1-01-unix.tar.gz -C /usr/local/
root@ubuntu2204:~# ln -s /usr/local/nexus-3.54.1-01/ /usr/local/nexus
root@ubuntu2204:~# ls /usr/local/nexus
bin deploy etc lib NOTICE.txt OSS-LICENSE.txt PRO-LICENSE.txt public replicator system
root@ubuntu2204:~# ln -s /usr/local/nexus/bin/nexus /usr/bin/
root@ubuntu2204:~# ll /usr/local/nexus/bin/nexus
root@ubuntu2204:~# file /usr/local/nexus/bin/nexus
/usr/local/nexus/bin/nexus: POSIX shell script, ASCII text executable, with very long lines (862)
#指定运行者身份
root@ubuntu2204:~# vim /usr/local/nexus/bin/nexus.rc
run_as_user="root"
#查看配置文件,可以在此文件中修改端口等信息
root@ubuntu2204:~# cat /usr/local/nexus/etc/nexus-default.properties
## DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties
##
# Jetty section
application-port=8081
application-host=0.0.0.0
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/
# Nexus section
nexus-edition=nexus-pro-edition
nexus-features=\
nexus-pro-feature
nexus.hazelcast.discovery.isEnabled=true
# 查看JVM 配置信息
root@ubuntu2204:~# cat /usr/local/nexus/bin/nexus.vmoptions
-Xms2703m
-Xmx2703m
#前台运行
root@ubuntu2204:~# nexus run
# 后台运行
root@ubuntu2204:~# nexus start
WARNING: ************************************************************
WARNING: Detected execution as "root" user. This is NOT recommended!
WARNING: ************************************************************
Starting nexus
#查看状态
root@ubuntu2204:~# nexus status
WARNING: ************************************************************
WARNING: Detected execution as "root" user. This is NOT recommended!
WARNING: ************************************************************
nexus is running.
# 停止服务
root@ubuntu2204:~# nexus stop
WARNING: ************************************************************
WARNING: Detected execution as "root" user. This is NOT recommended!
WARNING: ************************************************************
Shutting down nexus
Stopped.
#配置service 文件
root@ubuntu2204:~# vim /lib/systemd/system/nexus.service
root@ubuntu2204:~# cat /lib/systemd/system/nexus.service
[Unit]
Description=nexus service
After=network.target
[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/usr/local/nexus/bin/nexus start
ExecStop=/usr/local/nexus/bin/nexus stop
User=root
#User=nexus
Restart=on-abort
[Install]
WantedBy=multi-user.target
root@ubuntu2204:~# systemctl daemon-reload
root@ubuntu2204:~# systemctl enable --now nexus.service
Created symlink /etc/systemd/system/multi-user.target.wants/nexus.service → /lib/systemd/system/nexus.service.
root@ubuntu2204:~#
root@ubuntu2204:~# tail -f /var/log/syslog
Nov 26 14:47:17 ubuntu2204 systemd[1]: Starting nexus service...
Nov 26 14:47:17 ubuntu2204 nexus[19470]: WARNING: ************************************************************
Nov 26 14:47:17 ubuntu2204 nexus[19470]: WARNING: Detected execution as "root" user. This is NOT recommended!
Nov 26 14:47:17 ubuntu2204 nexus[19470]: WARNING: ************************************************************
Nov 26 14:47:17 ubuntu2204 nexus[19470]: Starting nexus
root@ubuntu2204:~# ss -ntlp |grep java
LISTEN 0 50 0.0.0.0:8081 0.0.0.0:* users:(("java",pid=19653,fd=788))
LISTEN 0 1 127.0.0.1:36159 0.0.0.0:* users:(("java",pid=19653,fd=125))
root@ubuntu2204:~#
http://10.0.0.152:8081/
登录web网页初始化
http://10.0.0.152:8081/
需要在右上角点Sign in 进行登录才能进行管理
查看初始密码
root@ubuntu2204:~# cat /usr/local/sonatype-work/nexus3/admin.password
e8dddce8-b273-4832-9a5d-468e4dd04b65
安装提示重设密码
启用匿名访问将默认允许未经授权的下载,浏览和搜索存储库内容,可以通过编辑分配给匿名用户的角
色来更改匿名用户的权限。
生产建议打开匿名访问功能,无需登录就可以下载资源
验证默认仓库
Maven的仓库优化配置
默认仓库maven-central使用国外仓库地址,可修改为如下的国内镜像地址进行加速
http://maven.aliyun.com/nexus/content/groups/public
修改为国内镜像,参考阿里云
http://maven.aliyun.com/nexus/content/groups/public
maven项目仓库获取
maven 安装配置
节点确保已经安装jdk
root@ubuntu2204:~# wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz
root@ubuntu2204:~# tar -xf apache-maven-3.9.4-bin.tar.gz -C /usr/local/
root@ubuntu2204:~# ln -s /usr/local/apache-maven-3.9.4/ /usr/local/maven
root@ubuntu2204:~# echo 'PATH=/usr/local/maven/bin:$PATH' >/etc/profile.d/maven.sh
root@ubuntu2204:~# echo 'export MAVEN_HOME=/usr/local/maven' >> /etc/profile.d/maven.sh
root@ubuntu2204:~# . /etc/profile.d/maven.sh
root@ubuntu2204:~# echo $PATH
/usr/local/maven/bin:/usr/local/tomcat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/jdk/bin:/usr/local/jdk/bin:/usr/local/jdk/bin
root@ubuntu2204:~# mvn -v
Apache Maven 3.9.4 (dfbb324ad4a7c8fb0bf182e6d91b0ae20e3d2dd9)
Maven home: /usr/local/maven
Java version: 1.8.0_371, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_371/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-88-generic", arch: "amd64", family: "unix"
maven仓库加速
root@ubuntu2204:~# vim /usr/local/maven/conf/settings.xml
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>Nexus</name>
<url>http://10.0.0.152:8081/repository/maven-central/</url>
<!--
<blocked>true</blocked>
-->
</mirror>
编译 java 程序 Jpress 验证nexus
root@ubuntu2204:~/data# git clone https://gitee.com/JPressProjects/jpress.git
root@ubuntu2204:~/data# cd jpress/
root@ubuntu2204:~/data/jpress# mvn clean install package -Dmaven.test.skip=true
root@ubuntu2204:~/data/jpress# ls starter-tomcat/target/
classes maven-archiver starter-tomcat-5.0 starter-tomcat-5.0-classes.jar starter-tomcat-5.0.war