1. ?選型
1.1. 🎯中間件
java web中間件 | 說明 |
tomcat | 組件,功能多 |
jetty | 精簡,功能少一些 |
...... | |
weblogic | 使用oracle數據庫配合weblogic(商業) |
國產:東方通(TongWEB) |
1.2. 📌jdk
jdk選型 | 說明 |
jdk(oracle jdk) | 商業版,jdk 202之前免費,211之后收費 |
openjdk | 開源版本(yum,apt源里有) |
廠商jdk 華為 畢昇jdk | 根據廠商選擇 |
- 經典jdk版本是jdk8
- jdk 11 17 21
LTS 長期支持版本
Java SE 11 (LTS)
Java SE 17 (LTS)
Java SE 21 (LTS)
- 具體使用哪個版本?
- 根據代碼要求
1.3. 🐹tomcat版本
tomcat版本 | jdk版本 |
tomcat 9 | jdk 8以上 |
tomcat 10 | jdk 11以上 |
tomcat 11 | jdk 17以上 |
2. ?急速上手指南
2.1. 📝環境準備
角色 | 主機 | ip |
jdk oracle jdk | web03 | 10.0.0.9/172.16.1.9 |
openjdk(11) | web04 | 10.0.0.10/172.16.1.10 |
2.2. 💡安裝jdk(web03)
1.安裝jdk開發環境
rpm -ivh jdk-8u441-linux-x64.rpm2.安裝完檢查
[root@web03 ~]# java -version
java version "1.8.0_441"
Java(TM) SE Runtime Environment (build 1.8.0_441-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.441-b07, mixed mode)
2.3. 🐹安裝tomcat(web03)
1.解壓
tar xf apache-tomcat-9.0.106.tar.gz -C /app/tools/2.創建軟鏈接
ln -s /app/tools/apache-tomcat-9.0.106/ /app/tools/tomcat3.檢查tomcat版本
[root@web03 ~]# /app/tools/tomcat/bin/version.sh
Using CATALINA_BASE: /app/tools/tomcat
Using CATALINA_HOME: /app/tools/tomcat
Using CATALINA_TMPDIR: /app/tools/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /app/tools/tomcat/bin/bootstrap.jar:/app/tools/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Server version: Apache Tomcat/9.0.106
Server built: Jun 5 2025 19:02:30 UTC
Server number: 9.0.106.0
OS Name: Linux
OS Version: 4.19.90-52.22.v2207.ky10.x86_64
Architecture: amd64
JVM Version: 1.8.0_441-b07
JVM Vendor: Oracle Corporation4.檢查8080端口是否被占用
ss -lntup | grep 80805.啟動tomcat
/app/tools/tomcat/bin/startup.sh6.檢查
ps -ef | grep tomcat
ss -lntup | grep 8080
2.4. 🌏瀏覽器訪問
http://10.0.0.9:8080
2.5. 💡安裝openjdk(web04)
1.安裝openjdk 11
yum -y install java-11-openjdk java-11-openjdk-devel2.安裝完檢查
[root@web04 ~]# java -version
openjdk version "11.0.27" 2025-04-15
OpenJDK Runtime Environment BiSheng (build 11.0.27+6)
OpenJDK 64-Bit Server VM BiSheng (build 11.0.27+6, mixed mode, sharing)
[root@web04 ~]#
2.6. 🐹安裝tomcat(web04)
1.解壓
tar xf apache-tomcat-9.0.106.tar.gz -C /app/tools/2.創建軟鏈接
ln -s /app/tools/apache-tomcat-9.0.106/ /app/tools/tomcat3.檢查tomcat版本
[root@web04 ~]# /app/tools/tomcat/bin/version.sh
Using CATALINA_BASE: /app/tools/tomcat
Using CATALINA_HOME: /app/tools/tomcat
Using CATALINA_TMPDIR: /app/tools/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /app/tools/tomcat/bin/bootstrap.jar:/app/tools/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
Server version: Apache Tomcat/9.0.106
Server built: Jun 5 2025 19:02:30 UTC
Server number: 9.0.106.0
OS Name: Linux
OS Version: 4.19.90-52.22.v2207.ky10.x86_64
Architecture: amd64
JVM Version: 11.0.27+6
JVM Vendor: BiSheng4.檢查8080端口是否被占用
ss -lntup | grep 80805.啟動tomcat
/app/tools/tomcat/bin/startup.sh6.檢查
ps -ef | grep tomcat
ss -lntup | grep 8080
3. ?tomcat目錄
目錄 | 主要文件 | 說明 |
bin | tomcat的管理腳本 startup.sh 啟動腳本 shutdow.sh 關閉腳本 | catalina.sh做jvm優化修改這個文件 |
conf | server.xml 主要配置文件 logging.properties日志功能配置文件 | server.xml主要配置 |
lib | lib(library) tomcat依賴的目錄 | 一般是.jar結尾 |
logs | 日志 catalina.out應用日志,業務日志 | 一般看業務/應用日志.關鍵詞error,failed,exception(異常) |
webapps | 站點目錄 | |
work | 加載jvm中的文件信息 |
4. ?systemctl管理tomcat
1.編寫service文件
[root@web03 ~]# systemctl cat tomcat.service
# /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[Install]
WantedBy=multi-user.target2.重新加載service文件
[root@web03 ~]# systemctl daemon-reload3.關閉原來的java進程
[root@web03 ~]# pkill java4.設置下次開機啟動tomcat
[root@web03 ~]# systemctl enable tomcat5.啟動tomcat
[root@web03 ~]# systemctl start tomcat6.查看進行
ps -ef | grep java
ss -lntup | grep java
5. ?java業務部署
- java的源代碼-->編譯(打包)-->war包或jar包
- war包一般需要tomcat jdk tomcat+war
- jar包直接運行(jar包內部塞了一個tomcat或jetty......)jdk+jar OK
- java -jar xxx.jar 啟動應用(業務)其他選項
5.1. 🐹war包部署
1.將war包放到站點目錄下
/app/tools/tomcat/webapps/2.查看日志
tail -f /app/tools/tomcat/logs/catalina.out02-Jul-2025 12:18:48.584 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployWAR 正在部署web應用程序存檔文件[/app/tools/apache-tomcat-9.0.106/webapps/memtest.war]
02-Jul-2025 12:18:48.669 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployWAR web應用程序存檔文件[/app/tools/apache-tomcat-9.0.106/webapps/memtest.war]的部署已在[84]ms內完成3.瀏覽器訪問
http://10.0.0.9:8080/memtest/meminfo.jsp4.查看work目錄
tree -F /app/tools/tomcat/work/
5.2. 🍀jar包部署
- 運行的時候在jar包所在目錄(相對路徑)
#前臺運行(測試)
java -jar -Dfile.encoding=UTF-8 nginxWebUI-3.4.0.jar --server.port=8848 --project.home=/app/code/ngx/#后臺運行(正式)或交給systemctl運行 nohup java -jar -Dfile.encoding=UTF-8 nginxWebUI-3.4.0.jar --server.port=8848 --project.home=/app/code/ngx/ &#忘記密碼
1.刪除h2.mv.db文件
2.kill pid結束java進程
3.重新運行jar包
5.3. 🔄開機自啟動
- 步驟
1.書寫jar包管理腳本
bash /server/scripts/ngxwebui.sh start
運行nohup java -jar -Dfile.encoding=UTF-8 nginxWebUI-3.4.0.jar --server.port=8848 --project.home=/app/code/ngx/ &bash /server/scripts/ngxwebui.sh stop
關閉指定的服務bash /server/scripts/ngxwebui.sh restart
先關閉然后再啟動服務bash /server/scripts/ngxwebui.sh status
檢查是否運行2.systemctl調用腳本
[Unit]
Description=ngx webui
After=network.target
[Service]
Type=forking
#EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=bash /server/scripts/ngxwebui.sh start
ExecStop=bash /server/scripts/ngxwebui.sh stop
ExecRestart=bash /server/scripts/ngxwebui.sh restart
[Install]
WantedBy=multi-user.target
- 腳本
#!/bin/bash
##############################################################
# File Name:ngxwebui.sh
# Version:V1.0
# Author:zbl
# Organization:zhubaolin.blog.csdn.net
# Desc:
###############################################################1.vars
service=nginxWebUI-3.4.0.jar
port=8848
dir=/app/code/ngx/
choose=$1
logfile=${dir}nginxWebUI.log
time=`date +%F_%T`
jar_file=/app/code/ngx/${service}#2.function
function logmsg() {msg="$*"echo "${msg}" >> ${logfile}
}function srv_start() {pid=`ps -ef | grep -w nginxWebUI | grep -v grep | awk '{print $2}'`pidcount=`ps -ef | grep -w nginxWebUI | grep -v grep | awk '{print $2}' | wc -l`if [ -f ${jar_file} ];thenif [ -z ${pid} ];thencd ${dir}nohup java -jar -Dfile.encoding=UTF-8 ${service} --server.port=${port} --project.home=${dir} >/dev/null 2>&1 &if [ $? -eq 0 ];thenlogmsg [${time}] start [ok] ${service}elselogmsg [${time}] start [filed] ${service}fifielseexitfireturn $?
}function srv_stop() {pid=`ps -ef | grep -w nginxWebUI | grep -v grep | awk '{print $2}'`pidcount=`ps -ef | grep -w nginxWebUI | grep -v grep | awk '{print $2}' | wc -l`if [ ${pidcount} -gt 0 ];thenkill ${pid}if [ $? -eq 0 ];thenlogmsg [${time}] stop [ok] [${service}]elselogmsg [${time}] stop filed [${service}]fifi
}function srv_restart() {srv_stopsleep 1srv_start
}function srv_status() {pid=`ps -ef | grep -w nginxWebUI | grep -v grep | awk '{print $2}'`pidcount=`ps -ef | grep -w nginxWebUI | grep -v grep | awk '{print $2}' | wc -l`if [ ${pidcount} -ge 1 ];thenecho "running pid:[${pid}] ${service}"logmsg [${time}] running pid:[${pid}] ${service}elseecho "stoped ${service}"logmsg [${time}] stoped ${service}fi
}#3.case
case "${choose}" instart) srv_start ;;stop) srv_stop ;;restart) srv_restart ;;status) srv_status ;;*) echo input error
esac
5.4. 🌏zrlog部署
tomcat處理動態,靜態,處理動態請求性能好
環境 | 說明 |
web03 | jdk+tomcat |
db01 | mariadb(zrlog庫,zrlog用戶 密碼) |
1.準備數據庫
create database zrlog;
grant all on zrlog.* to 'zrlog'@'172.16.1.%' identified by 'lidao';2.部署war包
mv zrlog.war /app/tools/tomcat/webapps/3.瀏覽器訪問
用戶界面:
http://10.0.0.9:8080/zrlog
管理界面:
http://10.0.0.9:8080/zrlog/admin/login
6. ?部署(我的世界)
1.在官網下載我的世界jar包
https://piston-data.mojang.com/v1/objects/05e4b48fbc01f0385adb74bcff9751d34552486c/server.jar2.放到linux服務器上運行
nohup java -Xmx1024M -Xms1024M -jar server.jar nogui &