2012-03-14 41 views
2

自动化Zend Framework的应用程序部署我一直在挣扎Capistrano的对于过去几个小时Zend框架应用程序自动部署。会喜欢一些指导。使用Capistrano的

我的目录结构如下

<project name>/ 
    Capfile 
    application/ 
     configs/ 
      deploy/ 
       staging.rb 
      application.ini 
      deploy.rb 
     controllers/ 
     models/ 
    . 
    . 
    . 
    other framework folders and files 

我Capfile是

require 'rubygems' 
require 'railsless-deploy' 
require 'capistrano/ext/multistage' 

load 'deploy' if respond_to?(:namespace) # cap2 differentiator 

我deploy.rb是(SCM信息略)

set :application, "App" 

set :stages, %w(staging production) 
set :default_stage, "staging" 
set :stages_dir, "application/configs/deploy/" 

default_run_options[:pty] = true 

set :deploy_via, :remote_cache 
set :scm, "git" 
set :ssh_options, {:forward_agent => true} 
set :repository, "[email protected]:<details>" 
set :branch, "staging" 

而且我staging.rb内我的部署文件夹(略凭证)

role :app, "host name" 
role :web, "host name" 
role :db, "host name", :primary => true 

set :deploy_to, "/httpdocs/" 

set :user, "username" 
set :password, "password" 

我使用的是VPS,但我不认为我在哪里,我需要在服务器端调试阶段。 Capistrano说,即使我定义它,它也不能检测到分期任务。错误是

triggering load callbacks 
the task `staging' does not exist 

我在做什么错了?

谢谢!

回答

1

我觉得你stages_dir行应该是:

set :stage_dir, "application/configs/deploy/" 

即stage_dir代替stages_dir

编辑:我不熟悉railsless部署但看着它,它必须重写一些标准的Capistrano部署配方。由于您使用的多级宝石会做同样的事情,所以我猜这两者不兼容。你得到的错误肯定表明多级扩展未被使用。

我写了一篇博客文章久远与Capistrano的部署ZF的应用程序 - http://tfountain.co.uk/blog/2009/5/11/zend-framework-capistrano-deployment - 也采用多级。你采取的方法非常相似。如果你不介意下降railsless部署(至少作为一个实验),我建议调整您的Capfile和deploy.rb匹配什么在那个岗位(从而消除了railsless部署的要求),并查看是否这解决您的问题。

+0

并没有什么帮助。我仍然得到同样的错误。 – Satyam 2012-03-14 16:46:09

+0

我编辑了我的答案,以包含另一个想法 – 2012-03-14 22:40:21