介绍
制作基于Web的应用程序的关键领域之一是部署。如何部署,这项任务确实被视为一件苦差事,似乎对您的项目几乎没有任何直接或附加价值。然而,一个精心设计的部署过程肯定有助于减少开销,例如不会浪费时间在让产品上线。
除非您有一个非常具体(和改变)的要求,具有绝对的以域为中心的需求,当您的应用程序联机时,利用各种专用工具,自动化方法或脚本来帮助使你实际的开发工作更快- 好极了!
我们将详细介绍Capistrano:一种基于Ruby的远程服务器自动化工具,可以轻松地用于自动化普通部署和系统管理任务。使用Capistrano,您几乎可以完全自动执行通常用于生产产品的所有操作。
Capistrano,如我们的介绍中所提到的,是一个基于Ruby的开源服务器管理工具。虽然它可能只是许多现有自动化解决方案的另一种替代方案,但由于其高级功能,它是一种非常出色的解决方案。
与其他自动化库类似,使用Capistrano可以在虚拟服务器上执行任意功能而不会有直接干扰 - 通过让Capistrano执行脚本(即操作方式)。但是,一般情况下,您可以将此工具视为您自己的部署助手,帮助您完成从部署计算机上获取代码到引导部署过程的几乎所有操作 -并且它可以在多个系统上同时或以循环方式执行。
看看互联网上的许多教程,你可能会觉得Capistrano是RoR的完美框架。但是,尽管是一个专注于Ruby的框架(或工具),您可以安全地使用它来处理许多不同类型的部署方案及其配方,包括部署PHP Web应用程序。
Ruby是一种通用的(即不是为解决特定问题而创建的),动态编程语言随着Ruby-on-Rails Web应用程序开发框架的发布而大受欢迎。
Ruby编写脚本的简洁有序的方式帮助语言获得了巨大的动力。结合RoR框架的目标和心态,以及它作为面向对象编程(OOP)语言提供的功能(与当时可用的竞争对手相比),Ruby成为过去十年中最受欢迎的语言之一。如果您使用的是CentOS系统或者Windows系统,可以参考腾讯云开发者实验室在 Linux 上部署 Ruby On Rails 环境和windows下搭建Ruby开发环境,腾讯云社区也提供Ruby中文开发者手册,欢迎使用。
Capistrano是一个基于Ruby的工具,它为用户提供了在编译部署配方时利用Ruby干净清晰的语法的可能性。
Capistrano lingo中的操作方式转换为包含部署(或管理)应用程序和服务器的操作指示的文件。 可以修改这些配方以支持与Ruby(或Rails)无关的各种语言特定部署。 您可以将它们视为Capistrano用于执行其操作的脚本。
如果您想知道Capistrano可能派上用场的方式,下面你可以找到一些例子。
系统和服务器管理作业(通常)包括与以下内容相关的几乎所有内容:
当您开始使用自己的VPS(这是一个完全控制/访问的完全成熟的虚拟化服务器)时,看起来很神秘的东西很快就会变得熟悉。
随着您的应用程序开始流行并且事情开始增多,管理多个CVM并且一遍又一遍地重复所有内容的需求不再变得有趣。当您部署应用程序并处理其维护时,很自然地会发现您会遇到一些问题 - 特别是开销和时间浪费。
Capistrano可以帮助他们处理大多数(如果不是全部) - 从应用程序部署开始。
部署应用程序(无论是网站,API还是服务器)通常意味着从头开始(或从及时拍摄的快照)设置系统,通过更新所有内容,下载依赖项,设置文件来准备它结构和权限,然后最终上传您的代码库 - 或使用源控制管理器(SCM)(如Git)下载它。
在开发过程中,您可能需要在每个步骤中定期执行命令(例如,在进入部署周期之前)。
能够以有逻辑的组织编写这些任务(本地和远程)的脚本,最重要的,在你意识到浪费了多少时间不断重复相同的步骤,在此过程中呈现一切容易出错的情况之后,编程方式很快被证明是非常有价值的。
注意:在本文中,我们将重点放在运行在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 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]
一旦我们准备好系统,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合作的关键是将您的项目提交到外部Git存储库,可以在部署期间下载它。
您可以选择任何提供商(如Github)来执行此操作。
注意:所推荐的Capistrano,不包含你仓库内的任何敏感信息(如数据库连接的安全凭证)。
启动Capistrano版本3与版本2略有不同,包含以下命令:
# Usage:
# Enter the project directory: cd [project-name]
# Initiate Capistrano: cap install
cd myapp
cap install
使用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》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。