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