Linux自動化部署嘗試


Linux自動化部署嘗試

 

最近做一個項目臨近測試,購買的是阿里雲的服務器,每次部署都是手動打包war,然后上傳到服務器,然后修改配置文件,不僅繁瑣,而且費時,就思索着找一個一鍵式的部署方式,今天終於騰出時間來做這件事,記錄一下。

先決條件

  • 遠程服務器已配置ssh免密碼登錄(因為免密碼登錄便於實現全自動化)
  • 本地具備ssh環境(我的開發環境是windows,嗚嗚。。。我使用的是babun,還不錯,推薦,當然了,我之前是因為其他原因安裝了)
  • Linux shell編程(其實這里用的很少),sed工具的使用

主要思路

主要就是將生成的war發布到阿里雲,這里不發布war,直接將tomcat中的工程下的文件拷貝到阿里雲(其實war只是將這些文件壓縮傳輸),然后修改配置文件

  1. 使用scp將本地文件拷貝到服務器
  2. 修改阿里雲上的配置文件

copy文件

復制代碼
#!/bin/bash

# 切換到tomcat發布目錄,這個目錄前面看起來比較詭異,就是因為使用的是babun
cd /cygdrive/d/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps

# 復制文件到阿里雲服務器tomcat
scp -r ./ test@xx.xxx.xxx.xx:/var/www/tomcat/webapps

# 復制完成之后,登錄阿里雲
# 執行遠程服務器上用戶目錄的腳本文件edit.shssh test@xx.xxx.xxx.xx 'sh ~/edit.sh'
復制代碼

好的,看到ssh免密碼登錄的用處了吧,在進行scp拷貝的時候不需要手動參與輸入密碼,在最后執行遠程的服務器腳本的時候也一樣,到目前為止貌似也沒有用到很復雜的shell腳本語法,以前學過shell編程,因為沒有用到,我也沒有記錄(每當這個時候我就覺得現在寫博客是極其正確的)

修改配置文件

上面腳本最后一句話就是執行遠程服務器上的edit.sh,進行修改需要修改的配置文件

復制代碼
#!/bin/bash

# 切換到app目錄
cd /var/www/tomcat/webapps/app

# 修改applicationContext-context.xml,修改數據庫密碼,因為本地和服務器不是同一個數據庫,修改
sed -i -e 's/name="password" value="root"/name="password" value="xxxx"/' ./WEB-INF/applicationContext-context.xml

# 修改config.properties
sed -i 's/localhost:8080/xx.xxx.xxx.xx/' ./WEB-INF/classes/config.properties 

# 修改日志存放目錄
sed -i -e '12,12s+E://logs/log.log+/var/www/tomcat/logs/log.log+' -e '21,21s+E://logs/error.log+/var/www/tomcat7/logs/error.log+' ./WEB-INF/classes/log4j.properties
復制代碼

大功告成,已經初步實現了一鍵式部署,整個過程不要人參與

改進

  • 每次不需要復制改動不頻繁的文件,比如jar包,js類庫就不需要復制
  • 想統計每次腳本執行的時間,一開始想在shell腳本里面寫,后來發現了time命令,太強大了,這樣就知道每次腳本執行的時間了

 


 

 

總結

shell腳本

  • 腳本中執行shell命令,用反引號包起來,如`date`,查看當時間
  • 腳本中的運算,shell腳本本身不支持數學運算,可以通過其他命令來實現,比如awk,expr如
復制代碼
#!/bin/bash

## 注意
# 因為是調用shell命令,所以整個表達式都要用反引號包括
# 在運算符和表達式之間必須有空格
# 腳本中的變量命名和=之間不能有空格
value=`expr 2 + 2`
# 使用$引用變量
echo $value
復制代碼

以上內容有參考http://c.biancheng.net/cpp/view/6999.html,其他詳細內容暫時就不再深入了,還是需求驅動學習。

 

sed命令

強大的嘆為觀止!!這個命令的提供我們不用打開文件就可以直接編輯文件,對於文中用到的幾個用法加以記錄

  • sed -i:表示對原文件進行修改,所有修改直接反映到原文件,可以使用  sed -i.bak  將原文件備份后修改原文件
  • -e: 表示可以同時進行多個修改,比如文中一次進行了多次替換,每一次修改前使用  -e  
  • /m,ns/from/to/: s搜索替換命令,和vim的搜索替換命令一致的,搜索第m到n行將 from 替換為 to ,m,n可以不加表示只替換一行,from 和 to 支持正則表達式,如果 from 和 to 中有"/"符號可以使用"\"進行轉義,或者將命令中的"/"寫為"+", +m,ns+from+to+

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM