1. 程式人生 > >通過ssh主機互信打通內、外網,使用shell腳本自動部署測試環境

通過ssh主機互信打通內、外網,使用shell腳本自動部署測試環境

ssh 主機互信 scp

一、背景介紹

svnServer在內網環境,測試環境搭建在阿裏雲公網上,分為DBServer和WebServer。每次手動部署時都需要諸多步驟,開啟多個終端操作,可謂耗時又繁瑣,再加上新人經驗不足,部署過程時常出現問題。


  • 手動部署測試環境的步驟:


服務器操作步驟
svnServer(內網)
  1. 使用maven命令打包;

  2. 將版本提交至svn;

本地PC
  1. 將提測版本使用WinSCP工具get到本地;

  2. 通過WinSCP工具將提測版本,分別上傳到DBServer和WebServer

DBServer

(公網)

  1. 登錄DBServer,刪除原有的release內容;

  2. Drop database;

  3. 賦予Mysql_SetUp.sh執行權限;

  4. 執行Mysql_SetUp.sh,重新建庫,測試腳本的正確性;

WebServer

(公網)

  1. 停止應用服務;

  2. 備份各子系統應用;

  3. 刪除過期日誌;

  4. 部署各個子系統;

  5. 啟動各個子系統


二、解決方案

長此以往下去,終究是不可行的!

如果用shell固化所需執行的步驟、執行的命令,對新手而言是不是簡易多了呢?

如果只在一臺server上就將所有的步驟執行完了,是不是更完美了呢?


既然svnServer作為部署工作的入口,那就把它作為console。

定下console之後,問題又來了,它如何與公網的server“溝通”呢?ssh主機互信來幫忙!通過主機互信,打通內外網,跨起一座溝通的橋梁。

按照部署步驟,可歸納為4個階段:

  1. 升級前的準備工作:停止web應用服務;刪除舊文件;

  2. 分別提測內容的上傳;

  3. 部署DBServer;

  4. 部署WebServer;


  • 使用shell腳本部署的步驟:

服務器操作步驟
svnServer(內網)
  • 1pre_env.sh

  • 2copy_build.sh

  • 3deploy_db.sh

  • 4deploy_web.sh

通過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腳本自動部署測試環境