到目前为止,应用程序部署的基本结构已经创建。 现在我们将进入实际的部署过程。 首先,我们将更改一些设置,然后部署我们的应用程序。

3. Deploy.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 执行命令,从存储库中查找最新版本。 但是,在我们的场景中,并没有设置液滴来访问存储库。 这是因为,如果我们设置液滴访问存储库,那么我们将被要求在液滴上放置私钥,以便无需密码就可以访问它。 这可能会导致安全问题,因此我们允许工作站访问存储库。

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

  1. 从远程存储库检查最新版本
  2. 然后它被压缩
  3. 接下来,SSH 将其发送到液滴
  4. 最后进行解压缩

虽然在部署过程中需要更多的时间,但这使我们的安全级别得到了提高。

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

 set :deploy_via, :copy

杂种用户

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

set :runner, user

Deploy.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 在初始部署时将如何启动。 这可以通过使用位于 scripts 文件夹中的一个名为 spin 的文件来实现。 现在我们将在工作站上创建它。

 touch script/spin

此文件将包含 Capistrano 用于控制 mongrels 的命令

现在,我们将其属性设置为 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"

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

第一次部署

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

cap deploy:cold

您将看到许多信息滚动在终端。 一旦一切都完成了,我们可以看到卡皮斯特拉诺做了我们所期望的一切:

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

摘要:

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