Tag: capistrano

Capistrano和Carrierwave

我正在使用Capistrano部署Ruby on Rails和NodeJS应用程序。 每次部署时都会删除uploads文件夹。 这出现在几个地方,但它似乎不起作用: # Keep File Uploads task :symlink_uploads do run “ln -nfs #{shared_path}/rails/uploads #{release_path}/rails/public/uploads” end after ‘deploy:update_code’, ‘deploy:symlink_uploads’ 回购: repo: /node /rails 谢谢!

如果你想使用它,如何解决“你需要为你的Gemfile添加gem’守护进程’”生产模式错误?

我正在尝试正确使用Capistrano和RVM,以便将我的Ruby on Rails 3.2.2应用程序部署到运行Ubuntu 10.04 LTS的远程计算机上。 它接缝我解决了我之前的问题“ Linux Ubuntu上的Rvm – Capistrano集成 ”。 但是,在部署时,我得到与DelayedJob gem相关的以下错误: … * executing “cd /srv/www//releases/20120314135318 && bundle install” servers: [“”] [] executing command [] rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell ‘ruby-1.9.3-p125’ -c ‘cd /srv/www//releases/20120314135318 && bundle install’ ** [out :: ] Using rake (0.9.2.2) ** [out :: ] Using builder (3.0.0) … ** [out :: […]

Capistrano 3副本策略相当于

我更新到第3章,似乎不再支持set :deploy_via, :copy 。 在发布公告中,有一个video链接,用于复制当前返回404的复制策略。 我使用了:copy策略,因为服务器无法访问git或访问存储库,因为它位于防火墙后面。 使用v3复制此function的最佳方法是什么?

如何通过capistrano 3运行自定义rake任务?

哪种方式,我可以通过远程服务器上的capistrano运行rake命令。 例如,我有一些lib/task/reparse.rake和一些方法 desc “it’s take csv file, makes some changes and fill db with this info” task :example1 => :environment do require ‘csv’ rows_to_insert = [] # some actions # … end 在本地服务器上一切都很好 – 我只是运行rake reparse:example1并且它正常工作(正确填充db)。 所以问题是 – 如何在部署后在真实主机上运行此命令? 我使用rails 4.1 + capistrano 3。 来自网站的PS示例对我不起作用如何从Capistrano运行rake任务? 如果我尝试cap production rake:invoke task=reparse:land它失败了: cap aborted! Don’t know how to […]

Capistrano – 无法部署我的database.yml

当我尝试使用capistrano部署我的应用程序时,我会收到此错误: 失败:IP_ADDR上的“sh -c’cp /var/www/my_app/releases/20120313115055/config/database.staging.yml /var/www/my_app/releases/20120313115055/config/database.yml’” 我的database.yml即空, database.staging.yml : production: adapter: mysql2 encoding: utf8 reconnect: false database: my_db pool: 15 username: my_user_name password: my_pass host: localhost 在/ confing / deploy中是文件“production”“staging” 我在这里缺少什么/我应该在哪里寻找失败? 服务器上数据库的凭据应该是正确的。 编辑 – 这是我的部署 set :application, “my_app” set :repository, “https://IP_ADDR/svn/my_app” set :scm, :subversion set :scm_username, ‘my_name’ set :scm_password, ‘my_pass’ default_run_options[:pty] = true set :user, “my_name” […]

Capistrano,防火墙和隧道

我们正在使用Capistrano自动将新版本的PHP应用程序推送到生产服务器。 生产服务器(我们称之为生产)是公共的,而我们的存储库服务器(我们称之为repo)与我们自己的机器一起位于我们的公司防火墙后面。 默认配置的Capistrano将无法工作,因为生产无法与回购交谈。 我想知道是否有某种程度上我可以将capistrano设置为SSH以首先进行回购,然后通过SSH连接到生产,在端口上打开一个隧道,然后我可以使用它从生产回SSH到repo以从SCM获取更改。 我无法弄清楚如何设置或找出更好的解决方案。 想法? 编辑: 我试过这个: role :web, “deploy.com” namespace :deploy do task :remote_tunnel do run ‘Creating SSH tunnel…’ do |channel, stream, data| ssh = channel.connection ssh.forward.remote(22, ‘server.com’, 10000, ‘127.0.0.1’) ssh.loop {!ssh.forward.active_remotes.include?([10000, ‘127.0.0.1’])} end end end before “deploy:update_code”, “deploy:remote_tunnel” 但我一直收到这个错误: failed: “sh -c ‘Creating SSH tunnel…'” on deploy.com

Capistrano 3 + Sprockets 3 + Rails 4.2.1不会部署?

我运行了bundle update并将更新的sprockets更新到3.0.0。 当我尝试通过Capistrano 3进行部署时,出现以下错误: INFO [e54ac5ca] Running /usr/bin/env cp /var/www/testapp/releases/20150414002210/public/assets/manifest* /var/www/testapp/releases/20150414002210/assets_manifest_backup as deploy@xx.xxx.xxx.xx DEBUG [e54ac5ca] Command: cd /var/www/testapp/releases/20150414002210 && /usr/bin/env cp /var/www/testapp/releases/20150414002210/public/assets/manifest* /var/www/testapp/releases/20150414002210/assets_manifest_backup DEBUG [e54ac5ca] cp: cannot stat ‘/var/www/testapp/releases/20150414002210/public/assets/manifest*’ DEBUG [e54ac5ca] : No such file or directory DEBUG [d2c5a990] cp: cannot stat ‘/var/www/testapp/releases/20150414002210/public/assets/manifest*’ DEBUG [d2c5a990] : No such file or directory cap aborted! SSHKit::Runner::ExecuteError: Exception […]

Unicorn无法写pid文件

我正在使用Capistrano将Ruby on Rails应用程序部署到Linode VPS。 我使用Unicorn作为应用程序服务器,使用Nginx作为代理。 我的问题是,由于明显的权限问题,我无法启动Unicorn,但我很难跟踪它。 Unicorn开始使用此Capistrano任务: task :start, :roles => :app, :except => { :no_release => true } do run <<-CMD cd #{current_path} && #{unicorn_bin} -c #{unicorn_config} -E #{rails_env} -D CMD end 我回来了,ArgumentError表明pid文件的路径不可写。 cap unicorn:start master [d4447d3] modified * executing `unicorn:start’ * executing “cd /home/deploy/apps/gogy/current && /home/deploy/apps/gogy/current/bin/unicorn -c /home/deploy/apps/gogy/shared/config/unicorn.rb -E production -D” servers: [“66.228.52.4”] […]

Capistrano :: Configuration:Class的未定义方法`instance’

我试图让Capistrano第一次在rails应用程序中运行。 我有一个运行Ubuntu 12.04,nginx,unicorn和rails的linux服务器,但是,我似乎遇到了一些问题。 我也使用Capistrano 3.0.0,rails 3.2.14,bundler 1.4.0和ruby 1.9.3p448使用RVM。 我只设置了一个生产阶段,此时我只关心Capistrano与我的服务器进行通信并从github推送我的代码(暂时没有迁移和捆绑等)。 当我尝试命令cap production deploy:check或cap production deploy:setup (似乎已弃用?)使用下面的设置,我得到以下错误消息: 我不确定从哪里开始这个错误,谷歌并没有多少建议。 我试过添加rvm-capistranogem,但无济于事。 如何修改代码以解决此错误? cap aborted! undefined method `instance’ for Capistrano::Configuration:Class /Users/andrew/.rvm/gems/ruby-1.9.3-p448/gems/bundler-1.4.0.rc.1/lib/bundler/capistrano.rb:11:in `’ config/deploy.rb:1:in `’ /Users/andrew/.rvm/gems/ruby-1.9.3-p448/gems/capistrano-3.0.0/lib/capistrano/setup.rb:12:in `load’ /Users/andrew/.rvm/gems/ruby-1.9.3-p448/gems/capistrano-3.0.0/lib/capistrano/setup.rb:12:in `block (2 levels) in ‘ /Users/andrew/.rvm/gems/ruby-1.9.3-p448/gems/capistrano-3.0.0/lib/capistrano/application.rb:12:in `run’ /Users/andrew/.rvm/gems/ruby-1.9.3-p448/gems/capistrano-3.0.0/bin/cap:3:in `’ /Users/andrew/.rvm/gems/ruby-1.9.3-p448/bin/cap:23:in `load’ /Users/andrew/.rvm/gems/ruby-1.9.3-p448/bin/cap:23:in `’ Tasks: TOP => production (See full trace by running task […]

ENV变量中的Capistrano和API键?

我正在使用Capistrano部署我的rails应用程序。 我想在服务器上保存一些API密钥作为环境变量。 使用Capistrano部署的rails应用程序应该可以访问这些API密钥。 这些API密钥也应该可以作为守护进程运行的单独的ruby文件访问。 在环境变量中设置API密钥似乎是理想的解决方案,但是,我无法使用ENV[“SOME_KEY”]在我的rails应用程序中访问它们。 根据这篇文章 ,因为capistrano运行为非交互式和非登录,所以不会加载~/.bashrc和~/.bash_profile 。 该流程图表明我应该使用$BASH_ENV 。 我可以在$BASH_ENV添加我的api密钥并在我的rails应用程序和使用ENV[“SOME_KEY”]的守护进程的ruby文件中访问它们吗? 我也想到只是将api密钥添加到服务器上的某个文件中并将其符号链接到ruby文件dir和rails目录,然后打开并读取它。 这可能吗?