Passenger 上的错误 运行 GraphicsMagick
Error running GraphicsMagick on Passenger
我已经在运行 rails 服务器的本地计算机上安装了 GraphicsMagick
和 gem,并且运行良好。但是,在开发服务器上,环境是使用 Passenger
和 Apache
设置的。我已经安装了 GraphicsMagick
并安装了 bundle install
。它确实安装 gem 成功。
但是,当我访问该站点时,出现以下错误:
There was an error while trying to load the gem 'graphicsmagick'.
Gem Load Error is: Permission denied @ rb_sysopen - mkmf.log
Backtrace for gem load error is:
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:308:in `initialize'
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:308:in `open'
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:308:in `log_open'
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:317:in `open'
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:346:in `postpone'
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:941:in `checking_for'
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:1574:in `find_executable'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/graphicsmagick-1.0.5/lib/graphicsmagick.rb:8:in `<top (required)>'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:91:in `require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:91:in `block (2 levels) in require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:86:in `each'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:86:in `block in require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:75:in `each'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:75:in `require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler.rb:107:in `require'
/home/ubuntu/AdvanceX/backend/config/application.rb:7:in `<top (required)>'
/home/ubuntu/AdvanceX/backend/config/environment.rb:2:in `require'
/home/ubuntu/AdvanceX/backend/config/environment.rb:2:in `<top (required)>'
config.ru:3:in `require'
config.ru:3:in `block in <main>'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/rack-2.0.1/lib/rack/builder.rb:55:in `instance_eval'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/rack-2.0.1/lib/rack/builder.rb:55:in `initialize'
config.ru:1:in `new'
config.ru:1:in `<main>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `eval'
/usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `preload_app'
/usr/share/passenger/helper-scripts/rack-preloader.rb:156:in `<module:App>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>'
Bundler Error Backtrace:
(Bundler::GemRequireError)
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:94:in `rescue in block (2 levels) in require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:90:in `block (2 levels) in require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:86:in `each'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:86:in `block in require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:75:in `each'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:75:in `require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler.rb:107:in `require'
/home/ubuntu/AdvanceX/backend/config/application.rb:7:in `<top (required)>'
/home/ubuntu/AdvanceX/backend/config/environment.rb:2:in `require'
/home/ubuntu/AdvanceX/backend/config/environment.rb:2:in `<top (required)>'
config.ru:3:in `require'
config.ru:3:in `block in <main>'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/rack-2.0.1/lib/rack/builder.rb:55:in `instance_eval'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/rack-2.0.1/lib/rack/builder.rb:55:in `initialize'
config.ru:1:in `new'
config.ru:1:in `<main>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `eval'
/usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `preload_app'
/usr/share/passenger/helper-scripts/rack-preloader.rb:156:in `<module:App>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>'
知道为什么会这样吗?
问题是用户 运行 使用该应用程序没有足够的 permission
到 运行 find_executable
也没有写入权限来创建 mkmf.log
日志文件。
添加对用户具有足够访问权限的 usergroup
解决了该问题。
我已经在运行 rails 服务器的本地计算机上安装了 GraphicsMagick
和 gem,并且运行良好。但是,在开发服务器上,环境是使用 Passenger
和 Apache
设置的。我已经安装了 GraphicsMagick
并安装了 bundle install
。它确实安装 gem 成功。
但是,当我访问该站点时,出现以下错误:
There was an error while trying to load the gem 'graphicsmagick'.
Gem Load Error is: Permission denied @ rb_sysopen - mkmf.log
Backtrace for gem load error is:
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:308:in `initialize'
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:308:in `open'
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:308:in `log_open'
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:317:in `open'
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:346:in `postpone'
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:941:in `checking_for'
/home/ubuntu/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/mkmf.rb:1574:in `find_executable'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/graphicsmagick-1.0.5/lib/graphicsmagick.rb:8:in `<top (required)>'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:91:in `require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:91:in `block (2 levels) in require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:86:in `each'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:86:in `block in require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:75:in `each'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:75:in `require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler.rb:107:in `require'
/home/ubuntu/AdvanceX/backend/config/application.rb:7:in `<top (required)>'
/home/ubuntu/AdvanceX/backend/config/environment.rb:2:in `require'
/home/ubuntu/AdvanceX/backend/config/environment.rb:2:in `<top (required)>'
config.ru:3:in `require'
config.ru:3:in `block in <main>'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/rack-2.0.1/lib/rack/builder.rb:55:in `instance_eval'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/rack-2.0.1/lib/rack/builder.rb:55:in `initialize'
config.ru:1:in `new'
config.ru:1:in `<main>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `eval'
/usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `preload_app'
/usr/share/passenger/helper-scripts/rack-preloader.rb:156:in `<module:App>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>'
Bundler Error Backtrace:
(Bundler::GemRequireError)
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:94:in `rescue in block (2 levels) in require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:90:in `block (2 levels) in require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:86:in `each'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:86:in `block in require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:75:in `each'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler/runtime.rb:75:in `require'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/bundler-1.14.6/lib/bundler.rb:107:in `require'
/home/ubuntu/AdvanceX/backend/config/application.rb:7:in `<top (required)>'
/home/ubuntu/AdvanceX/backend/config/environment.rb:2:in `require'
/home/ubuntu/AdvanceX/backend/config/environment.rb:2:in `<top (required)>'
config.ru:3:in `require'
config.ru:3:in `block in <main>'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/rack-2.0.1/lib/rack/builder.rb:55:in `instance_eval'
/home/ubuntu/.rvm/gems/ruby-2.3.3/gems/rack-2.0.1/lib/rack/builder.rb:55:in `initialize'
config.ru:1:in `new'
config.ru:1:in `<main>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `eval'
/usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `preload_app'
/usr/share/passenger/helper-scripts/rack-preloader.rb:156:in `<module:App>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>'
知道为什么会这样吗?
问题是用户 运行 使用该应用程序没有足够的 permission
到 运行 find_executable
也没有写入权限来创建 mkmf.log
日志文件。
添加对用户具有足够访问权限的 usergroup
解决了该问题。