![](/img/trans.png)
[英]Missing `secret_token` and `secret_key_base` for 'production' environment
[英]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.