一、背景
我開(kāi)發(fā)了一個(gè)Java代碼,現(xiàn)在想部署到服務(wù)器上,當(dāng)然可以使用Jenkins部署,但是Jenkins配置和維護(hù)成本比較高,所以我今天分享的是輕量級(jí)的一鍵部署腳本
演示:本地Window的Java代碼 -> Vmware虛擬機(jī)Centos7上
二、我的項(xiàng)目結(jié)構(gòu)
如果你的項(xiàng)目結(jié)構(gòu)不同,可以根據(jù)項(xiàng)目結(jié)構(gòu)自行調(diào)整
三、操作步驟
1、對(duì)項(xiàng)目進(jìn)行Maven編譯
這里要注意你的腳本位置在哪里,我的腳本位置在項(xiàng)目的doc/script 目錄下,所以執(zhí)行下面之前,需要執(zhí)行?cd ../../ 跳轉(zhuǎn)到項(xiàng)目的根目錄
# 跳轉(zhuǎn)到項(xiàng)目根目錄
cd ../../
mvn clean package -DskipTests=true
2、部署到遠(yuǎn)程服務(wù)器
這里使用scp命令,當(dāng)然首次執(zhí)行會(huì)需要驗(yàn)證,我們只需要正確的填寫登錄的用戶名密碼即可
# 部署到遠(yuǎn)程服務(wù)器
scp user-center/target/user-center-0.0.1-SNAPSHOT.jar root@192.168.31.113:/usr/local/user-center.jar
這一步是要輸入密碼
然后輸入服務(wù)器的root密碼,然后按回車,jar包文件就同步到服務(wù)器上了,如果需要跳過(guò)輸入密碼這一步,可以看下面的免密登錄ssh
之后我們?nèi)シ?wù)器中看看,文件的確已經(jīng)上傳到服務(wù)器上了
3、生成免密登錄的SSH
a. 本機(jī)Window執(zhí)行(如果已經(jīng)生成過(guò)了就跳過(guò)這一步)
ssh-keygen -t rsa
b. 第二步在服務(wù)器的root目錄下創(chuàng)建.ssh 文件夾(如果已經(jīng)生成過(guò)了就跳過(guò)這一步)
mkdir .ssh
c 第三步把Window上的id_rsa.pub 內(nèi)容拷貝到/root/.ssh/authorized_keys 中
這一步千萬(wàn)要注意,不是把這個(gè)id_rsa.pub 文件拷貝到/root/.ssh/authorized_keys 這個(gè)目錄
authorized_keys 是一個(gè)文件?。?!
authorized_keys 是一個(gè)文件!?。?/p>
authorized_keys 是一個(gè)文件?。。?/p>
重要的事情說(shuō)3遍
d 第四步 修改authorized_keys 文件的執(zhí)行權(quán)限
chmod 700 authorized_keys
e 第五步 重啟sshd應(yīng)用文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-809271.html
systemctl restart sshd
4、編寫服務(wù)器端Java的啟動(dòng)腳本
這里我直接上代碼了,大概意思,先找到原先已經(jīng)運(yùn)行的user-center項(xiàng)目,kill 掉,再執(zhí)行啟動(dòng)命令,等7秒鐘之后,再檢查一下程序是否正常啟動(dòng)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-809271.html
pid=$(ps -ef | grep user-center | grep -v grep | awk '{print $2}')
if [ ! -z "$pid" ]; then
echo "當(dāng)前運(yùn)行user-center服務(wù)的pid是: ${pid}"
kill -9 ${pid}
echo -e "已結(jié)束當(dāng)前user-center服務(wù)~\n"
else
echo -e "目前未運(yùn)行user-center服務(wù)!\n"
fi
nohup java -jar -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m -Xmn200m -Xss256k -Dspring.profiles.active=test user-center.jar >out.log 2>&1 &
sleep 7
pid=$(ps -ef | grep user-center | grep -v grep | awk '{print $2}')
if [ ! -z "$pid" ]; then
echo "user-center啟動(dòng)成功, pid是: ${pid}"
else
echo -e "user-center啟動(dòng)失敗!\n"
fi
5、完整的本地端腳本如下
#!/bin/bash
cd ../../
mvn clean package -DskipTests=true
# 進(jìn)入目錄
cd ../../
# 部署到遠(yuǎn)程服務(wù)器
scp goods-center/target/goods-center-0.0.1-SNAPSHOT.jar root@192.168.31.112:/usr/local/goods-center.jar
# 登錄遠(yuǎn)程機(jī)器
ssh root@192.168.31.112 "cd /usr/local && sh restart_goods_center.sh"
# 部署到遠(yuǎn)程服務(wù)器
scp user-center/target/user-center-0.0.1-SNAPSHOT.jar root@192.168.31.113:/usr/local/user-center.jar
# 登錄遠(yuǎn)程機(jī)器
ssh root@192.168.31.113 "cd /usr/local && sh restart_user_center.sh"
到了這里,關(guān)于如何一鍵部署本地Java項(xiàng)目到服務(wù)器上的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!