我试图用Capistrano 3创建Unicorn重启任务:
首先,我设置*unicorn_pid*变量:
set :unicorn_pid, "#{shared_path}/tmp/pids/unicorn.pid"
然后我将它传递给重启任务:
desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
execute :kill, "-USR2 `cat #{fetch(:unicorn_pid)}`" if test "[ -f #{fetch(:unicorn_pid)} ]"
within release_path do
execute :bundle, "exec unicorn -D -c config/unicorn.rb -E #{fetch(:stage)}"
end
end
end
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时cap production deploy:restart
我看到:
DEBUG [f4159760] Running /usr/bin/env [ -f /var/www/shared/tmp/pids/unicorn.pid ] on dev.project.net
DEBUG [f4159760] Command: [ -f /var/www/shared/tmp/pids/unicorn.pid ]
Run Code Online (Sandbox Code Playgroud)
所以,而不是/home/user/project/shared/
路径,#{shared_path}转换为/var/www/shared/
但是当我直接在任务中指定这个路径时,没有unicorn_pid变量,我在输出中看到:
INFO [567856e3] Running /usr/bin/env kill -USR2 `cat …
Run Code Online (Sandbox Code Playgroud) 我有一个ruby on rails项目要与capistrano一起部署.基本上我可以使用以下代码部署它.
cap production deploy
Run Code Online (Sandbox Code Playgroud)
但它给了我以下失败信息.
** Invoke staging (first_time)
** Execute staging
** Invoke load:defaults (first_time)
** Execute load:defaults
cap aborted!
Capfile locked at 3.2.1, but 3.3.3 is loaded
Run Code Online (Sandbox Code Playgroud)
我在这个例外上找不到任何东西.你知道什么是真正的问题.BTW捆绑更新不起作用.
根据 capistrano 的文档,我可以使用 ask() 方法获取用户输入。我创建了以下任务:
desc "Ask for user input"
task :ask_for_user_input do
ask ':update_assets', 'Update assets (y/n, default=n)?', 'n'
end
Run Code Online (Sandbox Code Playgroud)
在 deploy.rb 我有
namespace :deploy do
...
before :deploy, "deploy:ask_for_user_input"
...
end
Run Code Online (Sandbox Code Playgroud)
但无论如何,capistrano 从不要求用户输入。我尝试了不同的变体(例如,将“ask”方法直接放在 deploy.rb 或我的阶段文件中,但它没有改变任何东西。我在这里错过了什么?
我正在尝试在我的 deploy.rb 中执行如下命令:
results = execute 'somecommand'
似乎没有execute
返回命令的结果。这样做的正确方法是什么?
我有一个 Rails 应用程序,我想使用 Capistrano 部署两个版本:production
和staging
.
在我的 deploy.rb 文件中,我有:
set :stages, ['staging', 'production']
那么如何在不覆盖它们的情况下使用两条路径?
set :deploy_to, '/home/deploy/Sites/staging/myname'
set :deploy_to, '/home/deploy/Sites/production/myname'
我看过这个答案,但我想保持命令行干净。
这是我的config/unicorn/development.rb
app_path = "/home/ec2-user/apps/app_dev/current"
worker_processes 1
preload_app false
timeout 300
listen 3333
working_directory app_path
pid "#{app_path}/tmp/pids/unicorn.pid"
rails_env = 'development'
stderr_path "log/unicorn.log"
stdout_path "log/unicorn.log"
Run Code Online (Sandbox Code Playgroud)
这是我的Capfile
# Load DSL and Setup Up Stages
require 'capistrano/setup'
# Includes default deployment tasks
require 'capistrano/deploy'
require 'capistrano/rvm'
# require 'capistrano/rbenv'
# require 'capistrano/chruby'
require 'capistrano/bundler'
# require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
require 'capistrano3/unicorn'
# require 'sidekiq/capistrano'
# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }
Run Code Online (Sandbox Code Playgroud)
"cap development unicorn:start" …
I have a static page that I want to compile locally using gulp. The command I would run in the local shell, from the directory that contains gulp and the gulpfile (set by compile_path in this example) would be "$> gulp build".
# config valid only for Capistrano 3.1
lock '3.1.0'
set :application, 'appname'
set :repo_url, 'git@bitbucket.org/appname.git'
set :compile_path, '/Users/nico/DevOps/repo/appname'
# Default branch is :master
set :branch, 'cap3'
namespace :deploy do
after :started, :notify do
desc 'Run gulp to compile …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Capistrano 部署 Rails 应用程序。我有一个问题bundler: command not found: pumactl
,我似乎已经通过将 puma gem 添加到:development
组外的 Gemfile 中解决了这个问题。
文件
source 'https://rubygems.org'
gem 'rails', '4.2.0'
gem 'sass-rails', '~> 5.0'
gem 'semantic-ui-sass', github: 'doabit/semantic-ui-sass'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'mongoid'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'prawn-rails', '0.1.1'
gem 'fastimage', '1.6.6'
gem 'mini_magick', '4.0.4'
gem 'carrierwave', '0.10.0'
gem 'puma', '2.11.1'
group :development, :test do
gem 'capistrano', '3.3.5'
gem 'capistrano-rvm', …
Run Code Online (Sandbox Code Playgroud) 我可以在本地Rails 4.1项目中编译我的资产,如下所示:
$ RAILS_ENV=staging bin/rake assets:precompile
I, [2015-03-26T17:23:21.632726 #26321] INFO -- : Writing /MyProject/public/assets/active_admin-a46314b7dc1a06e662695c2093e33d96.js
I, [2015-03-26T17:23:21.748271 #26321] INFO -- : Writing /MyProject/public/assets/application-adc2c7c08b35fae05d8bfc73d1696dea.js
I, [2015-03-26T17:23:21.833131 #26321] INFO -- : Writing /MyProject/public/assets/active_admin-36d00173ec2474695cd54a330636bac9.css
I, [2015-03-26T17:23:21.851637 #26321] INFO -- : Writing /MyProject/public/assets/application-0930e157132302bc8b8666143a832af2.css
I, [2015-03-26T17:23:21.861676 #26321] INFO -- : Writing /MyProject/public/assets/debug-aeffd81aa2ee2b35a0d779b9335c9749.css
Run Code Online (Sandbox Code Playgroud)
也可以直接在服务器上使用rake创建资产:
user@server$ RAILS_ENV=staging bundle exec rake assets:precompile
I, [2015-03-26T17:40:11.761707 #30743] INFO -- : Writing /var/www/my_project/releases/20150326161842/public/assets/active_admin-a46314b7dc1a06e662695c2093e33d96.js
I, [2015-03-26T17:40:11.806881 #30743] INFO -- : Writing /var/www/my_project/releases/20150326161842/public/assets/application-adc2c7c08b35fae05d8bfc73d1696dea.js
I, [2015-03-26T17:40:11.847215 #30743] INFO -- : Writing …
Run Code Online (Sandbox Code Playgroud) ruby ruby-on-rails asset-pipeline ruby-on-rails-4 capistrano3
我正在尝试将带有Ruby 2.2.3和Capistrano 3的Rails 4.2.4应用程序部署到VPS服务器.我之前已经多次使用RVM完成了这项工作并且对我的其他应用程序没有任何问题,但是现在我在新机器和服务器上使用rbenv,我得到一个堆栈跟踪,如下所示:
DEBUG [a326a4c8] Command: cd /home/deploy/myapp/releases/20151226231303 && /usr/bin/env bundle install --path /home/deploy/myapp/shared/bundle --without development test --deployment --quiet
DEBUG [a326a4c8] /usr/bin/env:
DEBUG [a326a4c8] bundle: No such file or directory
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@youspoof.us: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: /usr/bin/env: bundle: No such file or directory
SSHKit::Command::Failed: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: /usr/bin/env: bundle: No such file or directory
Tasks: TOP => deploy:updated => bundler:install …
Run Code Online (Sandbox Code Playgroud) capistrano3 ×10
capistrano ×6
ruby ×2
unicorn ×2
amazon-ec2 ×1
bundler ×1
deployment ×1
puma ×1