これは古い質問です。内部展開サーバーでKuduをセットアップしたばかりなので、最新の情報を含む最新の回答を提供します。現在選択されている回答は、開発環境内から直接Kuduを実行している場合にのみ対処します。
「本番」タイプの環境にデプロイしていて、ターゲットサーバーにVisual Studioをインストールしたくない場合は、githubのプロジェクトWebサイトに優れたガイドがあります。
https://github.com/projectkudu/kudu/wiki/Deploying-to-a-server
ターゲットサーバーに、以下をインストールする必要があります。
開発マシンに戻り、gitリポジトリのクローンを作成し、上記のリンクの手順に従って「build.cmd」ファイルを使用してビルドします。
build.cmdを実行しているときに、ビルドがアーティファクトを生成するのを妨げるいくつかのテスト失敗が発生しました。これらはすべて、私たちが使用していないMercurialに関連していました。Mercurialクライアントをインストールしても、魔法のように消えることはなかったので、環境のデバッグに多くの時間を費やすのではなく、テストを無効にしました。
ビルド出力は失敗を示します。[Fact]属性をコメントアウトして無効にしました。これらは私が無効にしたテストです:
- tests / Kudu.Core.Test / HgRepositoryFacts.cs(すべてのテスト)
アーティファクト内のすべてのアイテムを作成したビルドが成功したら、KuduWebサイトとWebサービスコードのデプロイに移ることができます。以下の手順は、c:\ inetpub \ wwwrootにすべてをダンプするのではなく、個別のWebアプリケーションインスタンスを設定するためのものです。これは、手順の読み方です。
「artifacts\Release \ KuduWeb」を、Webサイトを実行するサーバーのターゲット領域にコピーします。kuduインストールを別のホストヘッダーで実行しますが、別のポートを使用することも、ルートWebサイトとして実行することもできます。このディレクトリは、Webアプリケーションのルートになります。
KuduWebフォルダーのすぐ下に空の「App_Data」フォルダーを作成します。
「artifacts\Release \ SiteExtensions \ Kudu」を手順1のフォルダと同じレベルにコピーし、名前を「Kudu.Services.Web」に変更します。この場所は、KuduWebweb.configファイルの相対パスとして設定されます-serviceSitePathを設定します。
IIS管理者を開き、手順1の「KuduWeb」フォルダーを指すWebサイトを作成します。
手順4のアプリプールを「LocalSystem」として実行するように構成します。これは、IISサイトを管理するために必要です。
KuduWebと同じレベルに新しいフォルダ「apps」を作成します。これは、デプロイメントが送信される場所です。注:この場所は、KuduWebweb.configファイルで制御されます-「sitesPath」の設定
上記の手順で作成した「apps」フォルダへのフルアクセスを「Users」に付与するようにファイルシステムのアクセス許可を変更します。
Kudu Webサイトを起動すると、次のエラーが発生しました。
パーサーエラーメッセージ:ファイルまたはアセンブリ'System.Web.Mvc、Version = 5.1.0.0、Culture = neutral、PublicKeyToken=31bf3856ad364e35'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。
何らかの理由で、適切なMVCバージョンをデプロイメントアーティファクトにコピーしませんでした。
このエラーが発生した場合、MVC5ファイルはNuGetを介して取得できます。ソースコードが5.1.0に対して作成されていることがわかったので、これが適切なリンクです。
https://www.nuget.org/packages/Microsoft.AspNet.Mvc/5.1.0
dllを抽出するために、新しいダミープロジェクトを設定し、NuGetを使用してパッケージマネージャーコンソールからdllをプルダウンしました。
インストール-パッケージMicrosoft.AspNet.Mvc-バージョン5.1.0
バイナリを取得したら、パッケージディレクトリ(。\ packages \ Microsoft.AspNet.Mvc.5.1.0 \ lib \ net45 \ System.Web.Mvc.dll)からターゲットマシンのWebサイトbinディレクトリにコピーします。
この時点で、稼働しています。Webインターフェイスを使用してアプリケーションを作成します。「apps」ディレクトリの下に、自明のツリーを含むサブフォルダが作成されます。また、アプリケーション用に2つの新しいWebサイトが作成されます。
- kudu_{your-app-name}
- kudu_service_{your-app-name}
本番環境では、次のポイントを指す適切なポート/ホストヘッダーで実行される追加のWebサイトを作成する必要があります:。\ apps \\ site \ wwwroot
これで、デプロイ用にgitリモートを追加できます。gitコンソール(例:Git Bash)でソースの場所に移動し、Kuduによって識別されるリモートを追加します。注:URLのlocalhostを適切なサーバー名に変更する必要がある場合があります。
git remote add deploy http://:52711 / your-app-name.git
コードを新しい「デプロイ」リモートにプッシュして、何が起こるかを確認します。すべての通常のプッシュメッセージに加えて、ビルド出力が表示されます。
git push deploy master
「ノード」が認識されないため、最初のプッシュをビルドおよびデプロイできませんでした。パス内にあったため、サーバーのリセットにより、パス環境変数が更新されるようになりました。解決すべき追加のエラーが見つかる場合があります。たとえば、MSBuildがインポートされて問題が発生するという問題がありました。
エラーMSB4019:インポートされたプロジェクト "C:\ Program Files(x86)\ MSBuild \ Microsoft \ Visual Studio \ v11.0 \ WebApplications\Microsoft.WebApplication.targets"が見つかりませんでした。
YMMVですが、これらはすべて現在解決可能な問題です。良好な継続的な展開!