web-dev-qa-db-ja.com

どのように制作を行いますかIISウェブサイトのデポイ?

したがって、これがスタックオーバーフローの質問なのかサーバー障害の質問なのかわからない。実稼働環境にデプロイしたい.NETWebサイトがある場合、それを行うための最良の方法は何ですか。 MSIとしてパッケージ化してインストールする必要がありますか? nantを使用して、必要なファイルをプッシュアップします。 Beyond Compareを使用してファイルをFTPで転送するだけですか?

本番コードをどのようにデプロイしますか?これは私がここで見ているWindows固有のケースです。

15
Glenn Slaven

IISはxcopy展開をサポートしているため、特別な要件がない限り、ファイルをコピーするだけで十分です。

これを行う1つの方法は、 [〜#〜] robocopy [〜#〜] を使用して新しいファイルをサーバーにコピーする単純なスクリプトです。

サイトが大きくて時間がかかりすぎる場合は、バージョン管理システムを使用してください。私はこの目的のために Mercurial が好きですが、バージョン管理システムの構成ファイルが最終的に公開されないように注意する必要があります。デプロイは、変更をコミットしてからサーバー上の最新バージョンをチェックアウトするだけです。効率的であることに加えて、これにより、最新かつ最高のものにショートッパーのバグがある場合に、(最後の良いバージョンにタグを付けた場合)迅速なロールバックが可能になります。

ダウンタイムを最小限に抑えるには、スクリプトを使用してファイルを新しいディレクトリにコピーし、すぐにディレクトリの名前を変更するか、IISが新しいディレクトリを指す場所を変更します。

15
Joel Spolsky

Microsoftの Web Deployment Tool の使用を検討してください。これは、WebアプリケーションとそれらのWebアプリケーションの更新を本番環境IIS 6および7Webサーバーに展開するのに役立つように特別に設計されており、MSI(Windowsインストーラー)、IMHOよりも優れたタスクを実行します。

通常は、どこかに「ゴールドマスター」サイトを設定し、そこから変更をパックするようにツールに指示することで使用します。次に、展開するターゲットサーバーを確認し、ゴールドマスターのようにするために必要な変更を加えます(これは、以降の更新に役立ちます)。これは、複数のWebサーバー(つまり、ファーム)に展開する場合に特に便利であり、ファイルだけでなく、レジストリの変更、証明書、SQLデータベースなどの展開もサポートします。

13
Erv Walter

継続的インテグレーションサーバーがソース管理システムから変更を取得することを提案することで、ジョエルの答えをさらに推し進めたいと思います。その後、プロジェクトをビルドします。次に、ビルドの出力を新しいフォルダーにxcopyします。その後、いくつかの簡単な構成変更(web.configおよびapp.config)を行うことができます。 Xcopyの準備ができました!

チェックアウト CruiseControl.NET

4
p.campbell

以前の雇用主で行ったことは、基本的にはオークション/ eコマースサイトであり、多くのダウンタイムを許容することはできませんでした。

  • リリース/バージョンの圧縮ビルドバージョンをビルドサーバーにデプロイします
  • 本番データベースのコピーがあり、本番ソフトウェアと同じバージョンのソフトウェアがあるステージングサーバーでテストします。すべてがスムーズに進んだことをテストします。ステージングサーバーの展開を再開しない場合(ただし、最初にバックアップを復元します)。
  • すべてがうまくいった場合:ビルドおよびデータベースアップグレードスクリプトを本番サーバーのローカルフォルダーにコピーします。データベースとASP.NETファイルの特定のバックアップを取ります(それでも問題が発生する場合に備えて)。次に、Enterをクリックするだけでアップグレードスクリプトとデータベースファイルのコピーを起動できるように、すべてを準備します(このためのスクリプトを作成できることに注意してください)。次に、すべてを起動します。これは通常数秒の問題であり、ユーザーはダウンタイムが発生したことにあまり気付かないでしょう。

Web開発者としてやるべき面白いことがたくさんあります。しかし、これは私の仕事の最も重要な部分でした。

3
Michael

ああ、うわあ、仕事で私たちはこれのためにチーム全体を持っています。彼らは、クラスター/ファームからサーバーを取り出し、ファイルを公開し、NUnitsを実行し、クラスター/ファームに追加する社内ツールを備えています。これは、16台のサーバーごとにこれを行います。数時間かかります。私たちの残りの部分は、「見回すアクセス」さえ持っていません。

私の個人的なプロジェクトでは、VS2005から直接Webサーバーに公開しています。ちょっとセキュリティが厳しくありません。

1
tsilb