至少这样看起来像山地运动失败了。 它让整个部署过程 和最后。这里是产出。
* executing `deploy:create_symlink
* executing "rm -f ~/xxx.xx.xx/test/current && ln -s ~/xxx.xx.xx/test/releases/20120525193307 ~/xxx.xx.xx/test/current"
servers: ["test.xxx.xx.xx"]
["test.xxx.xx.xx"] executing command
** [out :: test.xxx.xx.xx] rm: cannot remove `/var/www/vhosts/xxx.xx.xx/test/current : I command finished in 460ms
*** [deploy:create_symlink] rolling back
*** no previous release to rollback to, rollback of symlink skipped
* executing "rm -rf /var/www/vhosts/xxx.xx.xx/test/releases/20120525195909; true"
servers: ["test.xxx.xx.xx"]
[test.xxx.xx.xx] executing command
command finished in 524ms
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell default -c rm -f /var/www/vhosts/xxx.xx.xx/test/current && ln -s /var/www/vhosts/xxx.xx.xx/test/releases/20120525195909 /var/www/vhosts/xxx.xx.xx/test/current " on xxx.xx.xx
the app is using capistrano (2.12.0) capistrano-ext (1.2.1) obviously there are more gems just trying to put what seems relevant, please let me know if more info would be helpful.
这里是部署.rb
require "rvm/capistrano"
require bundler/capistrano
require capistrano/ext/multistage
set :stages, %w(staging production)
set :default_stage, staging
set :application, xxx
# trying to not use sudo on the deployment
#set :use_sudo, false
#set :copy_exclude, [".git", "spec"]
set :repository, ~/git/xxx.git
set :local_repository, "~/rorwork/xxx/.git"
set :scm, :git
set :user, xxx
set :group, xxxx
ssh_options[:forward_agent] = true
set :branch, master
set :deploy_via, :remote_cache
set :scm_command, "/usr/local/bin/git"
set :local_scm_command, :default
default_run_options[:pty] = true
set :normalize_asset_timestamps, false #for asset piple
set :dbuser, xxx
set :dbpass, xxx
# if you want to clean up old releases on each deploy uncomment this:
# after "deploy:restart", "deploy:cleanup"
# if you re still using the script/reaper helper you will need
# these http://github.com/rails/irs_process_scripts
# If you are using Passenger mod_rails uncomment this:
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path, tmp , restart.txt )}"
end
end
和阵列,rb
set :domain, test.xxx.xx.xx
role :web, domain # Your HTTP server, Apache/etc
role :app, domain # This may be the same as your `Web` server
role :db, domain, :primary => true # This is where Rails migrations will run
set :deploy_to, "/var/www/vhosts/xxx.xx.xx/test"
set :rails_env, staging
set :rack_env, rails_env
set :dbname, "xxx_staging"
#set :bundle_without, [:test, :development, :production]
i 手动在部署目录中创建当前文件夹、 共享和发布文件夹, 并指派合适的用户: group 。 最初是获取 dirs 的许可问题, 但已经解决了 。 有点亏损, 许多寻找解决方案的工作还没有解决任何问题。 任何建议或经验都非常感激!
测试 cap 中继部署
部署 认为我也会尝试生产, cap 生产同时部署
保释... 一些关于一致性的聪明想法。