0

這裏就是我與現在的工作:Rails不拿起SECRET_KEY_BASE環境變量

Ubuntu的忠實的14.04

的Rails 4.2.6

紅寶石2.2.3

客運

Nginx

當我嘗試訪問IP我得到這個消息:當我看到nginx的

Incomplete response received from application 

/error.log中我看到:

Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml` 

在我做的服務器:

RAILS_ENV=production bundle exec rake secret 

我把這個結果到每個這些文件的好措施:

~/.bashrc 
~/.bash_profile 
~/.profile 
/app/shared/config/local_env.yml 

對於所有shell腳本的格式是:

export SECRET_KEY_BASE="[key]" 

對於我只是用local_env.yml

SECRET_KEY_BASE="[key]" 

我也嘗試進入它不帶引號。

每次我進行更改時,我都重新啓動了服務器。沒有雪茄。

還有什麼問題呢?

- UPDATE

我甚至增加了密鑰直接在secrets.yml文件。所以現在我想我的問題要麼是與乘客/ nginx有關,要麼是在某處存在拼寫錯誤。

+0

嘗試在您的服務器上輸出'RAILS_ENV = production' –

+0

你究竟是什麼意思?比如,將environemtn設置爲服務器上的產品? –

+0

是的,確切地說。或者只是用RAILS_ENV =生產包啓動應用程序exec rails s –

回答

1

更有可能的是環境變量沒有實際設置,而不是Rails沒有選擇它們。你在榨取祕密,我不這樣做。我在Unix etc/environment中手動設置它們,並且不檢查任何祕密到源代碼控制中。但以下幾個步驟可以幫助您解決或磨合問題。

在你的Ubuntu服務器對全系統的環境變量

1- $env

查找您SECRET_TOKEN和SECRET_KEY_BASE。錯誤告訴你這些沒有設置,這只是一個檢查env的技巧。 (RAILS_ENV也將在列表中顯示,如果它被設置。)

2- $sudo nano /etc/environment

添加以下行 - 用雙引號之間的實際值。不要使用[鍵]或任何編程替換。

export SECRET_TOKEN="T99ABC..." 

export SECRET_KEY_BASE="99ABC..." 

3- $logout/$login重載環境瓦爾

4- $env - 再次檢查

查找您SECRET_TOKEN和SECRET_KEY_BASE要設置的環境。

5-再次嘗試部署。如果失敗,請再次使用$env檢查環境變量。它會告訴你,如果你的部署中的東西是粉碎你的SECRET_ * env變量。

+0

感謝您的回答!我已經檢查了服務器上的env變量,並且祕密基礎密鑰在那裏,但不是祕密令牌。不軌4.2 + drop secret_token?無論如何 - 我直接將令牌添加到鏈接的secret.yml文件(未勾選到git中)並且仍然不起作用。 –

+0

我完全推薦你丟棄secret.yml文件並直接按照上述步驟使用Unix來設置所需的環境變量;使用我意識到的yml沒有任何優勢; Unix etc/environment解決方案是最好的解決方案(在我看來)。你的secret.yml沒有簽入源代碼控制,這讓我想知道你是如何將它部署到服務器的。但首先這不是一個複雜的問題。 – Elvn

+0

它被檢入,關鍵不是。我將使用你描述的這種方法。仍然不確定爲什麼這個hacky/direct方法不起作用。 –