Capistrano什么是多机热部署热部署是在应用程序运行的同时升级软件,无需重启应用程序。多机热部署,同时升级多台服务器什么是Capistrano是一个开源的多台服务器运行脚本的工具,主要用于部署web应用。它自动完成多台服务器上新版本的同步,包括数据库的变化。为什么需要Capistrano假设我们的应用是由内网的多台开发机,一台测试服务器和一台预发布服务器,以及多台公网提供服务的服务器组成。那么我们就面临这样一个问题:多个开发完成并通过本地测试后,再提交到中央git服务器。那么如何将git中的代码推送到测试服务器呢?ftp或者手动去很多台服务器一台一台的执行gitpull。显然,这两种方法都不是我们最喜欢的。如果你想解决这个问题,那么我认为你需要Capistrano。Capistrano的能力Capistrano可以通过简单的配置和简单的命令,自动拉取不同环境下多台服务器的代码,可以检索和更新,通过命令可以方便的回滚版本,防止错误的代码上线提供不太可靠的服务.安装CapistranoCapistrano是一个由ruby驱动的开源程序,所以可以使用包管理器gem轻松安装,并且依赖ruby安装ruby和gemsudoyum-yinsatllruby??gem替换gem源为国,这里选择raby-china源gemsources--addhttps://gems.ruby-china.org/--removehttps://rubygems.org/gemsources-lhttps://gems.ruby-china.org安装Capistranogeminstallcapistrano创建GIT项目进行测试由于我们需要将GIT仓库部署到服务器上,所以首先要有一个GIT仓库。以coding为例(gayhubprivate项目需要付费,但我没钱)。创建私有项目,添加部署公钥,获取部署公钥。以linux为例:cat~/.ssh/id_rsa.pub点击右上角,添加部署公钥,粘贴你这里只是拿到公钥,不需要授予推送权限,即可单击新建以创建Capistrano项目。上面和下面的操作都是在本地进行的,没有在远程服务器上进行。进入一个自己喜欢的目录,然后使用geminsatll初始化一个项目,如下图,说明创建成功。修改Capistrano配置,需要修改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仓库,当然不需要push。空项目默认会有README.md,然后初始化Capistrano目录,执行capproductiondeploy,等待好消息。此时自动部署已经完成。接下来我们看一下在远程服务器上是什么样子的Viewremote服务器看到这个,大概疑惑都解开了。Cap的核心原理是在客户端推送时,自动登录各个身份的各个服务器,然后自动在文件中配置部署目录,然后拉取最新的代码。进入release目录,将current软链接到最新的代码目录。比如laravel项目。nginx的root可以配置为path/current/public,每次push后,Cap都会帮我们把当前代码设为最新,我们提供的服务也会随之更新。目录结构如下。├──当前->/www/wwwroot/gly.inc.api.binger.site/releases/20180417091707├──发布│└──20180417091707├──repo├──revisions.log└──分享展示完
