深入了解Capistrano

来自菜鸟教程
跳转至:导航、​搜索

至此,已经创建了应用程序部署的基本结构。 现在我们将继续进行实际的部署过程。 首先,我们将更改一些设置,然后部署我们的应用程序。

部署.rb

在这个阶段,我们的 deploy.rb 文件应该是这样的

set :application, "domain.com"
set :user, "username"
set :repository,  "svn+MyTestProject1ssh://12.34.56.789/home/username/repository/MyTestProject1"

# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
# set :deploy_to, "/var/www/#{application}"

set :port, 30000

set :deploy_to, "/home/demoDir/public_html/#{application}"

# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion

role :app, application
role :web, application
role :db, application , :primary => true

现在我们将研究部署过程并定义部署所需的内容。

颠覆

Subversion 应该已经在本地机器上安装和配置。 Capistrano 在默认部署上工作,在 Droplet 上执行命令并从存储库中查找最新版本。 但是,在我们的场景中,还没有设置 droplet 来访问存储库。 这是因为,如果我们设置 droplet 来访问存储库,那么我们将需要将私钥放在 droplet 上,以便在没有密码的情况下访问它。 这可能会导致安全问题,因此我们允许工作站访问存储库。

这意味着我们的工作流程如下

  1. 从远程存储库中检查最新版本
  2. 然后被压缩
  3. 接下来,SSH 将其进一步发送到 Droplet
  4. 最后解压发生

尽管部署需要几秒钟的时间,但这为我们提供了更高的安全级别。

我们可以通过在 deploy.rb 文件中添加以下行来轻松设置 Capistrano 以使用此部署策略

 set :deploy_via, :copy

杂种用户

现在我们将设置启动 mongrel 实例的用户。 如果我们不这样做,脚本将失败。 我们将使用我们之前定义的相同用户。

set :runner, user

部署.rb

由于我们对 deploy.rb 文件进行了一些更改,它应该如下所示:

set :application, "domain.com"
set :user, "demo"
set :repository,  "svn+MyTestProject1ssh://12.34.56.789/home/usernamer/repository/MyTestProject1"

# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
# set :deploy_to, "/var/www/#{application}"

set :port, 30000

set :deploy_to, "/home/username/public_html/#{application}"

# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion

role :app, application
role :web, application
role :db, application , :primary => true

set :deploy_via, :copy

set :runner, user

部署的初始阶段

到目前为止,已经完成了部署应用程序的所有工作。 但是,还剩下一件事,那就是让它知道 mongrel 在初始部署时将如何启动。 这可以通过使用位于脚本文件夹中的名为 spin 的文件来完成。 我们现在将在工作站上创建它。

 touch script/spin

该文件将包含 Capistrano 用于控制杂种动物的命令

现在我们将在 subversion 中设置它的属性,以确保它具有正确的权限并且可以成功执行。

 svn propset svn:executable on script/spin

现在,我们将只在文件中放置一行与 mongrel 的用法相关的内容。

/home/username/public_html/domain.com/current/script/process/spawner -p 8000 -i 2 -e production

犯罪:

我们将运行以下命令来检查需要将哪些文件添加到 subversion 中,然后添加它们。

 svn status

也可以添加旋转文件

 svn add script/spin

最后,我们将提交更改到 subversion 存储库。

svn commit -m "added script/spin"

到目前为止,我们已经到了需要部署和服务应用程序的阶段。 为了使域在主域上可用,我们必须设置一个 vhost,它将专门用于需要部署的应用程序。

首次部署

以下命令将首次部署应用程序

cap deploy:cold

您将在终端中看到大量信息滚动。 一切完成后,我们可以看到 Capistrano 完成了我们预期的一切:

  1. Capistrano 从 subversion 检查了最新的代码
  2. 它将代码压缩到一个临时文件中
  3. 代码已上传
  4. 代码未压缩
  5. 然后,它复制代码并创建符号链接等
  6. 最后,它启动了 spin 文件中定义的两个 mongrel 实例

概括:

为应用程序配置虚拟主机的过程可能看起来有点令人沮丧。 默认情况下,Capistrano 并不打算安装和配置 Web 服务器。 相反,它允许我们采用现有设置并使用它通过使用简单的命令来部署和服务我们的应用程序。

埃特尔·斯维尔德洛夫