我的ssh密钥肯定设置正确,因为我在使用ssh时从未提示输入密码.但是在部署时,capistrano仍然要求输入密码cap deploy.我设置的时候不会要求密码cap deploy:setup,奇怪的是.如果没有密码提示,它将使部署周期更加顺畅.
细节:我正在将一个Sinatra应用程序部署到Dreamhost共享帐户(使用Passenger).我曾经按照教程做了很长时间,这在当时完美无缺.从那以后出现了什么.我正在使用capistrano(2.5.9)和git版本1.6.1.1.这是我的Capfile:
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
set :user, 'ehsanul'
set :domain, 'jellly.com'
default_run_options[:pty] = true
# the rest should be good
set :repository, "ehsanul@jellly.com:git/jellly.git"
set :deploy_to, "/home/ehsanul/jellly.com"
set :deploy_via, :remote_cache
set :scm, 'git'
set :branch, 'deploy'
set :git_shallow_clone, 1
set :scm_verbose, true
set :use_sudo, false
server domain, :app, :web
namespace :deploy do
task :migrate do
run "cd #{current_path}; /usr/bin/rake migrate environment=production"
end
task :restart do
run "touch #{current_path}/tmp/restart.txt"
end
end
after …Run Code Online (Sandbox Code Playgroud) 我正在使用Capistrano运行远程任务.我的任务看起来像这样:
task :my_task do
run "my_command"
end
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果my_command退出状态!= 0,那么Capistrano认为它失败并退出.当退出状态不为0时,如何在退出时让capistrano继续运行?我已经改变my_command了my_command;echo它并且它有效,但感觉就像一个黑客.
当我输入
cap production deploy
我明白了
Capfile locked at 3.1.0, but 3.2.0 is loaded
当我卸载时,capistrano 3.2.0我得到了
Could not find capistrano-3.2.0 in any of the sources
Run `bundle install` to install missing gems.
Run Code Online (Sandbox Code Playgroud)
我的gemfile有
gem 'capistrano', '~> 3.1'
gem 'capistrano-rails', '~> 1.1'
Run Code Online (Sandbox Code Playgroud)
和Capfile
require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/bundler'
require 'capistrano/rails/assets'
Run Code Online (Sandbox Code Playgroud)
在那种情况下该怎么办?
我一直在使用Capistrano开发自动部署,并使用Vagrant作为我的测试虚拟服务器.
问题是,我需要Vagrant的IP" ssh进入它".
我试过ifconfig并获得了IP,但看起来它不是确切的流浪者IP.
任何人都可以帮助我获得Vagrant IP吗?
我是新手Capistrano,我看到有共享文件夹和选项:linked_files.我认为共享文件夹用于在版本之间保存文件.但我的问题是,文件最终是如何进入共享文件夹的?
另外,如果我想将另一个目录符号链接到当前目录,例如某个路径上的静态文件夹,我该怎么把它放在linked_dirs?
最后,如何设置chmod 755为linked_files和linked_dirs.
谢谢.
我刚刚运行捆绑更新,capistrano已更新到3.0.0但现在当我运行cap deploy时,我收到错误,无法弄清楚如何解决这个问题.在这次更新之前,我每天都在更新我的服务器而没有任何问题.
cap aborted!
cannot load such file -- deploy
/home/mark/rails_apps/myapp/Capfile:1:in `load'
/home/mark/rails_apps/myapp/Capfile:1:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)
capfile
load 'deploy'
load 'deploy/assets'
load 'config/deploy' # remove this line to skip loading any of the default tasks
Run Code Online (Sandbox Code Playgroud) 当尝试使用capistrano进行部署时,capistrano使用命令bundle exec rake
RAILS_ENV=production
RAILS_GROUPS=assets
assets:precompile
Run Code Online (Sandbox Code Playgroud)
我有这个错误
couldn't find file 'jquery-ui'
(in /home/umbrosus/.rvm/gems/ruby-1.9.3-p392@gancxadebebi/gems/activeadmin-0.5.1/app/assets/javascripts/active_admin/base.js:2)
Run Code Online (Sandbox Code Playgroud)
在它运行良好之前,但我尝试更新到0.6然后我开始出现此错误.我回到0.5.1,错误仍然存在.我做坏事吗?
谢谢
我有一个需要部署到3台服务器的rails应用程序 - machine1.com,machine2.com和machine3.com.我希望能够一次将它部署到所有机器上,并且每个机器都可以单独部署.有人可以用骨架Capistrano配置文件/配方帮助我吗?它应该在deploy.rb中还是应该在machine1.rb等中分解?
我认为我在正确的轨道上让Capistrano接受命令行参数,但是当我尝试在命名空间中设置角色时它会窒息.我将传递'hosts = 1,2,3'作为参数并在分配命令并进入每个do | host之后将app/web/db设置为"machine#{host} .com" | {} ...
无论如何,除了创建4个不同的deploy.rb文件并在每次运行cap:deploy之前重命名它之外,我很难过.我希望能够做到以下几点:
cap deploy:machine1:latest_version_from_svn
cap deploy:all_machines:latest:version_from_svn
Run Code Online (Sandbox Code Playgroud)
只是不知道它是否应该全部在deploy.rb中与命名空间分开,或者是否应该分成多个*deploy**.rb文件.
如何从另一个调用一个Capistrano任务?
例如:
task :foo do
# stuff
end
task :bar do
# INVOKE :foo
end
Run Code Online (Sandbox Code Playgroud) 我已经切换到使用环境变量进行配置,它运行得很好 - 除非我必须使用capistrano部署或运行任务.
Capistrano 3似乎执行每个命令前缀,/usr/bin/env它会删除我设置的任何环境变量.bashrc.
编辑 - 在进行更多的研究时,这可能不是问题,问题可能是因为capistrano作为非登录,非交互式shell执行而且不加载.bashrc或.bash_profile.但仍然陷入困境.
当capistrano执行任务时,确保设置环境变量的最佳方法是什么?
capistrano ×10
ruby ×2
activeadmin ×1
assets ×1
bash ×1
capistrano3 ×1
config ×1
deployment ×1
sinatra ×1
ssh-keys ×1
vagrant ×1