Ruby on rails 在运行精简的Rails应用程序(Redmine)中被拒绝的权限
我正在尝试使用Thin和nginx作为反向代理运行Redmine MyRuby on rails 在运行精简的Rails应用程序(Redmine)中被拒绝的权限,ruby-on-rails,linux,redmine,thin,Ruby On Rails,Linux,Redmine,Thin,我正在尝试使用Thin和nginx作为反向代理运行Redmine My/etc/thin2.1/redmine.yml: --- pid: /var/run/thin/redmine.pid group: redmine wait: 30 timeout: 30 log: /var/log/thin/redmine.log max_conns: 1024 require: [] environment: production max_persistent_conns: 512 servers:
/etc/thin2.1/redmine.yml
:
---
pid: /var/run/thin/redmine.pid
group: redmine
wait: 30
timeout: 30
log: /var/log/thin/redmine.log
max_conns: 1024
require: []
environment: production
max_persistent_conns: 512
servers: 4
daemonize: true
user: redmine
socket: /var/run/thin/redmine.sock
chdir: /var/www/projects.mydomain.tld
当我使用web浏览器访问网站时,我会看到一个502坏网关
。这是/var/log/thin/redmine.0.log的内容:
>> Writing PID to /var/run/thin/redmine.0.pid
>> Changing process privilege to redmine:redmine
>> Using rack adapter
>> Exiting!
/usr/lib/ruby/vendor_ruby/thin/daemonizing.rb:158:in `delete': Permission denied @ unlink_internal - /var/run/thin/redmine.0.pid (Errno::EACCES)
from /usr/lib/ruby/vendor_ruby/thin/daemonizing.rb:158:in `remove_pid_file'
from /usr/lib/ruby/vendor_ruby/thin/daemonizing.rb:59:in `block in daemonize'
/usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- bundler/setup (LoadError)
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /var/www/projects.mydomain.tld/config/boot.rb:4:in `<top (required)>'
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /var/www/projects.mydomain.tld/config/application.rb:1:in `<top (required)>'
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /var/www/projects.mydomain.tld/config/environment.rb:2:in `<top (required)>'
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /var/www/projects.mydomain.tld/config.ru:3:in `block in <main>'
from /usr/lib/ruby/vendor_ruby/rack/builder.rb:55:in `instance_eval'
from /usr/lib/ruby/vendor_ruby/rack/builder.rb:55:in `initialize'
from /var/www/projects.mydomain.tld/config.ru:1:in `new'
from /var/www/projects.mydomain.tld/config.ru:1:in `<main>'
from /usr/lib/ruby/vendor_ruby/rack/adapter/loader.rb:36:in `eval'
from /usr/lib/ruby/vendor_ruby/rack/adapter/loader.rb:36:in `load'
from /usr/lib/ruby/vendor_ruby/rack/adapter/loader.rb:45:in `for'
from /usr/lib/ruby/vendor_ruby/thin/controllers/controller.rb:169:in `load_adapter'
from /usr/lib/ruby/vendor_ruby/thin/controllers/controller.rb:73:in `start'
from /usr/lib/ruby/vendor_ruby/thin/runner.rb:185:in `run_command'
from /usr/lib/ruby/vendor_ruby/thin/runner.rb:151:in `run!'
from /usr/bin/thin:6:in `<main>'
>将PID写入/var/run/thin/redmine.0.PID
>>将进程权限更改为redmine:redmine
>>使用机架适配器
>>退出!
/usr/lib/ruby/vendor\u ruby/thin/daemonizing.rb:158:“删除”中:权限被拒绝@unlink\u internal-/var/run/thin/redmine.0.pid(Errno::EACCES)
来自/usr/lib/ruby/vendor\u ruby/thin/daemonizing.rb:158:“删除\u pid\u文件”
from/usr/lib/ruby/vendor_ruby/thin/daemonizing.rb:59:in'block in daemonize'
/usr/lib/ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:55:在'require'中:无法加载这样的文件--bundler/setup(LoadError)
from/usr/lib/ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
从/var/www/projects.mydomain.tld/config/boot.rb:4:in`'
from/usr/lib/ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
from/usr/lib/ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
来自/var/www/projects.mydomain.tld/config/application.rb:1:in`'
from/usr/lib/ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
from/usr/lib/ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
来自/var/www/projects.mydomain.tld/config/environment.rb:2:in`'
from/usr/lib/ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
from/usr/lib/ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
from/var/www/projects.mydomain.tld/config.ru:3:in'block in'
from/usr/lib/ruby/vendor\u ruby/rack/builder.rb:55:in'instance\u eval'
from/usr/lib/ruby/vendor_ruby/rack/builder.rb:55:in'initialize'
from/var/www/projects.mydomain.tld/config.ru:1:in`new'
从/var/www/projects.mydomain.tld/config.ru:1:in`'
from/usr/lib/ruby/vendor_ruby/rack/adapter/loader.rb:36:in'eval'
from/usr/lib/ruby/vendor_ruby/rack/adapter/loader.rb:36:in'load'
from/usr/lib/ruby/vendor_ruby/rack/adapter/loader.rb:45:in'for'
来自/usr/lib/ruby/vendor\u ruby/thin/controllers/controller.rb:169:in'load\u adapter'
from/usr/lib/ruby/vendor_ruby/thin/controllers/controller.rb:73:in'start'
from/usr/lib/ruby/vendor_ruby/thin/runner.rb:185:in'run_命令'
from/usr/lib/ruby/vendor_ruby/thin/runner.rb:151:in'run!'
from/usr/bin/thin:6:in`'
我不明白是什么导致了这个错误。/var/run/thin/
中的.pid
文件归root所有。我试图将所有权授予redmine
和thin
,但得到了相同的错误(无论如何,这些文件都是在thin重新启动时重新创建的)
我用rbenv安装了Ruby。我以root用户身份运行了bundle安装
,这提示这样做将破坏此计算机上所有非root用户的应用程序
。据我所知,这不应该是个问题,对吗
编辑:如果我在/etc/thin2.1/redmine.yml
中将用户和组设置为root
,则权限拒绝错误消失。我认为这是导致另一个错误的原因,但这个错误仍然存在。对于取消链接
文件权限过程实际上需要一个权限来写入该文件的目录
因此,要么给予redmine
写入/var/run/thin/
的权限,要么将PID和套接字放在其他地方——通常放在应用程序的共享tmp
中,rails甚至会为它们创建目录。你是什么意思?我是rails新手,但这不是瘦的任务吗?我没有明确运行Redmine…谢谢你的解释。对我来说,Thin与应用程序的用户一起管理其pid文件有点违反直觉。我把它们放在Redmine的tmp
目录中,现在它可以正常工作了。