Ubuntu上的bundler权限错误(ruby使用apt,NOT rvm)

时间:2017-07-27 09:27:11

标签: ruby ubuntu bundler redmine apt

我们曾经在基于Ubuntu 12的服务器上安装了redmine,但我们的主机升级了服务器,我们现在必须将所有内容移动到新机器上。它现在在Ubuntu 14LTS下运行。我已经安装了LAMP包和apt以及redmine,并且(我假设)所有必需的依赖项(包括Passenger)。 我对Apache2 conf文件进行了修改,现在我可以访问redmine站点...只是为了得到错误页面显示以下内容:

Bundler::PermissionError (Bundler::PermissionError)
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler/shared_helpers.rb:110:in `rescue in filesystem_access'
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler/shared_helpers.rb:108:in `filesystem_access'
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler/definition.rb:306:in `lock'
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler/runtime.rb:122:in `lock'
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler/runtime.rb:49:in `setup'
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler.rb:101:in `setup'
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler/setup.rb:19:in `<top (required)>'
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:245:in `block in run_load_path_setup_code'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:348:in `running_bundler'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:243:in `run_load_path_setup_code'
/usr/share/passenger/helper-scripts/rack-preloader.rb:100:in `preload_app'
/usr/share/passenger/helper-scripts/rack-preloader.rb:158:in `<module:App>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:28:in `<main>'

Application root
 /usr/share/redmine
Environment (value of RAILS_ENV, RACK_ENV, WSGI_ENV and PASSENGER_ENV)
production
Ruby interpreter command
/usr/bin/ruby
User and groups
uid=33(www-data) gid=33(www-data) groups=33(www-data)

我可以通过Google搜索获得的所有信息都与使用RVM或RBENV手动安装Ruby相关,但我通过apt进行了设置(是的,使用sudo apt-get ...我现在知道这不是很好for bundler)。 我知道安装了以下内容:

  • redmine 2.4.2-1(来自apt)
  • ruby​​ 1.9.3(ruby -v)但是看起来宝石是用1.9.1运行的
  • rails 3.2.16(rails -v)
  • 乘客4.0.37-2

我尝试过更改chown www-data /var/lib/gems/1.9.1/gems/bundler-1.15.3,但没有成功。

有没有办法纠正这个问题,还是应该删除所有设置并手动重启而不使用apt?

1 个答案:

答案 0 :(得分:0)

从上面的堆栈跟踪看,这看起来像是负责在应用程序根目录中创建Gemfile.lock的bundler部分。

https://github.com/bundler/bundler/blob/1-15-stable/lib/bundler/definition.rb#L307

您的乘客流程的uid和gid似乎是www-data - 此用户是否具有对/ usr / share / redmine的写入权限?如果没有,这可能是错误的 - 您的乘客进程正在尝试生成Gemfile.lock但没有权限这样做。

This is a tutorial on linux users and groups - 它应该让您了解上述问题发生的原因。

修复方法是将www-data添加到拥有/usr/share/redmine的组中,然后以递归方式向该组授予组级写入权限。