如何使用Capistrano的来自动化部署:入门

在这种DigitalOcean文章中,我们将采取在Capistrano的很好看:一个基于Ruby的远程服务器自动化的工具,它可以很容易地用于自动化世俗部署和系统管理任务。

介绍


生产基于Web的应用程序的关键领域之一是许多主要公司的自豪感,它是部署。 更精确地说, 如何部署 这个任务,有些人确实认为是一个杂事,似乎对您的项目增加很少或没有直接或额外的价值。 然而,精心设计的[部署]过程肯定有助于减少开销,例如浪费时间来获得在线产品。

除非你有一个非常具体(和不断变化的)需求,绝对需要领域,当时间来到把你的应用程序在线,利用各种专用工具,自动化方法或脚本将帮助你回到你的实际开发工作更快 - 大大!

在这篇DigitalOcean文章中,我们将对Capistrano:一个基于Ruby的远程服务器自动化工具进行一个很好的了解,它可以很容易地用于自动化的部署和系统管理任务。 使用Capistrano,您几乎可以完全自动化您通常采取的所有操作,以使您的产品。

目录


1. Capistrano


  1. Ruby编程语言
  2. CapistranoRecipe
  3. 系统/服务器管理
  4. 应用程序部署

2.安装Capistrano


  1. 准备系统
  2. 安装Ruby
  3. 安装Capistrano

3. Capistrano入门


  1. Capistrano基础
  2. 在项目内启动Capistrano
  3. 创建用于使用Capistrano部署的用户

Capistrano


Capistrano,正如我们的介绍中提到的,是一个基于Ruby的开源服务器管理工​​具。 虽然它可能出来作为许多现有自动化解决方案的另一个替代品,它是一个优秀的使用感谢其伟大的[高级]功能。

与其他自动化库类似,使用Capistrano任意函数可以在虚拟服务器上执行,而不会直接干扰 - 通过Capistrano执行脚本(即配方)。 但是,一般来说,您可以将此工具视为您自己的部署助手,几乎可以帮助您从部署机器上的代码引导部署过程,并且可以在多个系统上同时或在循环时尚。

看看在互联网上的许多教程,你可能会得到的印象是,卡皮斯特拉诺是RoR的匹配制天堂。 然而,尽管是一个Ruby为重点的框架(或工具),你可以放心地使用它来处理多种不同类型的部署方案,其Recipe ,其中包括部署PHP Web的应用程序。

Ruby编程语言


Ruby是一个通用目的(即不是为了解决一个特定的问题而创建的),动态编程语言已经通过发布Ruby-on-Rails web应用程序开发框架而获得了显着的普及。

简洁有序的方式,可以使用Ruby编写脚本(感谢语言的设计方式)帮助语言获得巨大的势头。 结合RoR框架的目标和心态,以及作为面向对象编程(OOP)语言提供的特性(与当时可用的竞争对手相比),Ruby成为过去十年中最受欢迎的语言之一。

Capistrano是一个基于Ruby的工具,它为用户提供了在编译其部署配方时利用Ruby干净清晰的语法的可能性。

CapistranoRecipe


Capistrano lingo中的Recipe翻译成包含部署(或管理)应用程序和服务器的操作说明的文件。 这些配方可以修改,以支持各种各样的语言特定部署,而不是Ruby(或Rails)相关。 你可以把它们想象成一个Capistrano用来执行它的动作的脚本。

系统/服务器管理


如果你想知道在什么情况下,Capistrano可能会派上用场,下面你可以找到几个例子。

系统和服务器管理作业(通常)包括几乎所有与之相关的事情:

  • 构建服务器

  • 安装应用程序

  • 运行这些应用程序的系统的维护

  • 和监控

当你开始使用自己的VPS(这是一个完全成熟的虚拟化服务器,具有完全的控制/访问),显示为一个谜的东西将很快开始变得熟悉你。

当你的应用程序开始获得一些受欢迎程度,事情开始增长,管理多个Droplet和重复一遍又一遍的需要停止了变得有趣。 当您部署应用程序并处理其维护时,很自然地期望您将遇到一些问题,特别是开销和时间浪费。

Capistrano可以帮助他们与大多数,如果不是所有的 - 从应用程序部署开始。

应用程序部署


部署应用程序(不管是网站,API还是服务器)通常意味着从头开始设置系统(或从时间拍摄的快照),通过更新一切,准备下载依赖关系,设置文件结构和权限,最后上传您的代码库,或者使用源代码控制管理器(SCM)(如Git)下载它。

在开发过程中,你可能需要在每个步骤(例如在进入部署周期之前)定期执行命令。

能够以逻辑组织和最重要的可编程方式对这些任务(本地和远程)进行脚本化,在你意识到浪费了多少时间不断地重复相同的步骤之后,证明是非常有价值的,倾向于在过程中。

安装Capistrano


注:在本文中,我们的重点是在一个VPS上安装Capistrano的,在CentOS 6.5操作系统上运行。 如果您正在使用另外一种(如Ubuntu的)工作,同样的逻辑也适用,但建议您在检查这里正式Capistrano的文件进行安装。

注意:此部分,因此我们成立了目前已经上市,最新的Ruby版本是我们关于这个问题的专门文章概要- 如何安装Ruby 2.1.0在CentOS 6.5

准备系统


为了安装Ruby(和Capistrano),我们需要准备我们的最低运费的CentOSDroplet,为其安装用于安装其他应用程序和工具(例如,从源代码安装Ruby的编译器)的开发工具。

让我们从更新我们的系统开始。

运行以下更新基于CentOS的Droplet的默认工具:

yum -y update

通过执行以下命令安装包含开发工具的软件包:

yum groupinstall -y 'development tools'

安装Ruby


我们将使用Ruby版本管理器RVM来下载并安装“rubies”(一个Ruby解释器,由RVM引用)。

运行以下两个命令来安装RVM并为Ruby创建一个系统环境:

curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh

最后,要在我们的系统上完成Ruby,让我们让RVM下载并安装Ruby版本2.1.0:

rvm reload
rvm install 2.1.0

为了验证Ruby是否确实已安装和设置,请运行以下命令:

ruby --version 
# ruby 2.1.0p0 (2013-12-25 revision 44422) [i686-linux]

安装Capistrano


一旦我们的系统准备好了,获得Capistrano的最新版本感谢RubyGems是一件轻而易举的事。

您可以简单地使用以下方式获取Capistrano版本3:

gem install capistrano

如果你想使用绝对最新的版本,你可以链接到Github存储库:

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

您可以按照与Ruby类似的方式验证您的Capistrano安装:

cap --version
# Capistrano Version: 3.1.0 (Rake Version: 10.1.0)

Capistrano入门


一旦所有必要的组件设置并准备就绪,我们可以继续Capistrano的基础知识在我们入门文章的最后一部分。

Capistrano基础


与Capistrano合作的关键是将您的项目提交到一个外部Git存储库,在部署期间可以下载它。

你可以选择任何提供者,如Github这样做。

另外,您也可以通过访问看到的Git DigitalOcean社区文章这里了解托管在一个VPS私人Git仓库或者了解如何使用Git工作。

注意:建议Capistrano的,你应该包含你的资料库中的任何敏感信息(如数据库连接安全凭据)。

在项目内启动Capistrano


启动Capistrano版本3与版本2稍有不同,包含以下命令:

# Usage:
# Enter the project directory: cd [project-name]
# Initiate Capistrano:         cap install
cd  myapp
cap install

创建用于使用Capistrano部署的用户


当使用Capistrano的部署,执行菜谱的好方法是通过使用比默认的用户root 首先,我们将创建一个部署者组,并授予他们继续操作的权限。

要向Droplet中添加新组,请运行以下命令:

groupadd deployers

现在,我们可以继续将用户添加到我们的deployers组特权。

让我们添加部署为部署:

# Usage: sudo usermod -a -G deployers [name]
sudo usermod -a -G deployers deployer

最后,给部署者组的权限,运行以下和编辑/etc/sudoers文件中:

nano /etc/sudoers

将以下行添加到组后面:

..
## Allows people in group wheel to run all commands
%deployers      ALL=(ALL) ALL

..

更多信息


注意:要了解更多有关SSH和sudo的,请在社区DigitalOcean文章Linux基础

就这样! 我们现在准备使用Capistrano进行部署。 继续我们的下一个Capistrano文章,了解如何在各种部署场景中使用此工具。

:提交OS Tezer