介绍
部署是生产基于 Web 的应用程序的关键领域之一,也是许多大公司引以为豪的领域。 更准确地说,如何部署。 这项任务,有些人确实认为是一件苦差事,但似乎对您的项目几乎没有直接或附加价值。 然而,精心设计的 [部署] 流程肯定有助于减少开销,例如浪费时间试图让产品上线。
除非您有非常具体(且不断变化)的需求,并且具有绝对以领域为中心的需求,否则当您将应用程序上线时,利用各种专用工具、自动化方法或脚本将帮助您恢复你的实际工作发展得更快——大大!
在这篇 DigitalOcean 文章中,我们将深入了解 Capistrano:一个基于 Ruby 的远程服务器自动化工具,可轻松用于自动化日常部署和系统管理任务。 使用 Capistrano,您几乎可以完全自动化您通常为使产品上线而采取的所有操作。
目录
1. 卡皮斯特拉诺
- Ruby 编程语言
- 卡皮斯特拉诺食谱
- 系统/服务器管理
- 应用部署
2. 安装 Capistrano
- 准备系统
- 安装 Ruby
- 安装 Capistrano
3. Capistrano 入门
- Capistrano 基础知识
- 在项目中启动 Capistrano
- 创建用于使用 Capistrano 进行部署的用户
卡皮斯特拉诺
正如我们在介绍中提到的,Capistrano 是一个基于 Ruby 的开源服务器管理工具。 尽管它可能只是许多现有自动化解决方案的另一种替代方案,但由于其出色的 [高级] 功能,它是一种出色的使用方法。
与其他自动化库类似,使用 Capistrano 可以在虚拟服务器上执行任意功能而不会受到直接干扰 - 通过让 Capistrano 执行脚本(即 一个食谱)。 但是,一般而言,您可以将此工具视为您自己的部署助手,几乎可以帮助您完成从在部署机器上获取代码到引导部署过程的任何事情——它可以一次在多个系统上执行此操作,也可以在一个循环时尚。
查看互联网上的许多教程,您可能会觉得 Capistrano 是 RoR 的完美框架。 然而,尽管它是一个专注于 Ruby 的框架(或工具),但您可以通过它的 recipes 安全地使用它来处理许多不同类型的部署场景,包括部署 PHP Web 应用程序。
Ruby 编程语言
Ruby 是通用的(即 不是为解决特定问题而创建的),动态编程语言随着 Ruby-on-Rails Web 应用程序开发框架的发布而广受欢迎。
使用 Ruby 编写脚本的简洁有序的方式(感谢该语言的设计方式)帮助该语言获得了巨大的发展势头。 再加上 RoR 框架的目标和理念,以及它作为面向对象编程 (OOP) 语言提供的功能(与当时可用的竞争对手相比),Ruby 成为过去十年中最受欢迎的语言之一。
Capistrano 是一个基于 Ruby 的工具,它为用户提供了在编译部署配方时利用 Ruby 简洁明了的语法的可能性。
卡皮斯特拉诺食谱
Capistrano 术语中的食谱转换为包含部署(或管理)应用程序和服务器的操作方向的文件。 可以修改这些配方以支持与 Ruby(或 Rails)无关的各种特定语言的部署。 您可以将它们视为 Capistrano 用来执行其操作的脚本。
系统/服务器管理
如果您想知道 Capistrano 在什么情况下可能会派上用场,您可以在下面找到一些示例。
系统和服务器管理工作(通常)包括与以下相关的几乎所有内容:
- 搭建服务器
- 安装应用程序
- 维护运行这些应用程序的系统
- 和监控
当您开始使用自己的 VPS(这是一个具有完全控制/访问权限的成熟虚拟化服务器)时,您将很快开始熟悉那些看似神秘的事情。
随着您的应用程序开始流行并且事情开始增长,管理多个液滴和一遍又一遍地重复所有内容的需求不再变得有趣。 当您部署应用程序并处理它们的维护时,很自然地期望您会遇到一些问题——尤其是开销和时间浪费。
Capistrano 可以帮助他们解决大部分问题,如果不是全部的话 - 从应用程序部署开始。
应用部署
部署应用程序(无论是网站、API 还是服务器)通常意味着从头开始(或从及时拍摄的快照)设置系统,通过更新所有内容、下载依赖项、设置文件来准备系统结构和权限,然后最终上传您的代码库 - 或使用源代码控制管理器 (SCM) 如 Git 下载它。
在开发过程中,您可能会有需要在每个步骤中例行执行的命令(例如 在进入部署周期之前)。
能够以逻辑组织和 - 最重要的是 - 可编程的方式编写这些任务(本地和远程)的脚本,在您意识到浪费了多少时间不断重复相同的步骤后不久证明是非常宝贵的,这使得一切都容易出错过程。
安装 Capistrano
注意: 在本文中,我们将重点介绍在 VPS 上安装 Capistrano,在 CentOS 6.5 操作系统上运行。 如果您正在使用另一种类型(例如 Ubuntu),同样的逻辑将适用,但建议您在此处查看 官方 Capistrano 文档 进行安装。
注意: 本节,我们设置当前可用的最新 Ruby 版本,是我们关于该主题的专用文章的摘要 - 如何在 CentOS 6.5 上安装 Ruby 2.1.0。
准备系统
为了安装 Ruby(和 Capistrano),我们需要准备我们的 CentOS droplet,为它配备用于安装其他应用程序和工具的开发工具(例如 从源代码安装 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
一旦我们准备好系统,借助 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 来执行此操作。
或者,您可以访问 此处 查看 DigitalOcean 关于 Git 的社区文章,了解如何在 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
组。
让我们添加 deployer 作为部署者:
# 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 的更多信息,请查看有关 Linux 基础知识 的 DigitalOcean 社区文章。
就是这样! 我们现在准备好使用 Capistrano 进行部署了。 继续阅读我们的下一篇 Capistrano 文章,了解如何在各种部署场景中使用此工具。