Jar包一鍵重啓的Shell腳本及新服務器部署的一些經驗

原文首發於博客園,做者:後青春期的Keats;地址:https://www.cnblogs.com/keatsCoder/ 轉載請註明,謝謝!java

前言

最近公司爲客戶從新部署了一套新環境,由我來完成了基礎環境的配置,配置過程當中總結了一些經驗,分享給各位園友node

  1. 使用 curl 命令檢查網絡redis

    拿到新服務器後,首先檢查服務器網絡是否通暢。咱們經常使用的 ping 命令使用的是 ICMP 協議,大部分服務器都設置了域名出入站規則,即便某些地址能夠 ping 通,也存在服務器沒法訪問的狀況。這時能夠使用 curl host:port 命令來測試該服務器可否正常發送 http 請求到外部服務器shell

  2. 安裝 JDKvim

    新服務器通常沒有 JDK ,能夠使用 java -version 命令查看。若是沒有,則經過 yum 命令安裝之,若是有但版本不對也能夠先卸載再安裝bash

    # 卸載 
    rpm -qa | grep java | xargs rpm -e --nodeps 
    # 安裝 1.8
    yum install java-1.8.0-openjdk* -y
  3. 檢查服務器時間服務器

    通常新服務器時間都會與網絡時間不一致,這時就須要咱們先同步一下服務器時間網絡

    date/timedatectl 命令可用於查看系統當前的時間,若是和網絡時間不一致app

    # 安裝日期工具
    yum -y install ntp ntpdate
    # 同步時間
    ntpdate cn.pool.ntp.org
    # 將系統時間寫入硬件時間
    hwclock --systohc
  4. 打開指定的端口curl

    應用部署了以後,因爲防火牆的限制,須要手動打開應用所佔用的端口。打開命令以下:

    firewall-cmd --zone=public --add-port=80/tcp --permanent

    執行完以後,從新載入防火牆配置

    firewall-cmd --reload

    有的服務器在內網中,有外網域名映射,那同時須要開放該端口外網到內網的映射。這個根據服務性質來肯定。若是某個微服務只是服務間內網訪問。就不建議暴露在公網中

Jar 包一鍵重啓

Java 項目在 Linux 環境中通常採用 war 包到 Tomcat 或者 jar 包部署的方式在 Linux 部署,在自動化部署大行其道的今天,仍然會有很多的公司採用手動部署的方式部署 jar 包(好比咱們公司),最近咱們公司爲客戶從新升級了一下新的環境(新版本上線到新服務器)由我兼任運(reng bao)維(chong qi)工程師來負責項目的部署上線。項目初上線的時候重啓操做是很是頻繁的,通常咱們會採用以下的命令:

ps -ef |grep 服務名
kill -9 PID
nohup java -jar 服務名 &
tail -1000f nohup.out

這四步一鼓作氣,手速快的話 10s 左右就 OK 了,然而當微服務項目不少的時候,要輸入的命令數量就是 4n ,有一次服務器時間不許,我重設了一下服務器時間,致使時鐘回退,雪花ID沒法生成。我一口氣重啓完了全部服務,那個酸爽。。。

因而我嘗試着學習 shell 命令來寫出來一個簡單的一鍵重啓並輸出日誌的腳本

腳本內容

#!/bin/bash
# 做者 後青春期的Keats
# 博客地址 https://www.cnblogs.com/keatsCoder/


# 默認應用名稱
defaultAppName='redis-cli.jar'
appName=''

if [ $1 && $1!=0 ]
then
	appName=$1
else
	appName=$defaultAppName
fi

echo ">>>>>>本次重啓的應用: $appName <<<<<<"

# 關閉應用方法
stopApp(){
	pid=$( ps -ef |grep $appName |grep 'java -jar'|grep -v grep|awk '{print $2}')
	kill -9 $pid
}

# 啓動應用方法
startApp(){
	nohup java -jar $appName &
}

# 滾動打印日誌
printLog(){
	tail -1000f nohup.out
}

if [ $2 ]
then
	echo '第二個參數有值,僅啓動'
else
	stopApp
fi
startApp
printLog

使用方法

使用 vi/vim 命令在應用 jar 包所在目錄下新建一個 restart.sh 的文件

vi restart.sh

複製上面的代碼,更改該文件權限爲可執行

chmod +x restart.sh

執行腳本,para1 para2 是可選項,para1 指定重啓的項目名稱,para2 存在時只啓動,不殺死進程

./restart.sh [para1] [para2]

加強使用方法

細心的朋友可能注意到,腳本中有個變量 defaultAppName 沒錯,它就是默認重啓的項目名稱,對咱們來講,通常 jar 包名稱不會常常修改,所以能夠經過修改默認應用名稱的方式來簡化執行時所須要輸入應用名稱的步驟。

修改了默認名稱以後,若是想使用僅啓動模式,就須要使用

./restart 0 1

來實現,第一個參數 0 不會被識別成應用名稱,只是用做佔位符。

相關文章
相關標籤/搜索