你們好哈,最近在學習用 python 作一個server發佈系統。遊戲的版本發佈是運維平常工做中的主要部門,並且這工做頻繁、重複、重複的進行着,運維必須採用一些自動化運維手段來處理版本更新發布;實現自動化運維頗有必要的手段,下面根據公司業務需求,自定義開發了一款運維自動化發佈系統nginx
1、背景:
公司遊戲業務應用須要頻繁更新到線上服務器,開發人員打包好的bin文件存在SVN服務器上,運維須要將開發人員提交到svn 的執行文件及配置文件同步到線上(因爲頻繁、重複的更新,會給運維工做帶來繁瑣的工做量)web
應用更新包括:django
a、應用文件的更新替換bootstrap
b、應用進程的啓停服務器
2、需求:
一、開發人員提交svn 代碼後,能夠經過web界面選擇svn的文件,而後直接提交到線上服務器架構
二、能夠經過web界面對相應進程進行啓停操做;運維
三、能夠查看相應的操做logsvn
3、實現:
(1)、自動化發佈系統開發工具:工具
一、python (https://www.python.org/)
二、bootstrap (http://getbootstrap.com/)
三、Django (https://www.djangoproject.com/)
四、DataTables (http://datatables.net/)
(2)、架構說明:
一、開發人員將本身編譯好的bin文件及配置文件 提交的 svn版本庫
二、運維人員在發佈系統後臺 配置項目(錄入項目名、svn路徑、遠程IP、目錄、進程啓動項等信息,而且配置發佈權限)( 1和2不分前後 )
三、開發人員及運維人員經過發佈系統web界面選擇對應操做並提交(操做包括選擇更新文件或者選擇進程重啓項等)
四、發佈系統後臺將根據開發的選擇項目(若是是發佈文件,將會同步svn代碼到本地,而後打包發佈)作出相應
五、最後,發佈系統將指令/文件分發至對應服務器執行
(3)、自動化發佈系統功能:
一、項目接入及項目配置錄入 (支持批量添加)
二、發佈文件 (支持中起色發佈)
三、發佈回滾 (支持發佈文件回滾)
四、發佈文件列表(動態獲取svn目錄文件列表,生成樹結構)
五、更新(啓停)進程 (支持組的更新,前提是須要在功能1中分配好組信息)
六、用戶登陸及權限管理(簡易)
七、自定義觸發腳本 (能夠自定義腳本,相似svn的鉤子功能)
(4)、web UI 瀏覽:
運維 /管理員能夠添加項目及對應的svn信息等:
配置進程信息等:
發佈文件界面:
進程更新重啓界面:
4、實現中的各個重要點 及 我的學習體會 (更新中…. ),朋友,請猛戳
一、python + django + bootstrap 快速web開發初探
二、python 遞歸實現Easyui combotree樹
三、python + django + bootstrap + uwsgi + nginx 環境搭建介紹
四、python 文件列表打包及解壓(更新中…)
五、文件發佈及命令執行
六、DataTables 應用介紹