多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > capistrano3.5環境搭建

capistrano3.5環境搭建

來源:程序員人生   發布時間:2016-07-06 08:54:57 閱讀次數:3305次
官方文檔:

http://capistranorb.com/documentation/getting-started/installation/

簡介:

capistrano是1個自動向遠程服務器部署代碼的工具,使用起來非常的方便。

它可以將你的代碼自動從git或svn上pull出來指定分支的代碼到你的部署目錄下,同時保護1個current軟鏈接,指定最新的版本。

同時它出會將最近(默許5次)幾次的版本寄存在release1, release2,releaseN目錄下。

當你需要更新部署時,只需要1個條命令:

cap development deploy

便可將新代碼pull下來,也能夠通過1個命令:

cap deploy:rollback

實現將代碼回滾到上1次的版本,方便我們切換不同版本和部署。

最NB的話,它默許通過SSH鏈接所有的遠程服務器,生產環境或開發環境或DB環境,將所有代碼同步到所有環境下,真實的實現1鍵部署多個服務器

本教程使用的git為coding.net的免費git庫,實現ssh遠程部署到development和production環境下。

1. SSH自動登錄remote server

1. 生成ssh密鑰

1般登錄服務器都需要用戶名和密碼,通過SSH的安全策略實現無用戶名和密碼的遠程訪問服務器,這時候你需要生成ssh public Key。

通過下面的命令生成1對rsa Key。

me@localhost $ ssh-keygen -t rsa -C 'me@my_email_address.com'
它會在你在~/.ssh/目錄下生成id_rsa和id_rsa.pub,其中id_rsa為私鑰,id_rsa.pub為公鑰,你將公鑰拷貝到遠程服務器上的~/.ssh/目錄下,便可實現對遠程服務器的免用戶名密碼登錄。

[me@localhost ~]# ls ~/.ssh/
id_rsa  id_rsa.pub  known_hosts


2. 將私鑰加載到ssh授權代理中

me@localhost $ ssh-add Identity added: /Users/me/.ssh/id_rsa (/Users/me/.ssh/id_rsa)

通過上面的命令將私鑰添加到ssh授權代理中,可以通過下面的命令查看下,是不是已加載成功。

如果上面命令出錯:

履行:

eval `ssh-agent -s`      注意這里是反引號

me@localhost $ ssh-add -l 2048 af:ce:7e:c5:93:18:39:ff:54:20:7a:2d:ec:05:7c:a5 /Users/me/.ssh/id_rsa (RSA)

注意:如果ssh-add失敗,先履行ssh-agent bash,再履行上述命令

小技能:

ssh-add在每次重啟后都要重新履行1下,為了方便不用每次都履行它,可以寫個配置文件:

vim ~/.ssh/config


##################
# For Coding.net #
##################
Host  coding.net
        #User depoly
        Hostname YOUR_SERVER
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa


3. 遠程服務器添加deploy用戶

所有的遠程服務器都要創建1個deploy用戶,并且設置Lock為無密碼,讓他人可以不設置密碼登錄。

root@remote $ adduser deploy root@remote $ passwd -l deploy
The second line locks the user, it changes the user’s password to an untypable string, guaranteeing that the user has no password which can be used to log in.

4.設置遠程服務器授權的公鑰

將上面第1步生成的id_rsa.pub公鑰文件拷貝到所有需要部署的遠程服務器(再次確認是不是已創建了deploy用戶),可使用scp,也能夠直接打開拷貝內容。

將id_rsa.pub里的內容拷貝到遠程服務器的~/.ssh/目錄下,并且命名為:authorized_keys

示例使用拷貝文本方式:

root@remote $ su - deploy deploy@remote $ cd ~ deploy@remote $ mkdir .ssh deploy@remote $ echo "ssh-rsa jccXJ/JRfGxnkh/8iL........dbfCH/9cDiKa0Dw8XGAo01mU/w== /Users/me/.ssh/id_rsa" >> .ssh/authorized_keys deploy@remote $ chmod 700 .ssh deploy@remote $ chmod 600 .ssh/authorized_keys
注意:

  1定要將公鑰放到deploy用戶的HOME目錄下

  1定要給公鑰文件指定權限

  1定要將公鑰命名為:authorized_keys

5. 測試無用戶名密碼登錄

ssh  deploy@REMOTE_SERVER_IP


2. 安裝capistrano環境

完全依照官方手冊說明來做。

$ gem install capistrano
$ git clone https://github.com/capistrano/capistrano.git $ cd capistrano $ gem build *.gemspec $ gem install *.gem

1. 初始化cap環境

  1. $ sudo cap install
  2. mkdir -p config/deploy
  3. create config/deploy.rb
  4. create config/deploy/staging.rb
  5. create config/deploy/production.rb
  6. mkdir -p lib/capistrano/tasks
  7. Capified
  8. $ tree
  9. .
  10. ├── Capfile
  11. ├── config
  12.    ├── deploy
  13.       ├── production.rb
  14.       └── staging.rb
  15.    └── deploy.rb
  16. └── lib
  17. └── capistrano
  18. └── tasks


2. 配置deploy.rb

deploy.rb為主配置文件。所有子配置文件可以重寫該配置信息。

我的配置以下:

set :application, 'YOUR_APP_NAME'
set :repo_url, 'git@git.coding.net:USER_NAME/PROJECT.git'


3. 配置development.rb和production.rb

在config/deploy/拷貝development.rb文件

cp production.rb development.rb

development.rb內容以下:

server 'DEV_SERVER_IP',   #開發環境服務器地址
        user: 'deploy',                #開發環境服務器用戶名,上面已創建
        roles: %w{web app},
        ssh_options: {                # ssh配置,用來無用戶名和密碼登錄遠程服務器,具體配置參數見:http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start
                user: 'deploy', 
                keys: %w(/root/.ssh/id_rsa),   # ssh私鑰所在目錄
                port:22,                  # 遠程服務器ssh開放端口
                forward_agent: true,    # 開啟代理轉發,參考:http://unixwiz.net/techtips/ssh-agent-forwarding.html#fwd
                auth_methods: %w(publickey password)
                # password: 'please use keys'
        }

production.rb內容參考development.rb。


4. 開始部署吧

在你的利用目錄下履行:

cap development deploy

你可以看到以下履行結果以下:

[root@localhost ~]# cap development deploy 00:00 git:wrapper 01 mkdir -p /tmp/PROJECT/ ? 01 deploy@YOUR_SERVER 0.232s Uploading /tmp/PROJECT/git-ssh.sh 100.0% 02 chmod +rx /tmp/PROJECT/git-ssh.sh ? 02 deploy@YOUR_SERVER 0.135s 00:00 git:check 01 git ls-remote --heads git@git.coding.net:USER_NAME/PROJECT.git 01 8fa0414597075b5918ccb137222fc00b8c429a28 refs/heads/develop 01 d32023f5853a1b3e11bdad00333fa0389916b75a refs/heads/master ? 01 deploy@YOUR_SERVER 0.511s 00:01 deploy:check:directories 01 mkdir -p /var/www/PROJECT/shared /var/www/PROJECT/releases ? 01 deploy@YOUR_SERVER 0.136s 00:01 git:clone 01 git clone --mirror git@git.coding.net:USER_NAME/PROJECT.git /var/www/PROJECT/repo 01 Cloning into bare repository '/var/www/PROJECT/repo'... ? 01 deploy@YOUR_SERVER 8.670s 00:10 git:update 01 git remote update --prune 01 Fetching origin ? 01 deploy@YOUR_SERVER 0.329s 00:10 git:create_release 01 mkdir -p /var/www/PROJECT/releases/20160628134729 ? 01 deploy@YOUR_SERVER 0.157s 02 git archive master | tar -x -f - -C /var/www/PROJECT/releases/20160628134729 ? 02 deploy@YOUR_SERVER 1.889s 00:13 git:set_current_revision 01 echo "d32023f5853a1b3e11b33333efa0389916b75a" >> REVISION ? 01 deploy@YOUR_SERVER 0.161s 00:13 deploy:symlink:release 01 ln -s /var/www/PROJECT/releases/20160628134729 /var/www/PROJECT/releases/current ? 01 deploy@YOUR_SERVER 0.137s 02 mv /var/www/PROJECT/releases/current /var/www/PROJECT ? 02 deploy@YOUR_SERVER 0.138s 00:14 deploy:log_revision 01 echo "Branch master (at d32023f5853a1b3e11bdad002aefa449916b75a) deployed as release 20160628134729 by root" >> /var/www/YOUR… ? 01 deploy@YOUR_SERVER 0.157s

1些坑:

默許cap會將代碼部署到 /var/www目錄下,1定要確保有deploy用戶有對該目錄的讀寫權限

建議使用 id_rsa.pub authorized_keys 的方式進行免密碼登陸

首次部署, 需要履行 cap [environment] deploy:check 命令, 把 linked_files 在服務器上創建



Just enjoy it!!



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 伊人久久中文字幕久久cm | 免费自拍视频 | 国产一区二区不卡视频 | 欧美综合图区亚欧综合图区 | 国产精品国产三级国产专区不 | 97精品伊人久久久大香线蕉 | 性久久久久 | 国产在线精品一区二区三区 | 牛和人交vvideos欧美 | www.伊人网| 亚洲午夜免费视频 | 亚洲jizzjizz中文在线播放 | 久草三级 | 可以免费观看一级毛片黄a 可以免费看的黄色网址 | 永久免费毛片在线播放 | 2020亚洲男人天堂 | 一区二区三区久久 | 欧美色碰碰碰免费观看长视频 | 有毛片毛毛片毛片毛片 | 国产日产高清欧美一区二区三区 | 人成精品 | 伊人久久综合成人亚洲 | 国产视频在线一区 | 老司机福利在线观看 | 午夜老司机永久免费看片 | 亚洲精品免费网站 | 99热久久久这里只有精品免费 | 欧洲一级毛片 | 国产精品高清一区二区三区不卡 | 中文字幕激情视频 | 欧美日韩另类综合 | 亚洲一区影院 | 日韩精品亚洲人成在线播放 | 中文字幕曰韩一区二区不卡 | 另类一区 | 欧美在线成人午夜影视 | 国产精品v欧美精品∨日韩 国产精品v欧美精品v日本精 | 国产高清一区二区三区视频 | 免费a一级毛片在线播放 | 欧美黑人xxxx猛战黑人 | 在线观看视频网站www色 |