一,遠程linux機器上安裝java15(如已安裝,跳過此步)
說明:演示用的linux機器ip: 192.168.1.47
1,下載:
[root@blog ~]# cd /usr/local/source [root@blog source]# mkdir jdk [root@blog source]# cd jdk [root@blog jdk]# wget https://download.oracle.com/otn-pub/java/jdk/15+36/779bf45e88a44cbd9ea6621d33e33db1/jdk-15_linux-x64_bin.tar.gz?AuthParam=1600661691_2c068f0678a8396b65cf132c02446e2a --2020-09-21 12:13:38-- https://download.oracle.com/otn-pub/java/jdk/15+36/779bf45e88a44cbd9ea6621d33e33db1/jdk-15_linux-x64_bin.tar.gz?AuthParam=1600661691_2c068f0678a8396b65cf132c02446e2a Resolving download.oracle.com (download.oracle.com)... 23.211.96.11 Connecting to download.oracle.com (download.oracle.com)|23.211.96.11|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 188017890 (179M) [application/x-gzip] Saving to: ‘jdk-15_linux-x64_bin.tar.gz?AuthParam=1600661691_2c068f0678a8396b65cf132c02446e2a’ jdk-15_linux-x64_bin.tar.gz?AuthParam=16006 100%[==========================================================================================>] 179.31M 12.0MB/s in 14s 2020-09-21 12:13:52 (12.7 MB/s) - ‘jdk-15_linux-x64_bin.tar.gz?AuthParam=1600661691_2c068f0678a8396b65cf132c02446e2a’ saved [188017890/188017890] [root@blog jdk]# ls 'jdk-15_linux-x64_bin.tar.gz?AuthParam=1600661691_2c068f0678a8396b65cf132c02446e2a' [root@blog jdk]# mv jdk-15_linux-x64_bin.tar.gz\?AuthParam\=1600661691_2c068f0678a8396b65cf132c02446e2a jdk-15_linux-x64_bin.tar.gz
2,解壓
[root@blog jdk]# tar -zxvf jdk-15_linux-x64_bin.tar.gz
3,移動到安裝目錄
[root@blog jdk]# mv jdk-15 /usr/local/soft/
4,配置環境變量:
編輯profile文件,把命令保存到文件中
[root@blog jdk]# vi /etc/profile
添加以下命令:
export JAVA_HOME=/usr/local/soft/jdk-15 export CLASSPATH=.:$JAVA_HOME/lib export PATH=$PATH:$JAVA_HOME/bin
使生效:
[root@blog jdk]# source /etc/profile
5,檢查安裝效果:
[root@blog jdk]# java --version java 15 2020-09-15 Java(TM) SE Runtime Environment (build 15+36-1562) Java HotSpot(TM) 64-Bit Server VM (build 15+36-1562, mixed mode, sharing)
說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest
對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/
說明:作者:劉宏締 郵箱: 371125307@qq.com
二,遠程服務器(192.168.1.47)端配置啟動jar的腳本:
1,創建腳本:
[root@blog java]# mkdir /data/java/tools [root@blog java]# cd tools [root@blog tools]# vi startadmin.sh [root@blog tools]# chmod +x startadmin.sh
腳本內容:
[root@blog tools]# more startadmin.sh #!/bin/bash export BUILD_ID=dontKillme WORKSPACE=/data/java/jar JDK_PATH=/usr/local/soft/jdk-15/bin/java JAR_NAME=demo-0.0.1-SNAPSHOT.jar PID=`ps -ef | grep ${JAR_NAME} | grep -v grep | grep -v startup | awk '{print \$2}'` echo $PID; if [ ! "$PID" ] ;then echo "進程不存在" else echo "進程存在,殺死進程PID$PID" kill -9 $PID fi echo "服務啟動開始" nohup ${JDK_PATH} -jar ${WORKSPACE}/${JAR_NAME} &
2,啟動腳本上傳一個名為
demo-0.0.1-
SNAPSHOT.jar的jar包到/data/java/jar目錄
運行啟動jar包的腳本:
[root@blog tools]# /data/java/tools/startadmin.sh 進程不存在 服務啟動開始 [root@blog tools]# nohup: appending output to ‘nohup.out'
3,查看端口:檢查是否生效?
[root@blog tools]# ss -lntp | grep 8080 LISTEN 0 100 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=11559,fd=11))
可以看到進程已啟動
4,通過瀏覽器測試訪問:
http://192.168.1.47:8080/home/home
頁面返回:
this is home/home page
說明已生效
三,遠程服務器(192.168.1.47)配置sudo
1,編輯sudo文件
[root@blog ~]# visudo
在sudo的規則最后添加下面這一行
webop ALL=(ALL) NOPASSWD:/data/java/tools/startadmin.sh
2,測試sudo規則是否生效?切換到webop賬號后測試
[webop@blog ~]$ ps auxfww | grep jar | grep -v grep root 11559 0.4 1.2 7728268 193372 pts/3 Sl 14:47 0:07 /usr/local/soft/jdk-15/bin/java -jar /data/java/jar/demo-0.0.1-SNAPSHOT.jar [webop@blog ~]$ sudo /data/java/tools/startadmin.sh
進程存在,殺死進程PID11559
服務啟動開始
[webop@blog ~]$ ps auxfww | grep jar | grep -v grep root 12314 73.4 1.0 7726220 170800 pts/4 Sl 15:15 0:05 /usr/local/soft/jdk-15/bin/java -jar /data/java/jar/demo-0.0.1-SNAPSHOT.jar
進程id發生了變化,說明規則已生效
四,在jenkins服務器上進行配置免密登錄
1,生成rsa密鑰
[root@localhost ~]# ssh-keygen -m PEM -t rsa -b 4096
2,復制公鑰到遠程服務器
[root@localhost ~]# ssh-copy-id -p 10108 -i .ssh/id_rsa.pub webop@192.168.1.47
3,測試免密登錄:
[root@localhost ~]# ssh -p '10108' webop@192.168.1.47 Welcome to Alibaba Cloud Elastic Compute Service ! Activate the web console with: systemctl enable --now cockpit.socket Last login: Mon Sep 21 15:40:06 2020 from 123.124.125.107 [webop@blog ~]$
無需輸入密碼即可登錄,說明用密鑰實現免密登錄已生效
五,jenkins上安裝Publish Over SSH插件
一,安裝插件:
選擇 Publish Over SSH
點 直接安裝 按鈕
六,jenkins上配置ssh服務器
1,manage jenkins->configure system
添加一台服務器:
六,在jenkins的項目中上配置通過ssh發布jar包到遠程服務器:
1, 新建item->項目名稱: profilemaven,選擇:構建一個maven項目
然后點確定
2,對項目做配置:
在github項目中,輸入項目url
構建后操作中選擇Send build artifacts Over SSH
添加上要傳輸的jar文件
七,測試效果
構建完成后查看控制台輸出:
channel stopped SSH: Connecting from host [localhost.localdomain] SSH: Connecting with configuration [47] ... SSH: EXEC: STDOUT/STDERR from command [sudo /data/java/tools/startadmin.sh] ... 進程存在,殺死進程PID12314 服務啟動開始 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.3.4.RELEASE) 2020-09-21 16:59:27.806 INFO 12662 --- [ main] com.profile.demo.DemoApplication :
然后從服務端可以正常訪問
八,查看Jenkins版本
在登錄后首頁的右下角,可以看到當前的版本:2.257