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