24

NServiceBusを使用してイベントを公開するWebサイトがあります。サイトはmsdeployを使用してデプロイされます。これらのイベントをサブスクライブするためのWindowsサービスとして実行する必要があるNServiceBus.exeもあり、それも展開したいと思います。

サービスとウェブサイトをパッケージ化して、インストールできるようにする方法はありますか?別のサーバーにデプロイできるように、個別にパッケージ化することは可能ですか?

Webサイトの自動展開を今すぐ実行できるので、これを行う方法に関する情報をどこで見つけるかについてのヒントは素晴らしいでしょう。

4

3 に答える 3

5

最近、MSDeploy、Phantom、installUtil.exeを使用してこれを実行しました

基本的には、インストーラークラスを変更し、必要に応じてリモートwmsvcサービス特権を昇格させる必要があります。

ブログへのリンク

于 2011-03-13T05:19:05.887 に答える
4

最終的に行ったのは、msdeployを使用できる場合でも、デプロイメントタスクを調整する「コントローラー」レイヤーを作成することでした。基本的に、msdeployは、デプロイメントシステムの最高レベルの抽象化ではありません。

「パッケージ」からアイテムをデプロイするタスクを調整するために、MSBuildを使用することを選択しました。

展開プロセスでは、msdeployを使用して展開されたWebアプリケーションは、Windowsサービスと同様に、単なる別の展開アイテムです。

すべての開示において、実際にはまだmsdeployデプロイメントタスクを作成していませんが、MSBuildがmsdeployを呼び出すため、すでに作成したものにうまくドロップするはずです。現在、MSBuildを介して調整されたWebアプリの展開の自動化にMSBuildコミュニティタスクを使用しています。

私が行ったブログ投稿「 PANDA-PackagingANdDeployment Automation 」を介して、デプロイメントを「一般化」した方法についてもう少し読むことができます。

于 2010-11-16T13:33:39.573 に答える
4

これは、ファイルのビルド後の手順で作成されたarchivedirを同期するために使用したmsdeployコマンド行Windows Service.projです。

ビルドサーバーから別のネットワーク上のアプリサーバーに同期しています。リモートサーバー上のサービスを開始および停止するビルド前とビルド後の手順があります。powershellとmsdeployのバグのため、powershellスクリプトをvbスクリプトでラップする必要があります。この-verboseオプションは非常に役立ちます。

以下にvbscriptとps1スクリプトもあります。VBスリープとmsdeployの前後のタイムアウトに注意してください。

msdeploy -verb:sync -source:archivedir=\\qa-xxxxx1.qa.lan\deployment\backups\FreddieMacDelivery\FreddieMacDelivery.zip,tempAgent='True',computerName=qa-xxxxx1.qa.lan,userName=QA\xxxxx,password=xxxx,authtype=NTLM,includeAcls='False' -dest:dirpath=\\qa-xxxxxx1.qa.lan\protk\Services\FreddieMacDelivery\1.4.1.test -useCheckSum -verbose -preSync:runCommand="cscript.exe c:\temp\stop_win_svc.vbs" -postSync:runCommand="c:\temp\start_win_svc.vbs",waitInterval=15000,waitAttempts=1

VBスクリプト:

Option Explicit
Dim oShell, appCmd,oShellExec
Set oShell = CreateObject("WScript.Shell")

appCmd = "powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ""&c:/temp/Get_Win_SVC.ps1"" "

Set oShellExec = oShell.Exec(appCmd)

WScript.Sleep 1000
oShellExec.StdIn.Close()

Powershellスクリプト:

$username = 'QA\xxxxx'
$password = 'xxxxx'
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))

(Get-WmiObject  -computer qa-xxxx1.qa.lan  -Credential $cred Win32_Service -Filter "Name='ProTeck.FreddieMac.DeliveryService'")


$svc = (Get-WmiObject  -computer qa-xxxxx1.qa.lan  -Credential $cred Win32_Service -Filter "Name='ProTeck.FreddieMac.DeliveryService'") 

Write-Host  $svc

$svc.InvokeMethod("StartService", $null)


(Get-WmiObject  -computer qa-xxxxx1.qa.lan  -Credential $cred Win32_Service -Filter "Name='ProTeck.FreddieMac.DeliveryService'")> c:\temp\win_stat_post.txt
于 2011-09-09T14:11:50.493 に答える