深入了解 Capistrano 的配置 #2
到目前为止,应用程序部署的基础结构已经创建。现在我们将进入实际的部署过程。首先,我们将更改一些设置,然后部署我们的应用程序。
部署.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 上放置私钥,以便无需密码即可访问它。这可能会导致安全问题,因此我们允许工作站访问存储库。
这意味着我们的工作流程如下
- 从远程存储库检查最新版本
- 然后压缩
- 接下来,SSH 将其进一步发送到 Droplet
- 最后解压
虽然部署时需要多花几秒钟,但这却提高了我们的安全级别。
我们可以通过在 deploy.rb 文件中添加以下行来轻松设置 Capistrano 以使用此部署策略
set :deploy_via, :copy
Mongrel 用户
现在我们将设置启动 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 用于控制 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
spin文件也可以添加
svn add script/spin
最后,我们将更改提交到 Subversion 存储库。
svn commit -m "added script/spin"
现在,我们已经到了需要部署和提供应用程序的阶段。为了使域在主服务器上可用,我们必须设置一个 vhost,它将专门用于需要部署的应用程序。
首次部署
以下命令将首次部署该应用程序
cap deploy:cold
你会看到终端中滚动出现大量信息。一切完成后,我们可以看到 Capistrano 完成了我们预期的一切:
- Capistrano 从 subversion 检查了最新的代码
- 它将代码压缩到临时文件中
- 代码已上传
- 代码未压缩
- 然后,它复制代码并创建符号链接等
- 最后,它启动了 spin 文件中定义的两个 mongrel 实例
概括:
为应用程序配置虚拟主机的过程可能看起来有点令人沮丧。默认情况下,Capistrano 不用于安装和配置 Web 服务器。相反,它允许我们采用现有设置,并使用简单的命令使用它来部署和服务我们的应用程序。