1、背景介紹
web
svnServer在內網環境,測試環境搭建在阿里雲公網上,分爲DBServer和WebServer。每次手動部署時都須要諸多步驟,開啓多個終端操做,可謂耗時又繁瑣,再加上新人經驗不足,部署過程時常出現問題。
sql
手動部署測試環境的步驟:shell
服務器 | 操做步驟 |
svnServer(內網) |
|
本地PC |
|
DBServersvn (公網)工具 |
|
WebServer (公網) |
|
2、解決方案
久而久之下去,終究是不可行的!
若是用shell固化所需執行的步驟、執行的命令,對新手而言是否是簡易多了呢?
若是隻在一臺server上就將全部的步驟執行完了,是否是更完美了呢?
既然svnServer做爲部署工做的入口,那就把它做爲console。
定下console以後,問題又來了,它如何與公網的server「溝通」呢?ssh主機互信來幫忙!經過主機互信,打通內外網,跨起一座溝通的橋樑。
按照部署步驟,可概括爲4個階段:
升級前的準備工做:中止web應用服務;刪除舊文件;
分別提測內容的上傳;
部署DBServer;
部署WebServer;
使用shell腳本部署的步驟:
服務器 | 操做步驟 |
svnServer(內網) |
|
經過shell腳原本部署,感受要操做的內容減小了,這個過程簡單了、順暢了!
3、腳本編寫及調試
有了以上的解決方案,就開始實踐,畢竟實踐出真知!
3.1 ssh主機互信
1. 在3臺server生成各自的建立 RSA密鑰和公鑰;
ssh-keygen -t rsa |
2. 整合公鑰文件,將全部的key文件彙總到內網server的認證文件中;
ssh svnServer cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ssh DBServer cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ssh WebServer cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys |
3. 分發整合的key認證文件,到各server上;
scp ~/.ssh/authorized_keys DBServer :~/.ssh/ scp ~/.ssh/authorized_keys WebServer :~/.ssh/ |
4. 驗證互信
ssh DBServer |
OK,主機互信搞定,各臺server已經能夠「免籤」了。
3.2 編寫腳本
腳本分爲兩層,svnServer上的腳本遠程調用DBServer、WebServer 上的腳本,進行環境準備、安裝部署。
1pre_env.sh,遠程調用shell腳本,實現中止web應用服務;刪除舊文件;
2copy_build.sh,經過scp命令,將應用直接從svnServer上傳到web和DBserver上;
3deploy_db.sh、4deploy_web.sh
4、總結
經過編寫該腳本,規避了誤操做的風險,提升了部署的效率。同時也實現了學有所用!