通過ssh主機互信打通內、外網,使用shell腳本自動部署測試環境
一、背景介紹
svnServer在內網環境,測試環境搭建在阿裏雲公網上,分為DBServer和WebServer。每次手動部署時都需要諸多步驟,開啟多個終端操作,可謂耗時又繁瑣,再加上新人經驗不足,部署過程時常出現問題。
手動部署測試環境的步驟:
服務器 | 操作步驟 |
svnServer(內網) |
|
本地PC |
|
DBServer (公網) |
|
WebServer (公網) |
|
二、解決方案
長此以往下去,終究是不可行的!
如果用shell固化所需執行的步驟、執行的命令,對新手而言是不是簡易多了呢?
如果只在一臺server上就將所有的步驟執行完了,是不是更完美了呢?
既然svnServer作為部署工作的入口,那就把它作為console。
定下console之後,問題又來了,它如何與公網的server“溝通”呢?ssh主機互信來幫忙!通過主機互信,打通內外網,跨起一座溝通的橋梁。
按照部署步驟,可歸納為4個階段:
升級前的準備工作:停止web應用服務;刪除舊文件;
分別提測內容的上傳;
部署DBServer;
部署WebServer;
使用shell腳本部署的步驟:
服務器 | 操作步驟 |
svnServer(內網) |
|
通過shell腳本來部署,感覺要操作的內容減少了,這個過程簡單了、順暢了!
三、腳本編寫及調試
有了以上的解決方案,就開始實踐,畢竟實踐出真知!
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
四、總結
通過編寫該腳本,規避了誤操作的風險,提高了部署的效率。同時也實現了學有所用!
本文出自 “樂學園” 博客,請務必保留此出處http://2338053.blog.51cto.com/2328053/1970238
通過ssh主機互信打通內、外網,使用shell腳本自動部署測試環境