我尝试将带有capistrano,passenger和nginx的rails项目部署到AWS服务器。但我无法部署它,因为这个错误。
INFO [0007b4de] Finished in 0.212 seconds with exit status 0 (successful).
DEBUG [484bf595] Running /usr/bin/env [ -L /var/www/happyhour/releases/20150402075058/bin ] as myname@x.x.x.x
DEBUG [484bf595] Command: [ -L /var/www/myproject/releases/20150402075058/bin ]
DEBUG [484bf595] Finished in 0.625 seconds with exit status 1 (failed).
DEBUG [35fe9fd2] Running /usr/bin/env [ -d /var/www/myproject/releases/20150402075058/bin ] as myname@x.x.x.x
DEBUG [35fe9fd2] Command: [ -d /var/www/myproject/releases/20150402075058/bin ]
DEBUG [35fe9fd2] Finished in 0.580 seconds with exit status 0 (successful).
AND bug。
DEBUG [38c8a3d8] /usr/bin/env: passenger: No such file or directory
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as myname@x.x.x.x: passenger exit status: 127
passenger stdout: Nothing written
passenger stderr: /usr/bin/env: passenger: No such file or directory
文件Capfile.rb
require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rails'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
require 'rvm1/capistrano3'
# require "rvm/capistrano"
require 'capistrano/bundler'
require 'capistrano/passenger'
# require 'whenever/capistrano'
# require 'capistrano3/unicorn'
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
文件deploy.rb
require 'rvm1/capistrano3'
# require "rvm/capistrano"
# require 'whenever/capistrano'
lock '3.2.1'
set :application, 'myproject'
set :repo_url, 'git@github.com:myname/myproject.git'
set :deploy_to, '/var/www/myproject'
set :keep_releases, 4
set :rvm_type, :system
set :rvm1_ruby_version, '2.2.0'
#set :default_env, { rvm_bin_path: '~/.rvm/bin' }
# set :default_env, { path: "/opt/ruby/bin:$PATH" }
set :linked_dirs, %w{bin log tmp/backup tmp/pids tmp/cache tmp/sockets vendor/bundle}
set :passenger_pid, "#{shared_path}/tmp/pids/passenger.pid"
set :bundle_jobs, 4
# set :whenever_identifier, ->{ "#{fetch(:application)}_#{fetch(:stage)}" }
# set :whenever_command, "bundle exec whenever"
after 'deploy:publishing', 'deploy:restart'
namespace :deploy do
task :restart do
invoke 'passenger:restart'
end
end
文件production.rb
set :branch, 'develop'
role :app, %w{myname@x.x.x.x}
role :web, %w{myname@x.x.x.x}
role :db, %w{myname@x.x.x.x}
set :stage, :production
set :rails_env, 'production'
server 'IP Server', user: 'myname', roles: %w{web app db}
请帮我解决这个错误。
谢谢,
答案 0 :(得分:1)
作为解决方法,请尝试将其放入deploy.rb
:
set :passenger_restart_with_touch, true
这样做会跳过检查乘客版本。有关详细信息,请参阅此GitHub issue。
答案 1 :(得分:0)
rvmsudo ~/.rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.14/bin/passenger-install-nginx-module
有完整的路径浏览ruby版本(rvm)(来自Passenger installation with nginx fails)