过去几个小时,我一直在努力与Capistrano一起为Zend框架应用程序自动部署。会喜欢一些指导。
我的目录结构如下
<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, "git@github.com:<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
我做错了什么?
谢谢!
答案 0 :(得分:1)
我认为你的stage_dir行应该是:
set :stage_dir, "application/configs/deploy/"
即。 stage_dir而不是stages_dir
编辑:我不熟悉无轨部署,但从查看它必须覆盖一些标准的Capistrano部署配方。既然您使用的多级宝石也会做同样的事情,我猜这两者是不兼容的。您获得的错误肯定表明多级扩展未被使用。
我在很久以前写了一篇关于使用Capistrano部署ZF应用程序的博客文章 - http://tfountain.co.uk/blog/2009/5/11/zend-framework-capistrano-deployment - 也使用了多阶段。你采取的方法非常相似。如果您不介意放弃无轨道部署(至少作为实验),我建议调整您的Capfile和deploy.rb以匹配该帖子中的内容(从而删除无轨道部署的要求),并查看是否修复了您的问题。