2012-11-09 62 views
3

我有大約130個運行在apache-乘客服務器集羣上的sinatra web應用程序。所有這些應用程序都已從通用代碼庫中克隆,然後修改爲擁有自己的身份驗證密鑰。除了身份驗證密鑰之外,大多數應用程序沒有修改。獨立應用程序的優勢在於,我可以快速對特定應用程序進行更改,而無需冒其他應用程序停機的風險。在哪裏存儲許多類似sinatra應用程序的配置

但是,這些驗證密鑰本質上是配置。將配置存儲在代碼庫中既不方便也不直觀。我已經探索過的替代選項包括將配置存儲在數據庫中並將其緩存在內存中,每個應用程序的apache環境變量和共享的json文件。

有更好的選擇嗎?我錯過了任何陷阱?

回答

0

聽起來也許一個環境變量,將最適合你的目的,這可能然後在您的應用程序是這樣進行訪問:

$ APPNAME_AUTH_KEY="saf3t33553" ruby -e "puts ENV['APPNAME_AUTH_KEY']" 
saf3t33553 

在共享位置的JSON文件,甚至是一個普通的ruby文件也會做的伎倆。將配置存儲在數據庫中聽起來有點矯枉過正。

這是我已經寫了不少關於一個話題,如果你想更深入:

寫作配置應用程序(part 1part 2) (見「使用Shell環境配置」部分第2部分尤其是)

+1

我同意,存儲在數據庫中的配置是矯枉過正,但好處是,你可以改變配置,而無需重新啓動應用程序。 – Erik

+0

這是一個好點,但使用配置文件也是如此。如果OP集羣中的sinatra應用程序都共享一個數據庫,可能文件與數據庫有相似的優點和缺點,除了編輯數據庫中的值需要比編輯文件更多的工作。 –

+0

正確,這意味着將密鑰存儲在apache配置中,因爲這是您爲在apache/passenger上運行的sinatra應用程序設置環境變量的地方。 –

相關問題