查看OpenJDK11安裝包列表
yum list|grep java-11-openjdk
執(zhí)行安裝命令。
yum install -y java-11-openjdk.x86_64
查看安裝成功的版本。
[root@localhost ~]# java -versionopenjdk version "11.0.21" 2023-10-17 LTSOpenJDK Runtime Environment (Red_Hat-11.0.21.0.9-1.el7_9) (build 11.0.21+9-LTS)OpenJDK 64-Bit Server VM (Red_Hat-11.0.21.0.9-1.el7_9) (build 11.0.21+9-LTS, mixed mode, sharing)
設(shè)置JAVA_HOME。
通過(guò)命令查找java安裝的真實(shí)路徑,使用which java找到的是軟鏈接,需要通過(guò)ll命令一層層查找真實(shí)路徑,我們這邊最終/usr/bin/java真實(shí)的路徑為 /usr/lib/jvm/java-11-openjdk-11.0.21.0.9-1.el7_9.x86_64/bin/java,那么我們的JAVA_HOME就是java的安裝目錄/usr/lib/jvm/java-11-openjdk-11.0.21.0.9-1.el7_9.x86_64,去掉 末尾的 /bin/java 。
[root@localhost ~]# which java/usr/bin/java[root@localhost ~]# ll /usr/bin/javalrwxrwxrwx 1 root root 22 Jan 2 16:13 /usr/bin/java -> /etc/alternatives/java[root@localhost ~]# ll /etc/alternatives/javalrwxrwxrwx 1 root root 64 Jan 2 16:13 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-11.0.21.0.9-1.el7_9.x86_64/bin/java[root@localhost ~]# ll /usr/lib/jvm/java-11-openjdk-11.0.21.0.9-1.el7_9.x86_64/bin/java-rwxr-xr-x 1 root root 13192 Nov 15 00:51 /usr/lib/jvm/java-11-openjdk-11.0.21.0.9-1.el7_9.x86_64/bin/java
編輯/etc/profile文件,添加JAVA_HOME配置,并使用source /etc/profile命令使環(huán)境配置生效,不需要配置CLASS_APTH, rt.jar, tools.jar。
vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.21.0.9-1.el7_9.x86_64export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
定義運(yùn)行服務(wù)需要的參數(shù),服務(wù)名稱(chēng)、服務(wù)程序路徑、日志文件等,這里可以感覺(jué)自己的需要來(lái)定義,包括可以添加java -jar的運(yùn)行參數(shù)等。
#!/bin/bashAPP_NAME="gitegg-application.jar" # 命令號(hào)提示服務(wù)名APP_PATH="/opt/server/gitegg-application.jar" # jar包文件路徑LOG_FILE="/opt/server/gitegg-application.log" # 日志輸出文件路徑,一般我們服務(wù)會(huì)記錄日志,如果不想在這里輸出,那么可以填寫(xiě) /dev/null
定義命令腳本運(yùn)行提示,如果輸入的命令格式錯(cuò)誤,這里可以給出正確的命令格式等。
#使用說(shuō)明,提示輸入?yún)?shù)usage() { echo "Usage: sh start_server.sh [start|stop|restart|status]" exit 1}
定義檢查服務(wù)是否正在運(yùn)行的函數(shù)。
#檢查服務(wù)是否正在運(yùn)行is_running(){ pid=`ps -ef|grep $APP_PATH|grep -v grep|awk '{print $2}' `if [ -z "${pid}" ]; then return 1 else return 0 fi}
定義啟動(dòng)服務(wù)的函數(shù)。
#啟動(dòng)服務(wù)start(){ is_running if [ $? -eq "0" ]; then echo "${APP_NAME} is already running. pid=${pid} ." else nohup java -jar $APP_PATH > $LOG_FILE 2>&1 & fi}
定義停止服務(wù)的函數(shù)。
#停止服務(wù)stop(){ is_running if [ $? -eq "0" ]; then kill -9 $pid else echo "${APP_NAME} is not running" fi}
定義查看服務(wù)運(yùn)行狀態(tài)的函數(shù)。
#顯示運(yùn)行狀態(tài)status(){ is_running if [ $? -eq "0" ]; then echo "${APP_NAME} is running. Pid is ${pid}" else echo "${APP_NAME} is NOT running." fi}
定義服務(wù)重啟函數(shù)。
#重啟服務(wù)restart(){ stop start}
腳本接收參數(shù),根據(jù)參數(shù)執(zhí)行對(duì)應(yīng)的命令函數(shù)。
#選擇要運(yùn)行的命令case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; *) usage ;;esac
設(shè)置腳本執(zhí)行權(quán)限,填寫(xiě)自己腳本文件的實(shí)際路徑。
chmod +x /opt/server/start_server.sh
#!/bin/bashAPP_NAME="gitegg-application.jar" # 命令號(hào)提示服務(wù)名APP_PATH="/opt/server/gitegg-application.jar" # jar包文件路徑LOG_FILE="/opt/server/gitegg-application.log" # 日志輸出文件路徑,一般我們服務(wù)會(huì)記錄日志,如果不想在這里輸出,那么可以填寫(xiě) /dev/null #使用說(shuō)明,提示輸入?yún)?shù)usage() { echo "Usage: sh start_server.sh [start|stop|restart|status]" exit 1} #檢查服務(wù)是否正在運(yùn)行is_running(){ pid=`ps -ef|grep $APP_PATH|grep -v grep|awk '{print $2}' `if [ -z "${pid}" ]; then return 1 else return 0 fi} #啟動(dòng)服務(wù)start(){ is_running if [ $? -eq "0" ]; then echo "${APP_NAME} is already running. pid=${pid} ." else nohup java -jar $APP_PATH > $LOG_FILE 2>&1 & fi} #停止服務(wù)stop(){ is_running if [ $? -eq "0" ]; then kill -9 $pid else echo "${APP_NAME} is not running" fi} #顯示運(yùn)行狀態(tài)status(){ is_running if [ $? -eq "0" ]; then echo "${APP_NAME} is running. Pid is ${pid}" else echo "${APP_NAME} is NOT running." fi} #重啟服務(wù)restart(){ stop start} #選擇要運(yùn)行的命令case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; *) usage ;;esac
在CentOS中的服務(wù)是由systemd管理的,可以通過(guò)systemctl命令進(jìn)行服務(wù)運(yùn)行的相關(guān)操作。
新增管理服務(wù)gitegg-server.service,服務(wù)名稱(chēng)可以自己定義,此服務(wù)放到 /lib/systemd/system/ 目錄。
vi /lib/systemd/system/gitegg-server.service
編寫(xiě)服務(wù)內(nèi)容。
[Unit] Description=gitegg-server After=docker.socket early-docker.target network.targetWants=network-online.target docker.serviceRequires=docker.socket [Service] Type=forking ExecStart=/opt/server/start_server.sh startExecStop=/opt/server/start_server.sh stop ExecSatus=/opt/server/start_server.sh status ExecRestart=/opt/server/start_server.sh restart [Install] WantedBy=multi-user.target
保存并重新加載配置。
systemctl daemon-reload
設(shè)置服務(wù)開(kāi)機(jī)啟動(dòng)。
systemctl enable gitegg-server.service
可以直接使用systemctl 命令操作服務(wù)。
# 啟動(dòng)服務(wù)systemctl start gitegg-server.service# 關(guān)閉服務(wù)systemctl stop gitegg-server.service# 查看服務(wù)狀態(tài)systemctl status gitegg-server.service# 重啟服務(wù)systemctl restart gitegg-server.service
本文鏈接:http://www.www897cc.com/showinfo-26-57925-0.html告別Java -Jar啟動(dòng)!告訴你啟動(dòng)單機(jī)SpringBoot服務(wù)的正確操作方式
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com