如何使用Capistrano自动部署:入门教程

介绍

制作基于Web的应用程序的关键领域之一是部署。如何部署,这项任务确实被视为一件苦差事,似乎对您的项目几乎没有任何直接或附加价值。然而,一个精心设计的部署过程肯定有助于减少开销,例如不会浪费时间在让产品上线。

除非您有一个非常具体(和改变)的要求,具有绝对的以域为中心的需求,当您的应用程序联机时,利用各种专用工具,自动化方法或脚本来帮助使你实际的开发工作更快- 好极了!

我们将详细介绍Capistrano:一种基于Ruby的远程服务器自动化工具,可以轻松地用于自动化普通部署和系统管理任务。使用Capistrano,您几乎可以完全自动执行通常用于生产产品的所有操作。

目录

1. Capistrano

  1. Ruby编程语言
  2. Capistrano操作方式
  3. 系统/服务器管理
  4. 应用程序部署

2. 安装Capistrano

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

3. Capistrano 入门

  1. Capistrano基础知识
  2. 在项目中启动Capistrano
  3. 创建用Capistrano进行部署的用户

Capistrano

Capistrano,如我们的介绍中所提到的,是一个基于Ruby的开源服务器管理工具。虽然它可能只是许多现有自动化解决方案的另一种替代方案,但由于其高级功能,它是一种非常出色的解决方案。

与其他自动化库类似,使用Capistrano可以在虚拟服务器上执行任意功能而不会有直接干扰 - 通过让Capistrano执行脚本(即操作方式)。但是,一般情况下,您可以将此工具视为您自己的部署助手,帮助您完成从部署计算机上获取代码到引导部署过程的几乎所有操作 -并且它可以在多个系统上同时或以循环方式执行。

看看互联网上的许多教程,你可能会觉得Capistrano是RoR的完美框架。但是,尽管是一个专注于Ruby的框架(或工具),您可以安全地使用它来处理许多不同类型的部署方案及其配方,包括部署PHP Web应用程序。

Ruby编程语言

Ruby是一种通用的(即不是为解决特定问题而创建的),动态编程语言随着Ruby-on-Rails Web应用程序开发框架的发布而大受欢迎。

Ruby编写脚本的简洁有序的方式帮助语言获得了巨大的动力。结合RoR框架的目标和心态,以及它作为面向对象编程(OOP)语言提供的功能(与当时可用的竞争对手相比),Ruby成为过去十年中最受欢迎的语言之一。如果您使用的是CentOS系统或者Windows系统,可以参考腾讯云开发者实验室在 Linux 上部署 Ruby On Rails 环境windows下搭建Ruby开发环境,腾讯云社区也提供Ruby中文开发者手册,欢迎使用。

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

Capistrano 操作方式

Capistrano lingo中的操作方式转换为包含部署(或管理)应用程序和服务器的操作指示的文件。 可以修改这些配方以支持与Ruby(或Rails)无关的各种语言特定部署。 您可以将它们视为Capistrano用于执行其操作的脚本。

系统/服务器管理

如果您想知道Capistrano可能派上用场的方式,下面你可以找到一些例子。

系统和服务器管理作业(通常)包括与以下内容相关的几乎所有内容:

  • 构建服务器
  • 安装应用程序
  • 维护运行这些应用程序的系统
  • 监测

当您开始使用自己的VPS(这是一个完全控制/访问的完全成熟的虚拟化服务器)时,看起来很神秘的东西很快就会变得熟悉。

随着您的应用程序开始流行并且事情开始增多,管理多个CVM并且一遍又一遍地重复所有内容的需求不再变得有趣。当您部署应用程序并处理其维护时,很自然地会发现您会遇到一些问题 - 特别是开销和时间浪费。

Capistrano可以帮助他们处理大多数(如果不是全部) - 从应用程序部署开始。

应用程序部署

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

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

能够以有逻辑的组织编写这些任务(本地和远程)的脚本,最重要的,在你意识到浪费了多少时间不断重复相同的步骤,在此过程中呈现一切容易出错的情况之后,编程方式很快被证明是非常有价值的。

安装Capistrano

注意:在本文中,我们将重点放在运行在CentOS 6.5操作系统上的VPS上安装Capistrano。如果您正在使用其他类型(例如Ubuntu),则会应用相同的逻辑,但建议您查看此处官方Capistrano文档以进行安装。

准备系统

为了安装Ruby(和Capistrano),我们需要准备我们最小的CentOS CVM,为其安装开发工具,以便安装其他应用程序和工具(例如,从源代码安装Ruby的编译器)。有关CVM腾讯云服务器的相关知识可以具体参考腾讯云学院中腾讯云服务器CVM的基础应用课程

让我们从更新系统开始。

运行以下命令以更新基于CentOS的CVM的默认工具:

yum -y update

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

yum groupinstall -y 'development tools'

安装Ruby

我们将使用Ruby Version Manager 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

一旦我们准备好系统,RubyGems就可获得Capistrano的最新版本。

您只需使用以下内容即可获得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)来执行此操作。

注意:所推荐的Capistrano,包含你仓库内的任何敏感信息(如数据库连接的安全凭证)。

在项目中启动Capistrano

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

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

创建使用Capistrano进行部署的用户

使用Capistrano进行部署时,执行配方的好方法是使用默认root以外的用户。首先,我们将创建一个部署者组,并授予他们继续的权限。

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

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
​
..

就是这样!我们现在准备使用Capistrano进行部署。


参考文献: 《 How To Use Capistrano to Automate Deployments: Getting Started》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

Kafka和消息队列之间的超快速比较

本文的目的是让读者快速了解Kafka与消息队列之间的关系,告诉读者为什么会考虑使用它的原因。以下为译文。 Kafka最初是由Linkedin社区开发的一项技术。...

1936
来自专栏Python中文社区

一个多线程知乎用户爬虫的实现

專 欄 ❈默然,Python中文社区专栏作者。 博客:https://www.zhihu.com/people/moranzcw GitHub:https:/...

2745
来自专栏全华班

springcloud学习手册-API Gateway (API网关)

导读 | API Gateway (API网关) ? 一、为什么服务之间需要使用API Gateway (API网关)呢? 引用「Chris Richardso...

3966
来自专栏跟着阿笨一起玩NET

C#消息队列(RabbitMQ)零基础从入门到实战演练

3392
来自专栏繁花云

利用Speedtest测试服务器网速

speedtest是由国外用户sivel编写的一款跨平台的网速测试软件,使用GO编写,支持大部分平台

4730
来自专栏mini188

哪种缓存效果高?开源一个简单的缓存组件j2cache

背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的。我在项目中也开始接触一些缓存的需求。 开始简单的就用jvm(java...

2816
来自专栏北京马哥教育

etcd:从应用场景到实现原理的全方位解读

马哥linux运维 | 最专业的linux培训机构 ---- 随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作...

56012
来自专栏Rainbond开源「容器云平台」

好雨云帮近期问答集锦(1.16 - 2.5)

1243
来自专栏IT大咖说

前后端高效协作开发的11条建议

内容来源:作者,深予之 (@senntyou),https://github.com/senntyou/blogs;来自,https://segmentfaul...

921
来自专栏肖洒的博客

爬虫入门(一):轻量级爬虫

其中,内存适合个人,缓存数据库适合大型公司。 ### 4.网页下载器(urllib2)[核心组件]() - 网页下载器:将互联网上URL对应的网页下载到...

621

扫码关注云+社区

领取腾讯云代金券