Haskell コードを Snap で本番用に安定した方法でデプロイした経験はありますか?
サーバーでコンパイルが失敗した場合は、展開を中止し、成功した場合は、スナップ サーバーをオフにして、代わりに新しいバージョンを開始します。
たくさんの方法があることを知っています。rsync から git-hooks まですべて (git pull は悪夢でした)。しかし、私はあなたの経験を聞きたいです。
Haskell コードを Snap で本番用に安定した方法でデプロイした経験はありますか?
サーバーでコンパイルが失敗した場合は、展開を中止し、成功した場合は、スナップ サーバーをオフにして、代わりに新しいバージョンを開始します。
たくさんの方法があることを知っています。rsync から git-hooks まですべて (git pull は悪夢でした)。しかし、私はあなたの経験を聞きたいです。
私が働いている場所では、Happstackを使用して、UbuntuLinuxにデプロイしています。実際にWebアプリとすべての依存関係を非バイアス化し、オートビルダーでビルドします。
実際にサーバーにインストールするには、次のコマンドを実行します。apt-get update && apt-get install webapp-production
このシステムの利点は、すべての開発者が同じバージョンの依存関係に対して簡単に開発できることです。そして、すべてのソースコードが適切にチェックインされており、特定の1台のマシンだけでなくどこでも再構築できることを知っています。さらに、必要に応じてハッキングからライブラリにパッチを作成するメカニズムを提供します。
欠点は、apt-getとcabal-installがうまく機能しないことです。apt-getを介してすべてをビルドするか、cabal-installを介してすべてを実行する必要があります。
これが私たちの仕事です。まず、サーバーはすべて同じバージョンの ubuntu と開発マシンです。コードやテストなどは、使用したい OS で記述し、プッシュする準備ができたら、開発マシンでビルドします。正常にコンパイルされている限り、(フロントエンド サーバーの数)/2 を停止し、resources
ディレクトリとバイナリの新しいコピーを rsync してから、スクリプトを使用してバックアップを開始します。次に、残りの半分を繰り返します。
私の意見では、外部ライブラリ (データベース、画像など) のバージョンがビルド環境。OS とライブラリのリリースが一致する限り、virtualbox インスタンスを使用して最終的なコンパイルを行うこともできます。