Capistrano Rails部署Passenger错误

问题描述 投票:1回答:1

我将Rails应用程序部署到我的本地IP地址。 成功部署后,当我在浏览器中打开页面时,出现以下错误。 我一直坚持以下问题。

It looks like Bundler could not find a gem. Maybe you didn't install all the gems that this application needs. To install your gems, please run:

    bundle install

If that didn't work, then the problem is probably caused by your application being run under a different environment than it's supposed to. Please check the following:

Is this app supposed to be run as the deploy user?
Is this app being run on the correct Ruby interpreter? Below you will see which Ruby interpreter Phusion Passenger attempted to use.
-------- The exception is as follows: -------

Could not find rake-10.4.2 in any of the sources (Bundler::GemNotFound)
  /home/deploy/.gem/ruby/2.2.2/gems/bundler-1.12.5/lib/bundler/spec_set.rb:95:in `block in materialize'
  /home/deploy/.gem/ruby/2.2.2/gems/bundler-1.12.5/lib/bundler/spec_set.rb:88:in `map!'
  ...

我验证了这个stackoverflow链接并尝试了以下方法。

我作为deploy用户多次bundle install

我安装了2个版本的rake, 11.1.210.4.2 。 我清除了11.1.2 。 确保此版本不在任何地方。

我看到2个红宝石版本。 1.9.3和2.2.2。 不确定这是不是问题。 我没有手动安装1.9.3。 但我看到文件夹/usr/local/src/ruby-1.9.3-p448/opt/rubies/ruby-1.9.3-p448 。 当我尝试删除1.9.3时,使用sudo apt-get remove ruby 1.9.3我得到了以下结果。 最后,我没有删除它,因为它试图移除passenger本身。

Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libghc-hxt-xslt-dev-9.1.1-9b3da' for regex '1.9.3'
Note, selecting 'ruby1.9.3' for regex '1.9.3'
Note, selecting 'libghc-hxt-xslt-prof-9.1.1-9b3da' for regex '1.9.3'
Note, selecting 'libghc-hxt-xslt-dev' instead of 'libghc-hxt-xslt-dev-9.1.1-9b3da'
Note, selecting 'libghc-hxt-xslt-prof' instead of 'libghc-hxt-xslt-prof-9.1.1-9b3da'
Package 'ruby1.9.3' is not installed, so not removed
The following packages will be REMOVED
  libruby2.1 passenger passenger-dev ri ruby ruby-dev ruby-full ruby-rack ruby2.1 ruby2.1-dev

任何与此问题相关的帮助表示赞赏。

编辑:我仍然看到与rake 11.1.2相关的文件

/home/deploy/myapp/vendor/cache/rake-11.1.2.gem
/home/deploy/myapp/vendor/cache/ruby/2.2.0/specifications/rake-11.1.2.gemspec
/home/deploy/myapp/vendor/cache/ruby/2.2.0/cache/rake-11.1.2.gem
/home/deploy/myapp/vendor/cache/ruby/2.2.0/gems/rake-11.1.2
/home/deploy/myapp/vendor/cache/ruby/2.1.0/specifications/rake-11.1.2.gemspec
/home/deploy/myapp/vendor/cache/ruby/2.1.0/cache/rake-11.1.2.gem
/home/deploy/myapp/vendor/cache/ruby/2.1.0/gems/rake-11.1.2
/home/deploy/.gem/ruby/2.2.2/doc/rake-11.1.2
/home/deploy/.gem/specs/api.rubygems.org%443/quick/Marshal.4.8/rake-11.1.2.gemspec
/var/lib/gems/2.1.0/doc/rake-11.1.2

这可能是问题吗?

我在下面分享Ruby Environment的详细信息。

RubyGems Environment:
   RUBYGEMS VERSION: 2.4.5
   RUBY VERSION: 2.2.2 (2015-04-13 patchlevel 95) [x86_64-linux]
   INSTALLATION DIRECTORY: /home/deploy/.gem/ruby/2.2.2
   RUBY EXECUTABLE: /opt/rubies/ruby-2.2.2/bin/ruby
   EXECUTABLE DIRECTORY: /home/deploy/.gem/ruby/2.2.2/bin
   SPEC CACHE DIRECTORY: /home/deploy/.gem/specs
   SYSTEM CONFIGURATION DIRECTORY: /opt/rubies/ruby-2.2.2/etc
   RUBYGEMS PLATFORMS:
     ruby
     x86_64-linux
   GEM PATHS:
     /home/deploy/.gem/ruby/2.2.2
     /opt/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0
   GEM CONFIGURATION:
     :update_sources => true
     :verbose => true
     :backtrace => false
     :bulk_threshold => 1000
   REMOTE SOURCES:
     https://rubygems.org/
   SHELL PATH:
     /home/deploy/.gem/ruby/2.2.2/bin
     /opt/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0/bin
     /opt/rubies/ruby-2.2.2/bin
     /usr/local/sbin
     /usr/local/bin
     /usr/sbin
     /usr/bin
     /sbin
     /bin
     /usr/games
     /usr/local/games

Nginx conf文件/etc/nginx/nginx.conf如下。

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Phusion Passenger config
    ##
    # Uncomment it if you installed passenger or passenger-enterprise
    ##

    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    passenger_ruby /usr/bin/ruby;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

启用了Nginx站点的默认文件

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    server_name 192.xxx.xxx.xxx;
    passenger_enabled on;
    rails_env    prelive;
    root         /home/deploy/myapp/current/public;

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
ruby-on-rails ruby capistrano passenger bundle-install
1个回答
0
投票

好吧,我做了以下三个步骤,它开始工作。 这些来自Зелёный的评论。 好像我必须重新启动机器或其他东西才能反映出更改。 我不确定。

  1. 检查/etc/nginx/nginx.conf并确保passenger_ruby的值与which ruby命令的输出相同
  2. 通过执行rake --version检查rake版本是否为10.4.2 否则清除所有耙子并安装耙子10.4.2
  3. bundle install

完成这些操作后,我重新启动了计算机并完成了cap prelive deploy并且应用程序已启动。

© www.soinside.com 2019 - 2024. All rights reserved.