私たちは現在、CMS から提供されるコンテンツにリアルタイムの更新を提供する node.js/socket.io アプリケーションによってサポートされる顧客向けの Web サイト (Apache の下の TYPO3) を開発しています。
これは私たちの最初の node.js プロジェクトであるため、「完璧なセットアップ」に関して従うべきベスト プラクティスはありません。
適切なセットアップを実現するために、いくつかの質問が残っています。
お客様が簡単に導入できます。これは非常に重要です。当社の Web サイトは、豊富な Web サイトを提供し、顧客によって管理されていないサーバー上で実行されている「ライブ」の TYPO3 インストールに統合されるためです。遅いプロセス。
簡単に更新できるはずです。前述のように、再起動を要求してサーバーの変更を行うのは遅いプロセスであるため、理想的には、ノードのインストールを再起動/更新する必要があります
git
.
展開
一般的なコンセンサスforever
は、ノード アプリケーションを展開して実行し続ける場合に使用するようです。をテストしましたが、 (グローバル)forever
でインストールすると正常に動作するようです。npm install forever -g
ただし、ライブ環境にグローバルにインストールするには外部の支援が必要になるため、アプリケーションのnode_modules
ディレクトリから実行することをお勧めしますが、そうするためのしっかりしたラッパーを作成できませんでした.
さらに、forever
正常に動作しますが、手動で開始する必要があります。サーバーの起動時に起動して実行し続けることを保証するための最良のアプローチは何ですか?
- 簡単な
init.d
スクリプト? - ウォッチドッグ ラッパーを作成しますか?
forever
ステータス をチェックする TYPO3 スケジューラ タスク?
迅速な開発 / 更新時に再起動
現在、プロジェクトはまだ開発段階にあり、node.js アプリケーションに変更を加えるたびに、手動で再起動node
またはforever
. これは機能しますが、理想とはほど遠いものです。ファイルの変更をチェックし、検出された変更時に再起動するいくつかの小さなnpm
モジュールがあります。node
- ノードモン
- Node.js スーパーバイザー
- 跳ねる、弾む
- 結節(ノードを再起動する必要がないため、結合しやすい場合があります
forever
) - 上
誰でもこれらの経験がありますか?
更新: クラスターを使用しないのはなぜですか?
Cluster モジュールは、リロードメカニズムを通じて同様の機能を提供しますが、Node 0.5+ では機能しません。それを置き換えたコア Cluster モジュール (Node 0.6+)には、これらの機能がすべて含まれているわけではなく、クラスタリングのみが提供されます。これはsocket.io ではうまく機能しません。少なくとも、Redis を使用しないわけにはいきません (これは、別の前提条件サービスを顧客に強制することができないため、私たちにとっては問題です)。
--
明らかに、プロジェクトを顧客に引き渡す前に、更新リスターターを組み合わせた最も安定したソリューションを見つけようとしてforever
います。誰かが技術の実証済みの組み合わせを作成したことを本当に望んでいます。