私はいくつかの Node アプリに取り組んでおり、デプロイメント関連の設定を保存する適切なパターンを探していました。Django の世界 (私が属する世界) では、settings.py
標準設定 (タイムゾーンなど) を含むファイルを用意し、次にlocal_settings.py
デプロイメント固有の設定 (通信するデータベース、memcache ソケット、管理者の電子メール アドレスなど) を格納するのが一般的です。
私は Node 用の同様のパターンを探していました。設定ファイルだけがあれば、他のすべてのものと混在させる必要がなくなるのでapp.js
便利ですが、ソース管理外のファイルにサーバー固有の設定を入れる方法があることが重要だと思います。同じアプリが、設定が大きく異なる複数のサーバーに展開される可能性があり、マージの競合などに対処しなければならないのは、私にとって楽しいことではありません。
では、これには何らかのフレームワークやツールがあるのでしょうか、それとも誰もが自分で何かをハックするのでしょうか?
ベストアンサー1
私はpackage.json
パッケージに を使用し、config.js
構成には を使用します。構成は次のようになります。
var config = {};
config.twitter = {};
config.redis = {};
config.web = {};
config.default_stuff = ['red','green','blue','apple','yellow','orange','politics'];
config.twitter.user_name = process.env.TWITTER_USER || 'username';
config.twitter.password= process.env.TWITTER_PASSWORD || 'password';
config.redis.uri = process.env.DUOSTACK_DB_REDIS;
config.redis.host = 'hostname';
config.redis.port = 6379;
config.web.port = process.env.WEB_PORT || 9980;
module.exports = config;
プロジェクトから設定を読み込みます:
var config = require('./config');
そして、、などから自分のものにアクセスできるようになりますconfig.db_host
。config.db_port
これにより、ハードコードされたパラメータを使用することも、ソース管理にパスワードを保存したくない場合は環境変数に保存されたパラメータを使用することもできます。
また、 を生成しpackage.json
、依存関係セクションを挿入します。
"dependencies": {
"cradle": "0.5.5",
"jade": "0.10.4",
"redis": "0.5.11",
"socket.io": "0.6.16",
"twitter-node": "0.0.2",
"express": "2.2.0"
}
プロジェクトをローカルマシンにクローンしたら、npm install
パッケージをインストールします。詳細についてはここ。
プロジェクトは GitHub に保存され、運用サーバー用のリモートが追加されています。