運用IIS Webサイトのデポはどのように行いますか?


15

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

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

回答:


15

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

その1つの方法は、ROBOCOPYを使用して新しいファイルをサーバーにコピーする単純なスクリプトです。

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

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


1
バージョン管理システムは魅力的ですが、コンパイルが必要なWebサイトではうまく機能しない場合があります。コンパイルされたバージョンがもちろんバージョン管理下に置かれていない限り。
ジョナサンワトニー

1
私は、ソース管理システムを実稼働環境に置くことを考えたことがありませんでした。興味深い確実なビートは、大量の余分なzipファイルを保持する必要があります。
JoshBerke

私はこれをSubversionで常に行っています。Apacheでは、mod_rewriteを使用して、ユーザーが.svnディレクトリにアクセスできないようにします。展開にバージョン管理を使用することは間違いなく進むべき方法です。
ルーク

13

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

通常は、どこかに「ゴールドマスター」サイトをセットアップし、そこから変更をパックするようツールに指示することで使用します。次に、展開するターゲットサーバーを調べ、ゴールドマスターのように見えるようにするために必要な変更を行います(これは、以降の更新に役立ちます)。複数のWebサーバー(つまり、ファーム)に展開する場合に特に便利です。また、単なるファイル以上の展開をサポートしています(レジストリの変更、証明書、SQLデータベースなどの展開も処理できます)。


+無限。このツールは命の恩人であり、部門全体(大部分)を解放してより興味深い問題に取り組むことができます。
ポートマン

4

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

CruiseControl.NETをご覧ください


3

以前の雇用主で私がやったことは、基本的には、多くのダウンタイムを許すことができなかったオークション/電子商取引サイトでした。

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

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


1

おっと、職場にはこのためのチームがあります。社内のツールを使用して、サーバーをクラスター/ファームから取り出し、ファイルを発行し、NUnitを実行して、クラスター/ファームに追加します。16台のサーバーごとにこれを行います。数時間かかります。私たちの残りの人は「アクセスを見回す」ことすらありません。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.