摘要:多機(jī)熱部署同時(shí)升級(jí)多臺(tái)服務(wù)器什么是是一種在多臺(tái)服務(wù)器上運(yùn)行腳本的開源工具,它主要用于部署應(yīng)用。它自動(dòng)完成多臺(tái)服務(wù)器上新版本的同步更新,包括數(shù)據(jù)庫(kù)的改變。
Capistrano
什么是多機(jī)熱部署
熱部署,就是在應(yīng)用正在運(yùn)行的時(shí)候升級(jí)軟件,卻不需要重新啟動(dòng)應(yīng)用。
多機(jī)熱部署 ,同時(shí)升級(jí)多臺(tái)服務(wù)器
什么是Capistrano
是一種在多臺(tái)服務(wù)器上運(yùn)行腳本的開源工具,它主要用于部署web應(yīng)用。它自動(dòng)完成多臺(tái)服務(wù)器上新版本的同步更新,包括數(shù)據(jù)庫(kù)的改變。
為什么需要Capistrano
假設(shè)我們的應(yīng)用程序是由多臺(tái)內(nèi)網(wǎng)的開發(fā)機(jī)器 ,一臺(tái)測(cè)試服務(wù)器與一臺(tái)預(yù)發(fā)布服務(wù)器 ,多臺(tái)在公網(wǎng)上提供服務(wù)的服務(wù)器構(gòu)成 . 那么我們就面臨著這樣一個(gè)問題 : 多人開發(fā)完成之后并在本地測(cè)試通過 ,其后提交到了中心的GIT服務(wù)器 . 那么我們?nèi)绾尾拍馨蒅IT中的代碼推送到測(cè)試服務(wù)器上呢 ,FTP 還是手動(dòng)到眾多服務(wù)器上挨個(gè)進(jìn)行git pull , 顯然這兩種方法都不是我們喜歡的 .
如果你希望解決這個(gè)問題 , 那么我想你是需要Capistrano的 .
Capistrano的能力
Capistrano 可以通過簡(jiǎn)單的配置與簡(jiǎn)單的命令 ,分別進(jìn)行不同環(huán)境的多臺(tái)服務(wù)器的代碼自動(dòng)拉取和更新 ,并且可以通過命令方便的進(jìn)行版本回滾 ,防止錯(cuò)誤的代碼上線提供不那么可靠的服務(wù) .安裝Capistrano
Capistrano 是由ruby驅(qū)動(dòng)的開源程序 , 所以可以方便的使用包管理器 gem 來安裝 ,并且它依賴 ruby
安裝ruby和gem
sudo yum -y insatll ruby gem
替換gem源到國(guó)內(nèi) ,這里選用 raby-china 源
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/ gem sources -l https://gems.ruby-china.org
安裝Capistrano
gem install capistrano建立測(cè)試的GIT項(xiàng)目
既然需要把GIT倉(cāng)庫(kù)部署到服務(wù)器上 ,那么我們首先應(yīng)該有個(gè)GIT倉(cāng)庫(kù)
以coding為例 ( gayhub私有項(xiàng)目需要付費(fèi) ,可以我并沒有錢 ).
創(chuàng)建一個(gè)私有項(xiàng)目
添加部署公鑰
得到部署公鑰 , 以linux為例 : cat ~/.ssh/id_rsa.pub
然后點(diǎn)擊右上角的 ,添加部署公鑰
粘貼剛才得到公鑰到這里 ,不需要授予推送權(quán)限 ,點(diǎn)擊新建即可
建立Capistrano工程上述和以下操作都是在本地進(jìn)行 , 而非遠(yuǎn)程服務(wù)器上
進(jìn)入到一個(gè)你喜歡的目錄里 , 然后使用gem insatll 來初始化一個(gè)項(xiàng)目
如下這樣就是創(chuàng)建成功了
需要修改3個(gè)配置 , 項(xiàng)目名 , 可訪問的GIT項(xiàng)目地址 ,需要自動(dòng)部署的機(jī)器用戶名與IP地址
值的一提的是 ,服務(wù)器與GIT地址都需要可以免密碼訪問
配置項(xiàng)目名與GIT倉(cāng)庫(kù)地址
使用你喜歡的編輯器打開 deploy 目錄下的deploy.rb 文件 ,并更新如下這些配置
配置各個(gè)環(huán)境的機(jī)器配置
Cap可以配置多種身份 ,例如dba使用的db ,前置web服務(wù)器web ......
這里只配置一臺(tái)前置服務(wù)器 ,以web身份為例 .
使用你喜歡的編輯器打開 deploy 目錄下的deploy.rb 文件 ,并更新如下這些配置 ,多臺(tái)機(jī)器以空格分割 ,這里我添加了兩臺(tái) .
確保你添加的這些機(jī)器可以不使用密碼進(jìn)行ssh遠(yuǎn)程登陸 ,否則一定會(huì)部署失敗
配置遠(yuǎn)程服務(wù)器使Cap部署時(shí)可以不需要密碼 ,本來不打算寫 ,想了想還是補(bǔ)上了
用你喜歡的方法使用root賬戶登陸需要部署的遠(yuǎn)程服務(wù)器
把本地的公鑰使用你喜歡的方法追加到 `~/.ssh/authorized_keys 文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
最終的authorized_keys文件就像這樣子
把最新的代碼推送到剛剛創(chuàng)建的GIT倉(cāng)庫(kù)中 ,當(dāng)然也可以不用推送 ,空項(xiàng)目默認(rèn)會(huì)有README.md
然后初始化Capistrano的目錄執(zhí)行cap production deploy
等待好消息
此時(shí)自動(dòng)部署就已經(jīng)完成了 ,接下來我們來看看遠(yuǎn)程服務(wù)器中是什么樣子的查看遠(yuǎn)程服務(wù)器
看到這里 ,所有的疑惑大概都解開了
Cap的核心原理就是 ,當(dāng)客戶端進(jìn)行推送時(shí) ,自動(dòng)登陸到各個(gè)身份的各個(gè)服務(wù)器 ,然后自動(dòng)配置文件中的部署目錄 , 然后拉取最新的代碼到release目錄中 ,并把current軟鏈接到最新的代碼目錄.
例如laravel項(xiàng)目 . nginx的root就可以配置到 path/current/public , 然后每次推送之后 ,Cap都會(huì)幫我們把current的代碼變成最新拉取的那一份 ,我們提供的服務(wù)也就隨之更新了 .
目錄結(jié)構(gòu) , 如下
.
├── current -> /www/wwwroot/gly.inc.api.binger.site/releases/20180417091707
├── releases
│?? └── 20180417091707
├── repo
├── revisions.log
└── shared
展示
End文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28612.html
摘要:平安夜圣誕節(jié)總是讓人聯(lián)想到平安果圣誕襪圣誕樹圣誕老人圣誕櫥窗等等讓人歡喜滿滿期望滿滿的詞語。禮物祝福笑臉驚喜溫暖都伴隨而來,最近課程輕松,便想著做一個(gè)有關(guān)圣誕的小程序,來當(dāng)作對(duì)小程序的初步學(xué)習(xí)。 Christmas is coming! 平安夜/圣誕節(jié)總是讓人聯(lián)想到平安果、圣誕襪、圣誕樹、圣誕老人、圣誕櫥窗等等讓人歡喜滿滿、期望滿滿的詞語。禮物、祝福、笑臉、驚喜、溫暖都伴隨而來,最...
摘要:前言最近在用封裝純數(shù)字的輸入框,開發(fā)過程中發(fā)現(xiàn)不是坑,也有不少值得研究的地方。因此我們要繼續(xù)補(bǔ)充下面兩步,并且由于事件觸發(fā)時(shí)值還沒被修改,于是我們需要將值和當(dāng)前輸入值做組合來做預(yù)判,進(jìn)一步擴(kuò)大非法字符集。 前言 ?最近在用Polymer封裝純數(shù)字的輸入框,開發(fā)過程中發(fā)現(xiàn)不是坑,也有不少值得研究的地方。本系列打算分4篇來敘述這段可歌可泣的踩坑經(jīng)歷: 《動(dòng)手寫個(gè)數(shù)字輸入框1:input[...
摘要:前言最近在用封裝純數(shù)字的輸入框,開發(fā)過程中發(fā)現(xiàn)不是坑,也有不少值得研究的地方。因此我們要繼續(xù)補(bǔ)充下面兩步,并且由于事件觸發(fā)時(shí)值還沒被修改,于是我們需要將值和當(dāng)前輸入值做組合來做預(yù)判,進(jìn)一步擴(kuò)大非法字符集。 前言 ?最近在用Polymer封裝純數(shù)字的輸入框,開發(fā)過程中發(fā)現(xiàn)不是坑,也有不少值得研究的地方。本系列打算分4篇來敘述這段可歌可泣的踩坑經(jīng)歷: 《動(dòng)手寫個(gè)數(shù)字輸入框1:input[...
閱讀 664·2021-11-11 16:55
閱讀 2166·2021-11-11 16:55
閱讀 1958·2021-11-11 16:55
閱讀 2350·2021-10-25 09:46
閱讀 1614·2021-09-22 15:20
閱讀 2295·2021-09-10 10:51
閱讀 1712·2021-08-25 09:38
閱讀 2626·2019-08-30 12:48