INFO [050fe961] Running mkdir -p /home/rails/rails-
capistrano/releases/20140114234157 on staging-rails
DEBUG [050fe961] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh mkdir -p /home/rails/rails-capistrano/releases/20140114234157 )
INFO [050fe961] Finished in 0.142 seconds with exit status 0 (successful).
INFO [2dea2fe5] Running git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 on staging-rails
DEBUG [2dea2fe5] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 )
DEBUG [2dea2fe5] fatal: Not a valid object name
DEBUG [2dea2fe5] tar: This does not …
Run Code Online (Sandbox Code Playgroud) 在我的开发机器上:
$ bundle exec rails console
Loading development environment (Rails 3.2.3)
1.9.3p194 :001 > Rails.env
=> "development"
Run Code Online (Sandbox Code Playgroud)
这是预料之中的.到现在为止还挺好.
然而在我的生产服务器上(我使用Capistrano部署),我得到了完全相同的结果:
$ bundle exec rails console
Loading development environment (Rails 3.2.3)
1.9.3p194 :001 > Rails.env
=> "development"
Run Code Online (Sandbox Code Playgroud)
在任何一台机器上,我都可以这样做:
$ bundle exec rails console production
Loading development environment (Rails 3.2.3)
1.9.3p194 :001 > Rails.env
=> "production"
Run Code Online (Sandbox Code Playgroud)
我的问题是:在生产服务器上,不应该bundle exec rails console
默认加载生产环境而不是开发环境?如果没有,为什么不呢?
ruby capistrano ruby-on-rails ruby-on-rails-3.2 rvm-capistrano
当我尝试bundle exec cap production deploy --trace
收到错误消息时:
deploy@h2540559:/www/apps/foodsoft$ bundle exec cap production deploy --trace
** Invoke production (first_time)
** Execute production
** Invoke load:defaults (first_time)
** Execute load:defaults
** Invoke rvm:hook (first_time)
** Execute rvm:hook
cap aborted!
NoMethodError: undefined method `on' for main:Object
/usr/local/rvm/gems/ruby-2.0.0-p643/gems/capistrano-rvm-0.1.2/lib/capistrano/tasks/rvm.rake:17:in `block (2 levels) in <top (required)>'
/usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:248:in `call'
/usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:248:in `block in execute'
/usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:243:in `each'
/usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:243:in `execute'
/usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:187:in `block in invoke_with_call_chain'
/usr/local/rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
/usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:180:in `invoke_with_call_chain'
/usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:173:in `invoke'
/usr/local/rvm/gems/ruby-2.0.0-p643/gems/capistrano-3.2.1/lib/capistrano/dsl/task_enhancements.rb:12:in `block in after'
/usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:248:in `call'
/usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:248:in `block in …
Run Code Online (Sandbox Code Playgroud) 尝试运行" cap production unicorn:start
"时出现以下错误
F, [2013-07-12T04:36:18.134045 #28998] FATAL -- : error adding listener addr=0.0.0.0:80
/home/ec2-user/apps/foo_prod/shared/bundle/ruby/2.0.0/gems/unicorn-4.6.3/lib/unicorn/socket_helper.rb:147:in `initialize': Permission denied - bind(2) (Errno::EACCES)
Run Code Online (Sandbox Code Playgroud)
手动运行以下命令可以正常运行.这可能是什么问题?
rvmsudo unicorn_rails -c config/unicorn/production.rb -D --env production
Run Code Online (Sandbox Code Playgroud) 在相继bundle:install
之后deploy:finalize_update
,我收到关于nokogiri的错误.它暗示,
** [out :: *******] Make sure that `gem install nokogiri -v '1.6.0'` succeeds before bundling.
Run Code Online (Sandbox Code Playgroud)
所以我试着在服务器上自己安装nokogiri.但它给出了以下错误,
Building native extensions. This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/home/deployer/.rvm/rubies/ruby-2.0.0-p0/bin/ruby extconf.rb
Extracting libxml2-2.8.0.tar.gz into tmp/x86_64-linux-gnu/ports/libxml2/2.8.0... OK
Running 'configure' for libxml2 2.8.0... OK
Running 'compile' for libxml2 2.8.0... ERROR, review 'tmp/x86_64-linux-gnu/ports/libxml2/2.8.0/compile.log' to see what happened.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of …
Run Code Online (Sandbox Code Playgroud) 我想指示Capistrano加载在远程服务器上定义的环境变量.我怎样才能做到这一点?
似乎当我在环境变量中导出我的环境变量时.bashrc
,它们不会被Capistrano考虑在内.Capistrano似乎正在执行a /usr/bin/env
来创建执行远程命令的环境,但这似乎并没有从中加载环境变量.bashrc
.
我也告诉你我也在使用rvm-capistrano
(以防万一它可能有帮助).
任何线索?
我正在尝试将我的Rails(3.1.3)应用程序部署到preprod env.我使用capistrano(2.12.0)和rvm-capistrano(1.2.2).
当我打电话bundle exec cap ssh
它工作正常.但是当我打电话时,bundle exec cap deploy
我得到以下痕迹:
$ cap deploy
triggering start callbacks for `deploy'
* 18:42:19 == Currently executing `multistage:ensure'
*** Defaulting to `preprod'
* 18:42:19 == Currently executing `preprod'
* 18:42:19 == Currently executing `deploy'
* 18:42:19 == Currently executing `deploy:update'
** transaction: start
* 18:42:19 == Currently executing `deploy:update_code'
* 18:42:19 == Currently executing `deploy:set_previous_revision'
* executing "cd /rails_apps/com.example.preprod/current; git rev-parse --short HEAD"
servers: ["preprod.example.com"]
connection failed for: preprod.example.com (NameError: uninitialized …
Run Code Online (Sandbox Code Playgroud) 我不希望通过Capistrano使用sudo执行任何远程执行的命令.具体来说,当我运行时cap deploy:setup
,在第一个mkdir
命令期间我被要求输入我的sudo密码.我添加set :use_sudo, false
到我的deploy.rb文件中,但这并没有什么区别.
我从一个相当完整的deploy.rb文件开始,但是一旦我遇到问题就将其削减.这是我的最小版本仍然显示use_sudo
不受尊重:
# App Definitions
set :domain, '[server-ip]'
role :app, domain
role :web, domain
role :db, domain, :primary => true
set :user, "my_app"
set :use_sudo, false
task :sudo_test do
run "#{try_sudo} whoami"
end
Run Code Online (Sandbox Code Playgroud)
运行cap sudo_test
导致我被提示输入我的sudo密码.我在这里想念的是什么(除了我已经拔出的头发)?
谷歌调查结果
https://groups.google.com/forum/?fromgroups#!topic/capistrano/QNYnvW8obrg
有人有类似问题的帖子.线程中没有结论/解决方案.
在我的部署文件中,我将组设置为www-data:
set :user, "root"
set :group, "www-data"
Run Code Online (Sandbox Code Playgroud)
因此,当使用上限时:我希望capistrano用root:www-data chown文件夹
但是所有文件夹和文件都是root:root.
这个问题可能来自何方?
信息:我正在使用system-wide-rvm.
在rake资产期间使用Capistrano进行部署失败:预编译:
/usr/local/rvm/bin/rvm ruby-2.0.0-p353 do bundle exec rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
提示响应此错误:
INFO [b438501f] Running /usr/local/rvm/bin/rvm ruby-2.0.0-p353 do bundle exec rake assets:precompile on 123.123.123.123
cap aborted!
rake stdout: Nothing written
rake stderr: Nothing written
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/sshkit-1.3.0/lib/sshkit/command.rb:94:in `exit_status='
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:142:in `block (4 levels) in _execute'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/channel.rb:551:in `call'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/channel.rb:551:in `do_request'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:561:in `channel_request'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:465:in `dispatch_incoming_packets'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:221:in `preprocess'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:205:in `process'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:169:in `block in loop'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:169:in `loop'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:169:in `loop'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/channel.rb:269:in `wait'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:164:in `block (2 levels) in _execute'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/channel.rb:514:in `call'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/channel.rb:514:in `do_open_confirmation'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:545:in `channel_open_confirmation'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:465:in `dispatch_incoming_packets'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:221:in `preprocess'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:205:in `process'
/Users/osiris/.rvm/gems/ruby-2.0.0-p353/gems/net-ssh-2.8.0/lib/net/ssh/connection/session.rb:169:in …
Run Code Online (Sandbox Code Playgroud) ruby-on-rails rvm-capistrano ruby-on-rails-4 capistrano3 sshkit
rvm-capistrano ×10
capistrano ×6
ruby ×5
capistrano3 ×4
sudo ×2
chmod ×1
nokogiri ×1
rake ×1
rvm ×1
sshkit ×1
unicorn ×1