Вопрос

У нас есть веб-сайт, который публикует события с использованием NSERVICEBUS. Сайт развернут с использованием MSDEPLOY. У нас также есть NServiceBus.exe, который должен работать как служба Windows, чтобы подписаться на эти события, и мы хотели бы развернуть это также.

Есть ли способ упаковать сервис, а также веб-сайт, так что он также может быть установлен? Можно ли упасть отдельно, поэтому мы можем развернуть его на другой сервер?

Любые советы о том, где можно найти информацию о том, как это сделать, было бы здорово, как мы можем сделать автоматические развертывания для веб-сайта сейчас.

Это было полезно?

Решение

Я недавно сделал это, используя MSDePloy, Phantom и InstallutiL.exe

Вы просто должны изменять класс установщика и поднимать удаленные привилегии службы WMSVC, если это необходимо.

Ссылка на блог

Другие советы

Что мы завели, делаем создание слоя «контроллера», который координирует задачи развертывания, даже один, который мог бы использовать MSDePloy. По сути, Msdeploy не самый высокий уровень абстракции в нашей системе развертывания.

Мы решили использовать MSBuild для координации этих задач развертывания элементов из «пакета».

В нашем процессе развертывания веб-приложение, развернутое с помощью MSDePloy, - это просто еще один элемент развертывания, так же, как и услуга Windows.

Во всех раскрытии мы на самом деле не создали задачи развертывания MsDeploind, хотя она должна / превысила бы к тому, что мы уже создали, так как MSBuild будет вызывать MSDePloy. В настоящее время мы используем задачи MSBuild Community для автоматизации развертывания WebApp, согласованные через MSBUILD.

Вы можете прочитать немного больше о том, как мы «обобщенные» наши развертывания через блог пост, который я звонил »Панда - Автоматизация упаковки и развертывания".

Вот линия MSDEPLE IMD, которую я использовал для синхронизации ArchiveriR, созданный с шага после сборки в моем Windows Service.proj файл.

Он синхронизируется с моим сервером сборки на мой прикладной сервер в другой сети. У меня есть и постепенные шаги, которые начинают и остановите службы на удаленном сервере. Вы должны обернуть скрипт PowerShell в скрипте VB из-за ошибки с PowerShell и MSDePloy. То -verbose Опция очень полезна.

У меня также есть сценарий VBScript и PS1 ниже. Будьте осторожны с помощью сон VB и Pre и Post Msdeploy Timeouts.

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 Script:

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 Script:

$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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top