/ usr / bin / env:passenger:没有这样的文件或目录,退出状态为1(失败)

时间:2015-04-02 09:24:05

标签: ruby-on-rails nginx deployment passenger

我尝试将带有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}

请帮我解决这个错误。

谢谢,

2 个答案:

答案 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