由於Linux和Java一樣開源,所以現在在伺服器的部署上基本上都是採用Linux平台作為伺服器,然後部署項目。在開發項目的過程中,絕大部分程式猿還是使用最經典的windows作業系統,雖然Linux也有案頭化的系統,對於國人來說,還是不太習慣,並且國內的軟體絕大部分都不支援Linux平台,所以在使用的頻率那是相當的少。
在開發中,開發環境中編譯使用等一系列通過後,還不能說功能已經ok,因為環境一旦變化,出現的問題的可能是自己沒有考慮的,所以程式猿都知道真實的環境才是最可靠的,有時候出現的問題,在真實的環境需要多次才能重現,甚至長時間無法重現,因此在真實的環境中進行大量的測試時相當需要的。
來講講是怎麼改善部署環境的:
這裡使用到了一個shell指令碼,簡單介紹一下shell指令碼:shell script,shell指令碼與windows/dos下的批處理相似,也就是用各類命令預先放入到一個檔案中,方便一次性執行的一個程式檔案,主要是方便管理員進行設定或者管理用的。但是它比windows下的批處理更強大,比用其他編程程式編輯的程式效率更高,畢竟它使用Linux/Unix下的命令。
換一種說法也就是,shell script是利用shell的功能縮寫的一個程式,這個程式是使用純文字檔案,將一些shell的文法和指令都寫在裡面,然後用正則標記法,管道命令以及資料流重導向等功能,以達到我們所想要的處理目的。
更明白的來說,shell script就想早起dos年代的.bat,最簡單的功能就是將許多指令彙整寫一起,讓使用者很容易的就能夠一個操作執行多個命令,而shell script更是提供了數組,迴圈,條件以及邏輯判斷等重要功能,讓使用者可以直接以shell來寫程式,而不必使用類似C程式語言等傳統程式編寫的文法。
shell就簡單的介紹到這裡。現在直接貼上shell指令碼(tom.sh)裡的內容
#!/bin/bashservice tomcat stopsleep 3#kill javakillall java#remove pidrm -rf /var/run/tomcat.pidrm -rf /nac/web/tomcat/webapps/hupunac* /nac/web/tomcat/webapps/ROOTrm -rf /nac/web/tomcat/work/*#clear log>/var/log/tomcat/catalina.out#rzcd /nac/web/tomcat/webappsrz#start tomcatsleep 3service tomcat start#echo "Please wait for 80s......"sleep 80netstat -an|grep :::6002 > /dev/nullif [ $? != 0 ];then service tomcat stop killall java rm -rf /var/run/tomcat.pid service tomcat startelse echo "tomcat start ok!"fi
這裡的
service tomcat stop命令應該很清楚了吧,就是先將tomcat的服務先停止,當然可能在這個時候tomcat的服務本身就沒有開啟,但是不影響整個指令碼的執行
sleep 3指的是睡眠3s(秒),俗稱等待3秒
killall java強制殺死Java程式
rm -rf強制移除,使用這個命令,主要是為了刪除伺服器下那些必須刪除的檔案
> 這條命令是將檔案清空的意思,在我這裡主要是清空記錄檔
cd是指進入目錄
rz是指檔案匯入,就是windows中的瀏覽一般,然後上傳
service tomcat start這時候,我們項目的war上傳成功後,開始啟動服務,接著又是等待服務開啟
這裡做了一個最佳化,因為在我們的程式中使用到了6002連接埠,所以如果服務開啟完畢後連接埠還沒有起來,也就是listen狀態,netstat -an這命令是用來查看當前系統中所有連接埠資訊,這些連接埠中的6002連接埠是我們所需要的資料,所以我們可以用netstat -an|grep :::6002來過濾。如果沒有起來的話,說明在tomcat的服務開啟過程中出現了問題,然後再次走流程,這時候只是少了一步上傳war包的動作。
好啦,指令碼介紹完畢了,這時候我們可以執行. /nac/script/tom.sh,ok項目就可以輕鬆部署了。
這時候就用人要問了,這麼長的路徑,這麼難找,挺費事。還不能更加最佳化呢,這是當然的,必須能最佳化,這裡介紹兩種最佳化方式:
1、在root下的.bashrc檔案下加入alias webupdate='. /nac/script/tom.sh'
2、在/etc/profile中加入alias webupdate='. /nac/script/tom.sh'
兩種方式都介紹完了,兩種最佳化方式都行,後者更好,更方便,因為後者是配置在系統的環境變數上,而前者是配置在root使用者的環境變數上,所以前者只有root能使用,而後者的話所有使用者都可以使用該命令,這樣就可以使用webupdate這一條命令就可以輕鬆換war包部署
可能這時候有人就要問了,用命令怎麼說不存在呢。當然,裝置沒有重啟,配置的這些資源還有重新載入呢,肯定沒有使用咯,重啟裝置就ok,重啟裝置太費勁了,我們可以用source一下就好啦,這樣就可以直接使用剛剛配置好命令,記住source是source剛才修改的檔案。
最後我們是不是可以很輕鬆很方便很快捷就能把我們的項目重新部署了呢。
為各位附上最常用的Linux命令集:http://blog.csdn.net/luo201227/article/details/23295435