【问题标题】:rails 3.2.8 ruby 1.9.3 on DreamHost shared hosting fcgi RMagic issueDreamHost 共享主机上的 rails 3.2.8 ruby​​ 1.9.3 fcgi RMagic 问题
【发布时间】:2012-09-28 04:05:57
【问题描述】:

使用以下指南

http://spontaneousderivation.com/2012/09/30/rails-3-2-on-a-shared-dreamhost-server/

我设法让我的 Rails 3.2.8 应用程序与 Ruby 1.9.3 一起使用 fcgi 在 Dreamhost 共享主机上运行(我知道这不是最好的解决方案,但我不想将我的应用程序降级到 3.0 和我缺乏 VPS 的技能和金钱)。

按照 DH wiki 上的指南进行操作:

http://wiki.dreamhost.com/RMagick

http://wiki.dreamhost.com/Image_Magick#Compiling_ImageMagick_on_your_DreamHost_account

我将自己的 ImageMagic 和 RMagic 版本安装为本地 gem。

但是,当我尝试使用 RMagic 功能运行应用程序时,我在 error.log 中收到以下错误:

'脚本头提前结束:dispatch.fcgi'.

当我在上传器中取消注释以下行时,我发现它正在发生:

include CarrierWave::RMagick

从 shell 运行 dispatch.fcgi 不会报告任何错误。

我认为问题可能是由 LD_LIBRARY_PATH 或其他环境变量(在 DH wiki 中列出)引起的,但尝试将它们包含在我的 .bashrc.bash_profiledispatch.fcgi 中,但没有效果。

【问题讨论】:

    标签: ruby-on-rails rmagick dreamhost fastcgi


    【解决方案1】:

    此解决方案自 2013 年 3 月 7 日起有效。我只是用它来为 DH 部署一个新应用程序。

    在你的 gemfile...

    gem 'paperclip'
    

    然后从您的应用目录运行“捆绑安装”。

    在您的 public/dispatch.fcgi...复制下面的代码并将 APPNAME 替换为 config/application.rb 模块中列出的名称,将 USER 替换为您的 DH 用户名,并将 RUBY 替换为输出中列出的特定 ruby​​ 版本从 DH ssh 会话的命令行上的“which ruby​​”。

    #!/home/USER/.rvm/rubies/RUBY/bin/ruby
    
    ENV['RAILS_ENV'] ||= 'production'
    ENV['HOME'] ||= `echo ~`.strip
    ENV['GEM_HOME'] = File.expand_path('~/.rvm/gems/RUBY')
    ENV['GEM_PATH'] = File.expand_path('~/.rvm/gems/RUBY') + ":" +
    File.expand_path('~/.rvm/gems/RUBY@global')
    
    require 'fcgi' 
    require File.join(File.dirname(__FILE__), '../config/environment.rb')
    
    class Rack::PathInfoRewriter
    def initialize(app)
    @app = app
    end
    
    def call(env)
    env.delete('SCRIPT_NAME')
    parts = env['REQUEST_URI'].split('?')
    env['PATH_INFO'] = parts[0]
    env['QUERY_STRING'] = parts[1].to_s
    @app.call(env)
    end
    end
    
    Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(APPNAME::Application)
    

    假设您安装了有效的 RVM,则无需进行特殊处理即可使回形针正常工作。除了我上面提到的细节(特别是 dispatch.fcgi 略有改变),你可以按照这个指南,http://spontaneousderivation.com/2012/09/30/rails-3-2-on-a-shared-dreamhost-server/

    【讨论】:

      【解决方案2】:

      RMagick 和 ImageMagick 因存在编译/运行时问题而臭名昭著。我建议放弃 RMagick 以支持 MiniMagick 之类的东西。看起来 CarrierWave 有一个您可以使用的 MiniMagick 处理器:https://github.com/jnicklas/carrierwave/blob/master/lib/carrierwave/processing/mini_magick.rb

      MiniMagick 只是直接输出到 ImageMagick 进程,因此您可以避免链接到已编译二进制文件的问题。过去,RMagick 也被认为是内存泄漏等的来源。

      另外,您应该认真考虑部署 Heroku。单个测功机是免费的,我敢打赌您的体验会更好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-17
        • 1970-01-01
        • 2015-05-27
        • 2011-07-01
        • 1970-01-01
        • 2014-10-24
        • 2021-06-14
        • 1970-01-01
        相关资源
        最近更新 更多