1
我在配置和相關事物方面有點新手,所以請寬容。乘客獨立不能以capistano開始
我建立一個臨時服務器的一堆愛好的項目,要做到這一點,我需要
- 支持多種Ruby版本
- 支持多種移動導軌/其他應用
- 支持多種數據庫和相關軟件
我也希望部署腳本允許部署到生產,如果有一天到來。
這種背景需要使用RVM,Capistrano-multistage和Passenger Standalone(另一種選擇是Mongrel,但是因爲我希望在生產中使用Passenger,所以我認爲使用Passenger也更安全)。所有這些使得部署有點多毛。
我已經把東西拼湊得很好,其他一切似乎都有效,但由於某種原因,乘客未能在Capistrano要求時啓動。如果我SSH進入框並在我自己輸入命令它很好地工作。怎麼了?
爲了幫助你在你的努力,幫助我,這裏是我的配置的拷貝/ deploy.rb
set :application, "Appname"
set :repository, "path-to-git-repo-over-ssh"
set :scm, :git
default_run_options[:pty] = true
set :rvm_ruby_string, ENV['GEM_HOME'].gsub(/.*\//,"")
set :rvm_install_ruby_params, '--1.9' # for jruby/rbx default to 1.9 mode
set :rvm_install_pkgs, %w[libyaml openssl] # package list from https://rvm.io/packages
set :rvm_install_ruby_params, '--with-opt-dir=/usr/local/rvm/usr' # package support
set :use_sudo, false
before 'deploy:setup', 'rvm:install_rvm' # install RVM
before 'deploy:setup', 'rvm:install_ruby' # install Ruby and create gemset
require "rvm/capistrano"
require "bundler/capistrano"
require 'sidekiq/capistrano'
set :deploy_via, :remote_cache
set :stages, %w(staging production)
set :default_stage, "staging"
require 'capistrano/ext/multistage'
set :rails_env, lambda { stage }
set :startcmd, lambda { "cd #{current_path} && bundle exec passenger start -d -p #{passenger_port} -e #{rails_env} --pid-file=#{current_path}/tmp/pids/passenger.#{passenger_port}.pid #{current_path}" }
namespace :deploy do
task :stop do
run("cd #{current_path} && bundle exec passenger stop -p #{passenger_port}")
end
task :restart do
run("cd #{current_path} && touch tmp/restart.txt")
end
task :start do
run("#{startcmd}")
end
end
after "deploy:update_code" do
run "(echo \"@reboot /bin/bash -l -c '#{startcmd}' >>log/boot.out 2>>log/boot.err # from capistrano \" && cat #{release_path}/crontab.#{stage}) | crontab -"
end
這裏是配置/部署/ staging.rb
set :deploy_to, "/var/www/appname"
set :user, 'app-specific-user'
set :password, 'super-secret-password'
set :domain, '1.2.3.4'
server domain, :app, :web
role :db, domain, :primary => true
set :passenger_port, 1234
我看了一下我的許多變體的部署文件,他們都有這一行。 Brightbox生成的文件包含註釋#Forces a Pty,以便svn + ssh存儲庫訪問將起作用。如果您使用的是不同的SCM系統,則您不需要此功能。請注意, #ptys停止運行shell啓動腳本。 – Snips