はい!Nodeアプリと同様に、環境変数はprocess.envで利用できます。
Sailsは、独自の カスタム設定 を作成するための組み込みサポートも提供しており、これらはsails.configで直接公開されます。カスタム設定と組み込み設定のいずれの場合も、sails.config内の構成プロパティは環境変数を使用して上書きできます。詳細は、構成に関する概念ドキュメントを参照してください。
Sailsアプリに構成を追加する最も簡単な方法は、config/内のファイルを変更するか、新しいファイルを追加することです。Sailsは環境固有の構成ローディングを標準でサポートしているので、config/env/production.jsを使用できます。繰り返しになりますが、詳細は、構成に関する概念ドキュメントを参照してください。
しかし、特定の構成情報をリポジトリに保存したくない場合があります。このような構成情報を配置する最適な場所は、環境変数です。
とは言え、開発環境(例:ラップトップ)では、環境変数の使用が面倒な場合があります。そのため、他のデプロイメント/マシン固有の設定、つまり非公開にしておきたい認証情報などは、config/local.jsファイルを使用することもできます。このファイルはデフォルトで.gitignoreファイルに含まれており、認証情報をコードリポジトリに誤ってコミットすることを防ぐのに役立ちます。
config/local.js
// Local configuration
//
// Included in the .gitignore by default,
// this is where you include configuration overrides for your local system
// or for a production deployment.
//
// For example, to use port 80 on the local machine, override the `port` config
module.exports = {
port: 80,
environment: 'production',
adapters: {
mysql: {
user: 'root',
password: '12345'
}
}
}
HerokuやModulusなどのPaaSを使用している場合は簡単です。指示に従ってください!
それ以外の場合は、サーバーのIPアドレスを取得し、sshで接続します。次に、npm install -g sailsとnpm install -g foreverを実行して、サーバーで初めてNPMからSailsとforeverをグローバルにインストールします。最後に、プロジェクトをgit clone(またはgitリポジトリにない場合はサーバーにscp)でサーバー上の新しいフォルダにコピーし、そのフォルダにcdして、forever start app.jsを実行します。
Sailsの基本的なパフォーマンスは、標準的なNode.js/Expressアプリケーションで期待できるものと同等です。つまり、高速です!Sailsコアでいくつかの最適化を行っていますが、依存関係から無料で得られるものを台無しにすることが主な焦点ではありません。簡単なベンチマークについては、http://serdardogruyol.com/sails-vs-rails-a-quick-and-dirty-benchmarkを参照してください。
本番環境のSailsアプリケーションで最も一般的なパフォーマンスのボトルネックはデータベースです。ユーザーベースの増加に伴うアプリケーションのライフサイクルにおいて、テーブル/コレクションに適切なインデックスを設定し、ページネーションされた結果を返すクエリを使用することがますます重要になります。最終的に、本番データベースのレコード数が数千万に達すると、.query()または.native()を呼び出すか、NPMから基盤となるデータベースドライバを使用するかして、手動で遅いクエリを見つけて最適化するようになります。
Sailsアプリでセッションを使用している場合は、本番環境で組み込みのメモリストアを使用しないでください。メモリセッションストアは、複数のサーバーにスケールしない開発専用のツールです。サーバーが1台しかない場合でも、特にパフォーマンスは高くありません(#3099および#2779を参照)。
本番環境のセッションストアの構成方法については、sails.config.sessionを参照してください。セッションサポートを完全に無効にする場合は、アプリの.sailsrcファイルでsessionフックをオフにします。
"hooks": {
"session": false
}