【发布时间】:2016-10-09 04:36:12
【问题描述】:
我已经使用Passenger+Nginx成功安装了rails,但是通过网络浏览器遇到了一个不完整的响应错误:
http://tenklakes.northcentralus.cloudapp.azure.com/
我尝试rake secrets 在我的secrets.yml 文件中为production 生成一个新的secret_key_base,但没有成功。
Secrets.yml:
development:
secret_key_base:c70c590cfe799087c47528016ab49a1a8e57fe2eb851639e27e2ea66f92f241a0400b3d4247e3d61a6c82818dd3988825deeb66e783ba90cfccfbc0c500d6dbd
test:
secret_key_base: 08b1ebf5defee2eb1ad196e9780ae118f256c9f40f40f76674451dac4dfb1c42b75f04d22ee264644711de4e547ac8f58031e88f09c5c7223834b99230fb205c
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
当我运行 curl http:0.0.0.0:3000 时,我从乘客那里收到以下信息:
Started GET "/" for 127.0.0.1 at 2016-10-09 04:52:43 +0000
Processing by Rails::WelcomeController#index as */*
Parameters: {"internal"=>true}
Rendering /home/garrett/.rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/templates/rails/welcome/index.html.erb
Rendered /home/garrett/.rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/templates/rails/welcome/index.html.erb (2.5ms)
Completed 200 OK in 10ms (Views: 6.2ms | ActiveRecord: 0.0ms)
NGINX 错误日志:
[ 2016-10-09 04:49:44.8271 45647/7fe3b30d4700 age/Cor/Con/InternalUtils.cpp:112 ]:[客户端 1-3] 发送 502 响应:应用程序未发送完整响应 应用程序 45674 标准错误:[ 2016-10-09 04:49:56.0108 45754/0x0000000092d678(Worker 1) utils.rb:87 ]: *** 机架应用程序对象中的异常 RuntimeError(缺少
secret_key_base用于“生产”环境,设置config/secrets.yml) 中的这个值(进程 45754,线程 0x0000000092d678(Worker 1)): 应用程序 45674 标准错误:来自 /home/garrett/.rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/application.rb:513:invalidate_secret_key_config!' App 45674 stderr: from /home/garrett/.rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/application.rb:246:inenv_config' 应用程序 45674 标准错误:来自 /home/garrett/.rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/engine.rb:693:inbuild_request' App 45674 stderr: from /home/garrett/.rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/application.rb:521:inbuild_request' 应用程序 45674 标准错误:来自 /home/garrett/.rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/engine.rb:521:incall' App 45674 stderr: from /usr/lib/ruby/vendor_ruby/phusion_passenger/rack/thread_handler_extension.rb:97:inprocess_request' 应用程序 45674 标准错误:来自 /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:152:inaccept_and_process_next_request' App 45674 stderr: from /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:113:inmain_loop' 应用程序 45674 标准错误:来自 /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler.rb:416:inblock (3 levels) in start_threads' App 45674 stderr: from /usr/lib/ruby/vendor_ruby/phusion_passenger/utils.rb:113:inblock in create_thread_and_abort_on_exception'
我没有办法让这个工作正常进行 - 还有什么我应该检查的吗?
编辑:这是我在运行 'grep -r ENV *' 时得到的结果
garrett@10klakes:~/lakemag$ grep -r ENV *
bin/bundle:ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
config/database.yml: pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
config/database.yml:# url: <%= ENV['DATABASE_URL'] %>
config/database.yml: password: <%= ENV['LAKEMAG_DATABASE_PASSWORD'] %>
config/puma.rb:threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i
config/puma.rb:port ENV.fetch("PORT") { 3000 }
config/puma.rb:environment ENV.fetch("RAILS_ENV") { "development" }
config/puma.rb:# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
config/environments/production.rb: # config.secret_key_base = ENV["SECRET_KEY_BASE"]
config/environments/production.rb: config.secret_key_base = ENV["SECRET_KEY_BASE"]
config/environments/production.rb: config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
config/environments/production.rb: if ENV["RAILS_LOG_TO_STDOUT"].present?
config/boot.rb:ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
config/secrets.yml: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
test/test_helper.rb:ENV['RAILS_ENV'] ||= 'test'
【问题讨论】:
标签: ruby-on-rails azure nginx passenger