Ruby on Rails+Nginx+Passenger部署Decidim应用遇403 Forbidden错误
部署Decidim应用时Nginx+Passenger出现403 Forbidden错误排查
问题描述
在服务器上部署基于Ruby on Rails构建的Decidim应用,使用Nginx和Passenger作为服务器组件,但访问应用时持续出现403 Forbidden错误。当前使用的nginx.conf配置内容如下:
worker_processes 1; events { worker_connections 1024; } http { passenger_root /root/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/passenger-6.0.17; passenger_ruby /root/.rbenv/shims/ruby; include mime.types; default_type application/octet-stream; passenger_app_env development; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; root /var/www/decidim_application/public; passenger_enabled on; } }
已尝试调整多种nginx.conf配置方案,但问题仍未解决。
更新:Ruby on Rails日志信息(翻译后)
DEPRECATION WARNING: 初始化过程中自动加载了常量 Decidim::Meetings::CloseMeetingReminderGenerator 和 Decidim::Budgets::OrderReminderGenerator。 这种做法已被弃用,在未来版本的Rails中,初始化阶段自动加载将被视为错误情况。 重新加载操作不会重启应用,因此初始化期间执行的代码不会再次运行。例如,若重新加载Decidim::Meetings::CloseMeetingReminderGenerator,预期的变更不会反映在已失效的类对象中。 这些自动加载的常量已被卸载。 若要在应用启动时安全实现自动加载,请将相关代码包装在重新加载器回调中,示例如下: Rails.application.reloader.to_prepare do # 在此处放置启动时需要自动加载的类和模块 end 该代码块会在应用启动时运行,且每次重新加载时都会执行。出于历史兼容原因,它可能会运行两次,因此必须保证代码具备幂等性。 查阅"自动加载和重新加载常量"指南,可了解更多关于Rails自动加载与重新加载机制的信息。 (调用自 <main> at /var/www/decidim_application/config/environment.rb:5)
内容的提问来源于stack exchange,提问作者Diogo Almeida
相关产品推荐
相关产品推荐

