国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于Docker & Fabric的Web項(xiàng)目部署方案

SKYZACK / 1937人閱讀

本文描述了Web項(xiàng)目的兩種部署方案,石器時(shí)代的ssh & pull & restart方式不做太多說明

1.基于Fabric(Python)的部署方案

Fabric 是一個(gè)用于ssh的Python庫&命令行工具

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.

1.1結(jié)構(gòu)

Interface

flask

django

...

Script

fabric

conf (服務(wù)器配置列表)

lib(基礎(chǔ)庫&二次開發(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說明

通過不同服務(wù)器的配置信息,使用http|socket等方式發(fā)送特定的參數(shù)如cloud|help來運(yùn)行上述的命令達(dá)到熱更新以及修復(fù)的功能.對(duì)應(yīng)的接口實(shí)現(xiàn)可以通過指定:

基于權(quán)限的主動(dòng)更新(不同身份的管理員人肉發(fā)送命令)

基于項(xiàng)目的自動(dòng)更新(webhook)

注意:項(xiàng)目代碼需要特定的branch(不過這其實(shí)也是規(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是一個(gè)將程序以及其依賴打包進(jìn)一個(gè)標(biāo)準(zhǔn)單元的服務(wù)或者工具集

Docker allows you to package an application with all of its dependencies into a standardized unit for software development.

2.1基礎(chǔ)

Docker服務(wù)的基礎(chǔ)是虛擬機(jī),整個(gè)Docker服務(wù)包含了虛擬機(jī)以及操作虛擬機(jī)的一些列命令集合

這里需要理解Docker的幾個(gè)基本概念,便于更好的理解這種部署開發(fā)&部署方式與常規(guī)方案的區(qū)別

image(鏡像)

container(容器)

server(服務(wù)器)

鏡像相當(dāng)于一個(gè)Linux發(fā)行版,對(duì)比于Linux下的Ubuntu、CentOs等,我們可以按照自己的需求去定義這個(gè)發(fā)行版的內(nèi)容以及組件,基礎(chǔ)鏡像是最小化的Linux運(yùn)行單元,那么,我們需要做的就是根據(jù)程序的需要,安裝各種依賴組件,并將APP+DEP進(jìn)行打包,變成我們的“定制發(fā)行版”,以此來部署在真實(shí)Server上。于此同時(shí),鏡像在初始化的過程中,可以定義一些列操作,比如——安裝依賴、拉取代碼以及運(yùn)行程序

容器是一個(gè)實(shí)例化以后的虛擬機(jī),容器依賴于鏡像,在鏡像的基礎(chǔ)上做實(shí)例化,是初始化以后的虛擬機(jī)

服務(wù)器,就是傳統(tǒng)的服務(wù)器如實(shí)體服務(wù)器或者云主機(jī)等

Docker對(duì)應(yīng)了一些列的服務(wù)端程序,是標(biāo)準(zhǔn)的C/S架構(gòu),每一個(gè)服務(wù)器運(yùn)行一個(gè)或多個(gè)容器,一個(gè)或多個(gè)容器的集合叫做集群,對(duì)服務(wù)器進(jìn)行一些列的包裝后變成一個(gè)控制臺(tái),不再去關(guān)心服務(wù)器的初始化過程,只管理容器本身是目前Docker的優(yōu)勢(shì)所在。具體表現(xiàn)為,按照原有方式,我們需要先開通N臺(tái)服務(wù)器,再依次在每一臺(tái)機(jī)器上安裝虛擬機(jī);現(xiàn)在需要的是,將所有的服務(wù)器進(jìn)行封裝,變成一個(gè)通道,在盒子外,我們告訴盒子我們需要多少個(gè)容器,它返回給我們對(duì)應(yīng)的服務(wù)即可。國內(nèi)的DaoCloud、阿里云容器服務(wù)已經(jīng)相對(duì)完善。(阿里測(cè)試中,DaoCloud已經(jīng)相對(duì)成熟)

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" ]  

示例在初始化的過程中會(huì)從git拉取代碼并安裝依賴文件,最終運(yùn)行在8080端口

2.2.2 部署簡述

在DC(DaoCloud)控制臺(tái)創(chuàng)建一個(gè)集群

在應(yīng)用中選擇基于鏡像m創(chuàng)建n個(gè)容器

等待初始化完成,可以看到當(dāng)前集群中的節(jié)點(diǎn)數(shù)量(節(jié)點(diǎn)即為容器數(shù)量)

同一個(gè)集群中的機(jī)器可以跑相同或者不同的服務(wù),當(dāng)需要負(fù)載均衡時(shí),動(dòng)態(tài)的加入或者移除節(jié)點(diǎn)即可(通過配置,自動(dòng)伸縮)

2.2.3 節(jié)點(diǎn)管理

節(jié)點(diǎn)管理通過阿里云的Agent服務(wù),相當(dāng)于為每一個(gè)節(jié)點(diǎn)創(chuàng)建了一個(gè)遠(yuǎn)程shell,我們通過控制臺(tái)即可輕松升級(jí)&更新程序

批量更新

動(dòng)態(tài)管理

負(fù)載均衡

批量更新,通過一些設(shè)定創(chuàng)建的數(shù)量如20臺(tái) ,創(chuàng)建完畢后,從原有集群移除所有節(jié)點(diǎn),加入創(chuàng)建的節(jié)點(diǎn),即可完成更新操作,后續(xù)刪除或者銷貨舊版本的容器。停機(jī)更新即完成。

動(dòng)態(tài)管理,由于數(shù)量可以自定義,我們可以在用戶無感知的情況下增加服務(wù)器到50或者減少服務(wù)器到10,在這個(gè)過程中,用戶是不會(huì)感覺到變化的(注:這里需要設(shè)計(jì)數(shù)據(jù)共享機(jī)制 Session/Cookie)

3.兩種方案的使用

這兩種方案并不存在互斥性,可以并從,也可以只選擇一種,如:

獨(dú)立Fabric,則以服務(wù)器鏡像為基礎(chǔ),備份服務(wù)器本身(缺點(diǎn)是數(shù)據(jù)量大,服務(wù)器最少20G)

獨(dú)立Docker,則每次都是通過銷貨/初始容器的方式來實(shí)現(xiàn),換言之,如果是一臺(tái)服務(wù)器,則需更換IP

組合使用,針對(duì)熱更新使用Fabric,針對(duì)大規(guī)模、大版本、又或者數(shù)量大時(shí),使用該方式更便捷

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/37782.html

相關(guān)文章

  • 基于Docker & FabricWeb項(xiàng)目部署方案

    本文描述了Web項(xiàng)目的兩種部署方案,石器時(shí)代的ssh & pull & restart方式不做太多說明 1.基于Fabric(Python)的部署方案 Fabric 是一個(gè)用于ssh的Python庫&命令行工具 Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for...

    RyanHoo 評(píng)論0 收藏0
  • container-as-a-service-0x02 -- 項(xiàng)目構(gòu)建&部署之道

    container-as-a-service-0x02 -- 項(xiàng)目構(gòu)建&部署之道 By 蘇依蜀黍 . 2016.06.08 分析 之前寫了兩篇,算是比較完善的稱述了就目前的業(yè)務(wù),容器服務(wù)在我司的應(yīng)用,但是沒有比較具體的講如何構(gòu)建以及部署,所以這一篇主要講如何對(duì)項(xiàng)目進(jìn)行容器化以及如何部署,對(duì)我司業(yè)務(wù)分類以后可以有以下幾種類型: python應(yīng)用 node.js應(yīng)用 php應(yīng)用 nginx服務(wù) ...

    arashicage 評(píng)論0 收藏0
  • 基于ubuntu16.04部署IBM開源區(qū)塊鏈項(xiàng)目-彈珠資產(chǎn)管理(Marbles)

    摘要:協(xié)議的細(xì)節(jié)由一個(gè)名為的處理。運(yùn)行下面的腳本來讓所有的事情都發(fā)生一兩分鐘后,命令提示符將返回運(yùn)行結(jié)果如下圖所示現(xiàn)在運(yùn)行該命令查看當(dāng)前正在運(yùn)行的容器。 showImg(https://segmentfault.com/img/bVbazHF?w=709&h=159); 前言 本教程基本上是對(duì)Marbles項(xiàng)目的翻譯過程. 如果英文比較好的話,建議根據(jù)官方操作說明,一步步進(jìn)行環(huán)境部署。當(dāng)然你...

    voidking 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.41 - 深入學(xué)習(xí)區(qū)塊鏈

    摘要:和比特幣協(xié)議有所不同的是,以太坊的設(shè)計(jì)十分靈活,極具適應(yīng)性。超級(jí)賬本區(qū)塊鏈的商業(yè)應(yīng)用超級(jí)賬本超級(jí)賬本是基金會(huì)下的眾多項(xiàng)目中的一個(gè)。證書頒發(fā)機(jī)構(gòu)負(fù)責(zé)簽發(fā)撤 showImg(https://segmentfault.com/img/bV2ge9?w=900&h=385); 從比特幣開始 一個(gè)故事告訴你比特幣的原理及運(yùn)作機(jī)制 這篇文章的定位會(huì)比較科普,盡量用類比的方法將比特幣的基本原理講出來...

    qianfeng 評(píng)論0 收藏0
  • container-as-a-service-0x01 -- 基于Docker私有云&混合

    摘要:基于的私有云混合云構(gòu)建方案蘇依蜀黍是一個(gè)開源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的可移植的自給自足的容器。開發(fā)者在筆記本上編譯測(cè)試通過的容器可以批量地在生產(chǎn)環(huán)境中部署,包括虛擬機(jī)集群和其他的基礎(chǔ)應(yīng)用平臺(tái)。 container-as-a-service-0x01 -- 基于Docker的私有云&混合云構(gòu)建方案 By 蘇依蜀黍 . 2016.06.07 what Docker是一...

    import. 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<