服務-tomcat

szlhwei發表於2024-07-06

目錄
  • 指令碼安裝JDK
  • 二進位制安裝tomcat
  • tomcat檔案結構和組成
  • 部署java應用
          • 範例:部署基於JAVA的部落格系統JPress
          • 範例:關閉8005埠

指令碼安裝JDK

image-20240704085742962
Oracle JDK,Java SE 8u201/202 之後的版本商用需要收費。
OpenJDK是Sun公司釋出的JDK開源版本。
##指令碼一鍵安裝
##包放到/root目錄下
[root@anolis-32 ~]$cat install_jdk.sh
#!/bin/bash
set -o nounset
set -o errexit

DIR="/root"
JDK_FILE="jdk-8u371-linux-x64.tar.gz"
JDK_DIR="/usr/local"

install_jdk(){
if [ ! -f "$DIR/$JDK_FILE" ];then
	echo  "$JDK_FILE 不存在"
	exit;
elif [ -d $JDK_DIR/jdk ];then
	echo  "JDK 已經安裝"
	exit
else
	[ -d "$JDK_DIR" ] || mkdir -pv $JDK_DIR
fi
tar xf $DIR/$JDK_FILE -C $JDK_DIR
cd $JDK_DIR && ln -s jdk* jdk
cat > /etc/profile.d/jdk.sh <<EOF
export JAVA_HOME=$JDK_DIR/jdk
export PATH=\$PATH:\$JAVA_HOME/bin
#export JRE_HOME=\$JAVA_HOME/jre
#export CLASSPATH=.:\$JAVA_HOME/lib/:\$JRE_HOME/lib/
EOF
. /etc/profile.d/jdk.sh
java -version && echo  "JDK 安裝完成" || { echo  "JDK 安裝失敗" ; exit; }
}
install_jdk

二進位制安裝tomcat

##安裝tomcat 前必須先部署JDK
##官網:https://tomcat.apache.org/download-80.cgi
##清華:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/


[root@anolis31 ~]$cat install_tomcat.sh
#!/bin/bash
set -o nounset
set -o errexit
##檔案和執行指令碼都放到/root下執行
TOMCAT_FILE="apache-tomcat-9.0.75.tar.gz"
JDK_DIR="/usr/local"
TOMCAT_DIR="/usr/local"
DIR="/root"

install_tomcat(){
if ! [ -f "$DIR/$TOMCAT_FILE" ];then
	echo "$TOMCAT_FILE 檔案不存在"
	exit;
elif [ -d $TOMCAT_DIR/tomcat ];then
	echo "TOMCAT 已經安裝"
	exit
else
	[ -d "$TOMCAT_DIR" ] || mkdir -pv $TOMCAT_DIR
fi
tar xf $DIR/$TOMCAT_FILE -C $TOMCAT_DIR
cd $TOMCAT_DIR && ln -s apache-tomcat-*/ tomcat
echo "PATH=$TOMCAT_DIR/tomcat/bin:"'$PATH' > /etc/profile.d/tomcat.sh
id tomcat &> /dev/null || useradd -r -s /sbin/nologin tomcat
cat > $TOMCAT_DIR/tomcat/conf/tomcat.conf <<EOF
JAVA_HOME=$JDK_DIR/jdk
EOF
chown -R tomcat.tomcat $TOMCAT_DIR/tomcat/
cat > /lib/systemd/system/tomcat.service <<EOF
[Unit]
Description=Tomcat
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=$TOMCAT_DIR/tomcat/conf/tomcat.conf
ExecStart=$TOMCAT_DIR/tomcat/bin/startup.sh
ExecStop=$TOMCAT_DIR/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now tomcat.service &> /dev/null
systemctl is-active tomcat.service &> /dev/null && echo "TOMCAT 安裝完成" || {
echo "TOMCAT 安裝失敗" ; exit; }
}
install_tomcat

#############################################################
##安裝後驗證,本機驗證和外網訪問
[root@anolis31 ~]$ss -ntl | grep 8080
LISTEN 0      100                     *:8080            *:*
##訪問成功
[root@anolis-32 ~]$curl 10.0.0.31:8080 &> /dev/null ;echo $?
0

tomcat檔案結構和組成

bin			服務啟動、停止等程式
lib			庫目錄
logs		日誌目錄

conf		配置檔案
webapps		部署目錄
work		部署後,提前預熱訪問,升級後,刪除此目錄資料才能更新

##catalina.sh為程式工具包,重進終端可以直接輸入命令
[root@anolis31 ~]$bash /usr/local/tomcat/bin/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
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



部署java應用

 WebApp應用的歸檔格式.war,.jar
 war格式,部署到Tomcat的webapps目錄下,會自動解包展開和部署上線。
 #conf/server.xml中檔案配置
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

範例:部署基於JAVA的部落格系統JPress
##下載war包,複製到webapps目錄下,注意ROOT目錄是放預設內容的,war包到webapps後會自動部署,然後生成軟連線
##jpress-v5.0.7版本需要放ROOT目錄下,其它版本未知

##將tomcat停止後,將webapps專案ROOT刪除,將jpress改名為ROOT.war,這樣啟動時就生成ROOT預設目錄了
[root@anolis31 webapps]$systemctl stop tomcat.service
[root@anolis31 webapps]$rm -rf ROOT

[root@anolis31 ~]$cp jpress-v5.0.7.war /usr/local/tomcat/webapps
[root@anolis31 webapps]$mv jpress-v5.0.7.war ROOT.war

[root@anolis31 webapps]$systemctl start tomcat
[root@anolis31 webapps]$ll
總用量 124884
drwxr-x--- 6 tomcat tomcat        86 7月   1 22:10 ROOT
-rw-r--r-- 1 root   root   127880979 7月   1 22:10 ROOT.war

##伺服器安裝資料庫,開機自啟,進行配置
[root@anolis-32 ~]$syum -y install mariadb-server
[root@anolis-32 ~]$systemctl enable --now mariadb.service
[root@anolis-32 ~]$mysql -e 'create database jpress;'
[root@anolis-32 ~]$mysql -e "create user jpress@'%' identified by '123';"
[root@anolis-32 ~]$mysql -e "grant all on jpress.* to jpress@'%';"

##瀏覽器訪問http://10.0.0.31:8080/,出現安裝頁面,配置資料庫後可以使用
##釋出文章,上傳圖片,釋出評論都可以了,伺服器也能查到圖片
[root@anolis31 webapps]$ll ROOT/attachment/20240701/a366b8d8771046d692245741e74c2d82.png
-rw-r--r-- 1 tomcat tomcat 472476 7月   1 22:11 ROOT/attachment/20240701/a366b8d8771046d692245741e74c2d82.png

範例:關閉8005埠
##8005是Tomcat的管理埠,預設監聽在127.0.0.1上。無需驗證就可傳送SHUTDOWN (大小寫敏感)這個字串,tomcat接收到後就會關閉此Server。
##設為-1,將關閉此功能,此行不能被註釋,否則無法啟動tomcat。

[root@anolis31 tomcat]$sed -i.bak '/SHUTDOWN/s/8005/-1/' /usr/local/tomcat/conf/server.xml

相關文章