windows下自動上傳war到Linux服務器,自動部署,自動重啓Tomcat的系列腳本

windows下自動上傳 war 到 Linux 服務器

  • 下面的 cmd 腳本經過 Maven 命令執行打包,生成 war
  • 經過 pscp 將 war 上傳到服務器
  • 經過 plink 遠程調用 Linux 上的 shell 腳本
  • 其中 pscp 來自 PUTTY
  • putty_privatekey 用於 plink 無密碼登陸 Linux,也能夠經過用戶名和密碼的方式
  • 其中 test-web-deploy.sh 用於自動部署 war
@echo off
set project_path=D:\svn-workspace\test-web
set local_file=%project_path%\target\test-web.war
set putty_privatekey=D:\soft\keys\test-privatekey.ppk
set deploy-shell=test-web-deploy.sh
 
set server_user_1=dev
set server_passwd_1=123
set server_ip_1=10.32.22.61
 
set server_path=/usr/local/apps

echo ---------------------------------------------- execute mvn clean install
D:
cd %project_path%
call mvn clean install -Dmaven.test.skip=true -Ptest
 
echo ---------------------------------------------- upload war file to server 
call pscp -l %server_user_1% -pw %server_passwd_1% -r %local_file% %server_ip_1%:%server_path%

echo ---------------------------------------------- execute %deploy-shell%
call plink -i %putty_privatekey% %server_user_1%@%server_ip_1% sh %deploy-shell%
 
pause

Linux 自動部署 war

  • 在下面的腳本是 test-web-deploy.sh,會調用 tomcat_restart.sh,用於重啓 Tomcat
#!/bin/bash
app_name=test-web
app_path=/usr/local/apps
tomcat_path=/usr/local/soft/tomcat-test-web

cd $app_path
if [ -f ${app_name}.war ];then
    echo find ${app_name}.war, unpack the file then restart the tomcat
    rm -rvf ./${app_name}/*
    mv ./${app_name}.war $app_path/${app_name}/
    cd $app_path/${app_name}
    jar -xvf ${app_name}.war
    rm -rvf ${app_name}.war
  else
    echo not find ${app_name}.war, only restart the tomcat
fi

cd $tomcat_path
sh tomcat_restart.sh

自動重啓 Tomcat

  • 下面的腳本是 tomcat_restart.sh,基本思路是經過 Tomcat 安裝路徑找到進程pid,殺死後再重啓
#!/bin/bash
# 首先找到tomcat根目錄, 確保當前腳本在tomcat根目錄下
tomcat_path=/usr/local/soft/tomcat-test-web
echo tomcat path is $tomcat_path

# 找到tomcat的進程id
tomcat_pid=$(ps -ef|grep $tomcat_path|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')
if [ "$tomcat_pid" ];then
  echo tomcat process id is $tomcat_pid
  # 殺掉tomcat進程
  if
    kill -9 $tomcat_pid
  then
    echo kill tomcat process success
  else
   echo kill tomcat process fail
  fi
else
  echo tomcat is already dead
fi

# 啓動tomcat並重定向到日誌輸出
sh $tomcat_path/bin/startup.sh
tail -f $tomcat_path/logs/catalina.out

可能遇到的問題

執行 jar -xvf xxx.war 的時候提示:/bin/bash: jar: command not found

解決以下

cd /usr/bin
sudo ln -s -f /usr/lib/jvm/jdk1.6.0_30/bin/jar

jdk安裝目錄按本身實際狀況更改java

若是提示javah:commond not found,因而照葫蘆畫瓢,輸入命令web

cd /usr/bin
ln -s -f /usr/lib/jvm/jdk1.6.0_30/bin/javah

總結

  • 該系列腳本解決了自動部署問題,很是適用於敏捷開發
  • 基於該系列腳本能夠實現自動發佈系統的開發 :)
相關文章
相關標籤/搜索