gpt4 book ai didi

ruby-on-rails - 使用 Thin 运行的 Rails 应用程序 (Redmine) 中的权限被拒绝

转载 作者:IT王子 更新时间:2023-10-29 01:21:05 26 4
gpt4 key购买 nike

我正在尝试使用 Thin 和 nginx 作为反向代理来运行 Redmine。

我的/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

当我使用网络浏览器访问该站点时,我收到了 502 Bad Gateway。这是 /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>'

我不明白是什么导致了这个错误。 /var/run/thin/ 中的 .pid 文件归 root 所有。我试图将所有权赋予 redminethin 但得到了同样的错误(这些文件无论如何都会在重新启动 thin 时重新创建)。

我用 rbenv 安装了 Ruby。我以 root 身份运行 bundle install,这提示这样做会破坏此机器上所有非 root 用户的应用程序。根据this answer这应该不是问题,不是吗?

编辑: 如果我在 /etc/thin2.1/redmine.yml 中将用户和组设置为 root,权限被拒绝的错误就会消失.我虽然它导致了另一个错误,但那个错误仍然存​​在。

最佳答案

对于unlink 文件权限过程实际上需要一个权限来写入该文件的目录。

因此,要么授予 redmine 编写 /var/run/thin/ 的权限,要么将 pids 和套接字放在其他地方——通常在应用程序的共享 tmp 中,rails 甚至为这些创建目录。

关于ruby-on-rails - 使用 Thin 运行的 Rails 应用程序 (Redmine) 中的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34495157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com