簡體   English   中英

SemiFixed:缺少'secret_key_base`用於'生產'環境

[英]SemiFixed: Missing `secret_key_base` for 'production' environment

我從頭開始創建了一個rails應用程序(Rails 4.1.0),我遇到了一個我無法解決的問題。 我已經安裝並配置了Apache Passenger Module,它工作正常。 每當我嘗試訪問虛擬主機時,都會收到錯誤500:

Missing secret_key_base for 'production' environment, set this value in config/secrets.yml

secret.yml文件包含以下配置:

secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

即使我不建議我這樣做:

    production:
  secret_key_base: XXXXXXXXXXXXXXXXXXXXXXXXXXXX (random key)

但Apache日志顯示:

# tailf /etc/httpd/logs/error_log
[Tue May 06 12:56:18 2014] [error] [client 192.168.3.1] Premature end of script headers:
App 4405 stderr: [ 2014-05-06 12:56:18.5763 4421/0x9d48bdc(Worker 1) utils.rb:68 ]: *** Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`) (process 4421, thread 0x9d48bdc(Worker 1)):
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/application.rb:440:in `validate_secret_key_config!'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/application.rb:195:in `env_config'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/engine.rb:510:in `call'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/application.rb:144:in `call'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/rack/thread_handler_extension.rb:74:in `process_request'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/request_handler/thread_handler.rb:141:in `accept_and_process_next_request'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/request_handler/thread_handler.rb:109:in `main_loop'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/request_handler.rb:448:in `block (3 levels) in start_threads'

我該如何解決這個錯誤? 我如何訪問開發環境? 我的意思是我如何編寫代碼,在瀏覽器中測試然后部署到Heroku或只是在生產環境中進行測試?

更新

我設法通過在VirtualHost上設置RailsEnv development來修復上面的錯誤,但現在我得到了另一個錯誤:

SQLite3 :: CantOpenException無法打開數據庫文件Rails.root:/ var / www / html / moviedb

我正在嘗試使用此GEM對TheMovieDB網站進行查詢並獲得結果。 有關此新錯誤的任何建議嗎?

通過bash Rails app密鑰

如果您可以訪問運行rails應用程序的用戶bash控制台,並且如果您沒有使用thin ,那么您可以通過用戶提供環境變量~/.bashrc

只需添加以下內容:

export SECRET_KEY_BASE=`MY_SECRET_KEY`

注:MY_SECRET_KEY可以是任何東西,但它是安全的生成與關鍵rake secret在bash的控制台替代品從榜樣“MY_SECRET_KEY”

完成后,您應該在hash看到一個SECRET_KEY_BASE變量,當您在rails控制台中調用ENV時返回該變量。

最后但並非最不重要的是,重啟rails應用程序,錯誤應該消失。

每個rbenv-vars的Rails app密鑰

此外,如果您使用的是rbenv ,則可以使用rbenv-vars插件來獲取每個rails應用密鑰環境變量。

關於這個的好讀物就在這里!

使用god(godrb.com):感謝hlcs

你需要god terminate然后重新開始。

我做了什么:在我的生產服務器上,我為Thin創建了一個配置文件(confthin.yml)(我正在使用它)並添加以下信息:

環境:生產用戶:www-data group:www-data SECRET_KEY_BASE:mysecretkeyproduction

然后我啟動應用程序

瘦啟動-C /whereeveristhefieonprod/configthin.yml

像魅力一樣工作,然后無需在版本控制上使用密鑰

希望它可以提供幫助,但我相信Unicorn和其他人可以做同樣的事情。

我用這個解決了類似的情況(可能僅在類似Ubuntu的環境中有用)。 請參閱: 缺少生產環境的密鑰庫 希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM