本文描述了Web項目的兩種部署方案,石器時代的ssh & pull & restart方式不做太多說明
1.基于Fabric(Python)的部署方案Fabric 是一個用于ssh的Python庫&命令行工具
1.1結構Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.
Interface
flask
django
...
Script
fabric
conf (服務器配置列表)
lib(基礎庫&二次開發(fā))
1.2示例 1.2.1.配置文件conf_server.sample.py#!/usr/bin/env python # coding=utf-8 SERVER_DICT = { "www": [ "root@0.0.0.0", "password", "/home/mt/v1" ], "v1": [ "root@0.0.0.0", "password", "/home/mt/v1" ], "v2": [ "root@0.0.0.0", "password", "/home/mt/v2" ], "v3": [ "root@0.0.0.0", "password", "/home/mt/v3" ] }1.2.2.更新操作deploy.py
#!/usr/bin/env python # coding=utf-8 import sys sys.path.append("..") from conf.conf_server import * from fabric.api import env, run, local def run_remote(self): print env.host_string _path = self.project[2] _string = "su mt -c "cd %s && git pull origin master"" % _path run(_string)1.3說明
通過不同服務器的配置信息,使用http|socket等方式發(fā)送特定的參數(shù)如cloud|help來運行上述的命令達到熱更新以及修復的功能.對應的接口實現(xiàn)可以通過指定:
基于權限的主動更新(不同身份的管理員人肉發(fā)送命令)
基于項目的自動更新(webhook)
注意:項目代碼需要特定的branch(不過這其實也是規(guī)范化的代碼管理必需)
示例:
# 命令行操作 python deploy.py www # Http接口 curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "site=www" "http://api.thonatos.com/deploy/"2.基于Docker的部署方案
Docker是一個將程序以及其依賴打包進一個標準單元的服務或者工具集
2.1基礎Docker allows you to package an application with all of its dependencies into a standardized unit for software development.
Docker服務的基礎是虛擬機,整個Docker服務包含了虛擬機以及操作虛擬機的一些列命令集合
這里需要理解Docker的幾個基本概念,便于更好的理解這種部署開發(fā)&部署方式與常規(guī)方案的區(qū)別
image(鏡像)
container(容器)
server(服務器)
鏡像相當于一個Linux發(fā)行版,對比于Linux下的Ubuntu、CentOs等,我們可以按照自己的需求去定義這個發(fā)行版的內容以及組件,基礎鏡像是最小化的Linux運行單元,那么,我們需要做的就是根據(jù)程序的需要,安裝各種依賴組件,并將APP+DEP進行打包,變成我們的“定制發(fā)行版”,以此來部署在真實Server上。于此同時,鏡像在初始化的過程中,可以定義一些列操作,比如——安裝依賴、拉取代碼以及運行程序
容器是一個實例化以后的虛擬機,容器依賴于鏡像,在鏡像的基礎上做實例化,是初始化以后的虛擬機
服務器,就是傳統(tǒng)的服務器如實體服務器或者云主機等
Docker對應了一些列的服務端程序,是標準的C/S架構,每一個服務器運行一個或多個容器,一個或多個容器的集合叫做集群,對服務器進行一些列的包裝后變成一個控制臺,不再去關心服務器的初始化過程,只管理容器本身是目前Docker的優(yōu)勢所在。具體表現(xiàn)為,按照原有方式,我們需要先開通N臺服務器,再依次在每一臺機器上安裝虛擬機;現(xiàn)在需要的是,將所有的服務器進行封裝,變成一個通道,在盒子外,我們告訴盒子我們需要多少個容器,它返回給我們對應的服務即可。國內的DaoCloud、阿里云容器服務已經(jīng)相對完善。(阿里測試中,DaoCloud已經(jīng)相對成熟)
2.2環(huán)境打包 2.2.1 鏡像示例FROM node:argon # Create app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Clone code & Install app dependencies RUN git clone git@github.com:MT-Libraries/MT-Notes.git ./ RUN npm install EXPOSE 8080 CMD [ "npm", "start" ]
示例在初始化的過程中會從git拉取代碼并安裝依賴文件,最終運行在8080端口
2.2.2 部署簡述在DC(DaoCloud)控制臺創(chuàng)建一個集群
在應用中選擇基于鏡像m創(chuàng)建n個容器
等待初始化完成,可以看到當前集群中的節(jié)點數(shù)量(節(jié)點即為容器數(shù)量)
同一個集群中的機器可以跑相同或者不同的服務,當需要負載均衡時,動態(tài)的加入或者移除節(jié)點即可(通過配置,自動伸縮)
2.2.3 節(jié)點管理節(jié)點管理通過阿里云的Agent服務,相當于為每一個節(jié)點創(chuàng)建了一個遠程shell,我們通過控制臺即可輕松升級&更新程序
批量更新
動態(tài)管理
負載均衡
批量更新,通過一些設定創(chuàng)建的數(shù)量如20臺 ,創(chuàng)建完畢后,從原有集群移除所有節(jié)點,加入創(chuàng)建的節(jié)點,即可完成更新操作,后續(xù)刪除或者銷貨舊版本的容器。停機更新即完成。
動態(tài)管理,由于數(shù)量可以自定義,我們可以在用戶無感知的情況下增加服務器到50或者減少服務器到10,在這個過程中,用戶是不會感覺到變化的(注:這里需要設計數(shù)據(jù)共享機制 Session/Cookie)
3.兩種方案的使用這兩種方案并不存在互斥性,可以并從,也可以只選擇一種,如:
獨立Fabric,則以服務器鏡像為基礎,備份服務器本身(缺點是數(shù)據(jù)量大,服務器最少20G)
獨立Docker,則每次都是通過銷貨/初始容器的方式來實現(xiàn),換言之,如果是一臺服務器,則需更換IP
組合使用,針對熱更新使用Fabric,針對大規(guī)模、大版本、又或者數(shù)量大時,使用該方式更便捷
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37782.html
本文描述了Web項目的兩種部署方案,石器時代的ssh & pull & restart方式不做太多說明 1.基于Fabric(Python)的部署方案 Fabric 是一個用于ssh的Python庫&命令行工具 Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for...
container-as-a-service-0x02 -- 項目構建&部署之道 By 蘇依蜀黍 . 2016.06.08 分析 之前寫了兩篇,算是比較完善的稱述了就目前的業(yè)務,容器服務在我司的應用,但是沒有比較具體的講如何構建以及部署,所以這一篇主要講如何對項目進行容器化以及如何部署,對我司業(yè)務分類以后可以有以下幾種類型: python應用 node.js應用 php應用 nginx服務 ...
摘要:協(xié)議的細節(jié)由一個名為的處理。運行下面的腳本來讓所有的事情都發(fā)生一兩分鐘后,命令提示符將返回運行結果如下圖所示現(xiàn)在運行該命令查看當前正在運行的容器。 showImg(https://segmentfault.com/img/bVbazHF?w=709&h=159); 前言 本教程基本上是對Marbles項目的翻譯過程. 如果英文比較好的話,建議根據(jù)官方操作說明,一步步進行環(huán)境部署。當然你...
摘要:和比特幣協(xié)議有所不同的是,以太坊的設計十分靈活,極具適應性。超級賬本區(qū)塊鏈的商業(yè)應用超級賬本超級賬本是基金會下的眾多項目中的一個。證書頒發(fā)機構負責簽發(fā)撤 showImg(https://segmentfault.com/img/bV2ge9?w=900&h=385); 從比特幣開始 一個故事告訴你比特幣的原理及運作機制 這篇文章的定位會比較科普,盡量用類比的方法將比特幣的基本原理講出來...
摘要:基于的私有云混合云構建方案蘇依蜀黍是一個開源的引擎,可以輕松的為任何應用創(chuàng)建一個輕量級的可移植的自給自足的容器。開發(fā)者在筆記本上編譯測試通過的容器可以批量地在生產(chǎn)環(huán)境中部署,包括虛擬機集群和其他的基礎應用平臺。 container-as-a-service-0x01 -- 基于Docker的私有云&混合云構建方案 By 蘇依蜀黍 . 2016.06.07 what Docker是一...
閱讀 3461·2019-08-30 13:15
閱讀 1400·2019-08-29 18:34
閱讀 822·2019-08-29 15:18
閱讀 3480·2019-08-29 11:21
閱讀 3247·2019-08-29 10:55
閱讀 3688·2019-08-26 10:36
閱讀 1869·2019-08-23 18:37
閱讀 1816·2019-08-23 16:57