Jar包一鍵重啟的Shell腳本及新服務(wù)器部署的一些經(jīng)驗(yàn)分享
前言
最近公司為客戶重新部署了一套新環(huán)境,由我來(lái)完成了基礎(chǔ)環(huán)境的配置,配置過(guò)程中總結(jié)了一些經(jīng)驗(yàn),分享給各位園友
使用 curl 命令檢查網(wǎng)絡(luò)
拿到新服務(wù)器后,首先檢查服務(wù)器網(wǎng)絡(luò)是否通暢。我們常用的 ping 命令使用的是 ICMP 協(xié)議,大部分服務(wù)器都設(shè)置了域名出入站規(guī)則,即使某些地址可以 ping 通,也存在服務(wù)器無(wú)法訪問(wèn)的情況。這時(shí)可以使用 curl host:port 命令來(lái)測(cè)試該服務(wù)器能否正常發(fā)送 http 請(qǐng)求到外部服務(wù)器
安裝 JDK
新服務(wù)器一般沒(méi)有 JDK ,可以使用 java -version 命令查看。如果沒(méi)有,則通過(guò) yum 命令安裝之,如果有但版本不對(duì)也可以先卸載再安裝
# 卸載 rpm -qa | grep java | xargs rpm -e --nodeps # 安裝 1.8 yum install java-1.8.0-openjdk* -y
檢查服務(wù)器時(shí)間
一般新服務(wù)器時(shí)間都會(huì)與網(wǎng)絡(luò)時(shí)間不一致,這時(shí)就需要我們先同步一下服務(wù)器時(shí)間
date/timedatectl 命令可用于查看系統(tǒng)當(dāng)前的時(shí)間,如果和網(wǎng)絡(luò)時(shí)間不一致
# 安裝日期工具 yum -y install ntp ntpdate # 同步時(shí)間 ntpdate cn.pool.ntp.org # 將系統(tǒng)時(shí)間寫入硬件時(shí)間 hwclock --systohc
打開指定的端口
應(yīng)用部署了之后,由于防火墻的限制,需要手動(dòng)打開應(yīng)用所占用的端口。打開命令如下:
firewall-cmd --zone=public --add-port=80/tcp --permanent
執(zhí)行完之后,重新載入防火墻配置
firewall-cmd --reload
有的服務(wù)器在內(nèi)網(wǎng)中,有外網(wǎng)域名映射,那同時(shí)需要開放該端口外網(wǎng)到內(nèi)網(wǎng)的映射。這個(gè)根據(jù)服務(wù)性質(zhì)來(lái)確定。如果某個(gè)微服務(wù)只是服務(wù)間內(nèi)網(wǎng)訪問(wèn)。就不建議暴露在公網(wǎng)中
Jar 包一鍵重啟
Java 項(xiàng)目在 Linux 環(huán)境中一般采用 war 包到 Tomcat 或者 jar 包部署的方式在 Linux 部署,在自動(dòng)化部署大行其道的今天,仍然會(huì)有不少的公司采用手動(dòng)部署的方式部署 jar 包(比如我們公司),最近我們公司為客戶重新升級(jí)了一下新的環(huán)境(新版本上線到新服務(wù)器)由我兼任運(yùn)(reng bao)維(chong qi)工程師來(lái)負(fù)責(zé)項(xiàng)目的部署上線。項(xiàng)目初上線的時(shí)候重啟操作是非常頻繁的,一般我們會(huì)采用如下的命令:
ps -ef |grep 服務(wù)名 kill -9 PID nohup java -jar 服務(wù)名 & tail -1000f nohup.out
這四步一氣呵成,手速快的話 10s 左右就 OK 了,然而當(dāng)微服務(wù)項(xiàng)目很多的時(shí)候,要輸入的命令數(shù)量就是 4n ,有一次服務(wù)器時(shí)間不準(zhǔn),我重設(shè)了一下服務(wù)器時(shí)間,導(dǎo)致時(shí)鐘回退,雪花ID無(wú)法生成。我一口氣重啟完了所有服務(wù),那個(gè)酸爽。。。
于是我嘗試著學(xué)習(xí) shell 命令來(lái)寫出來(lái)一個(gè)簡(jiǎn)單的一鍵重啟并輸出日志的腳本
腳本內(nèi)容
#!/bin/bash # 作者 后青春期的Keats # 博客地址 https://www.cnblogs.com/keatsCoder/ # 默認(rèn)應(yīng)用名稱 defaultAppName='redis-cli.jar' appName='' if [ $1 && $1!=0 ] then appName=$1 else appName=$defaultAppName fi echo ">>>>>>本次重啟的應(yīng)用: $appName <<<<<<" # 關(guān)閉應(yīng)用方法 stopApp(){ pid=$( ps -ef |grep $appName |grep 'java -jar'|grep -v grep|awk '{print $2}') kill -9 $pid } # 啟動(dòng)應(yīng)用方法 startApp(){ nohup java -jar $appName & } # 滾動(dòng)打印日志 printLog(){ tail -1000f nohup.out } if [ $2 ] then echo '第二個(gè)參數(shù)有值,僅啟動(dòng)' else stopApp fi startApp printLog
使用方法
使用 vi/vim 命令在應(yīng)用 jar 包所在目錄下新建一個(gè) restart.sh 的文件
vi restart.sh
復(fù)制上面的代碼,更改該文件權(quán)限為可執(zhí)行
chmod +x restart.sh
執(zhí)行腳本,para1 para2 是可選項(xiàng),para1 指定重啟的項(xiàng)目名稱,para2 存在時(shí)只啟動(dòng),不殺死進(jìn)程
./restart.sh [para1] [para2]
增強(qiáng)使用方法
細(xì)心的朋友可能注意到,腳本中有個(gè)變量 defaultAppName 沒(méi)錯(cuò),它就是默認(rèn)重啟的項(xiàng)目名稱,對(duì)我們來(lái)說(shuō),一般 jar 包名稱不會(huì)經(jīng)常修改,因此可以通過(guò)修改默認(rèn)應(yīng)用名稱的方式來(lái)簡(jiǎn)化執(zhí)行時(shí)所需要輸入應(yīng)用名稱的步驟。
修改了默認(rèn)名稱之后,如果想使用僅啟動(dòng)模式,就需要使用
./restart 0 1
來(lái)實(shí)現(xiàn),第一個(gè)參數(shù) 0 不會(huì)被識(shí)別成應(yīng)用名稱,只是用作占位符。
到此這篇關(guān)于Jar包一鍵重啟的Shell腳本及新服務(wù)器部署的一些經(jīng)驗(yàn)分享的文章就介紹到這了,更多相關(guān)jar 包一鍵重啟服務(wù)器部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
php/asp/asp.net中判斷百度移動(dòng)和PC蜘蛛的實(shí)現(xiàn)代碼
這篇文章主要介紹了php/asp/asp.net中判斷百度移動(dòng)和PC蜘蛛的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-09-09使用 Conditional Menus 插件讓 WordPress 在不同頁(yè)面顯示不同菜單
這篇文章主要介紹了如何使WordPress在不同頁(yè)面顯示不同菜單2021-09-09WebSocket部署到服務(wù)器出現(xiàn)連接失敗問(wèn)題的分析與解決
這篇文章主要給大家介紹了關(guān)于WebSocket部署到服務(wù)器出現(xiàn)連接失敗問(wèn)題的分析與解決方法,文中給出了詳細(xì)的介紹供大家參考學(xué)習(xí),文末也給出了demo下載地址,需要的朋友們可以下載學(xué)習(xí),下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10讓開發(fā)自動(dòng)化 用 Eclipse 插件提高代碼質(zhì)量
如果能在構(gòu)建代碼前發(fā)現(xiàn)代碼中潛在的問(wèn)題會(huì)怎么樣呢?很有趣的是,Eclipse 插件中就有這樣的工具,比如 JDepend 和 CheckStyle,它們能幫您在軟件問(wèn)題暴露前發(fā)現(xiàn)這些問(wèn)題。2009-05-05使用git?config?--global設(shè)置用戶名和郵件問(wèn)題
這篇文章主要介紹了使用git?config?--global設(shè)置用戶名和郵件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05VSCode 使用Settings Sync同步配置(最新版教程,非常簡(jiǎn)單)
這篇文章主要介紹了VSCode 使用Settings Sync同步配置(最新版教程,非常簡(jiǎn)單),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Skywalking-agent調(diào)試說(shuō)明以trace-ignore為例
這篇文章主要為大家介紹了以trace-ignore為例的Skywalking-agent調(diào)試說(shuō)明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06用VSCode實(shí)現(xiàn)內(nèi)網(wǎng)穿透的步驟詳解
這篇文章給大家介紹了如何用VSCode實(shí)現(xiàn)內(nèi)網(wǎng)穿透,文中通過(guò)圖文結(jié)合的方式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-12-12