2010-10-29 25 views
24

हमारे पास एक ऐसी वेबसाइट है जो NServiceBus का उपयोग करके ईवेंट प्रकाशित करती है। साइट msdeploy का उपयोग कर तैनात किया गया है। हमारे पास NServiceBus.exe भी है जो इन घटनाओं की सदस्यता लेने के लिए विंडोज सेवा के रूप में चलाना चाहिए, और हम इसे भी तैनात करना चाहते हैं।विंडोज सेवा स्थापित करने के लिए MSDeploy?

क्या सेवा के साथ-साथ वेबसाइट को पैकेज करने का कोई तरीका है, ताकि इसे भी इंस्टॉल किया जा सके? क्या अलग से पैकेज करना संभव है ताकि हम इसे किसी अन्य सर्वर पर तैनात कर सकें?

यह कैसे करना है इस बारे में जानकारी कहां से प्राप्त करें इस पर कोई सुझाव बहुत अच्छा होगा, क्योंकि हम अब वेबसाइट के लिए स्वचालित तैनाती कर सकते हैं।

+0

मैं बहुत में क्या समाधान आप इस पर के लिए आया था दिलचस्पी होगी। –

+0

दुर्भाग्य से हम समाधान खोजने के लिए समय से बाहर भाग गए, लेकिन मुझे उम्मीद है कि जल्द ही इस विषय पर वापस लौटना होगा। – Andy

+1

मैंने आखिरकार एक ब्लॉग पोस्ट पोस्ट किया है कि हमने यह कैसे किया है: http://www.jamescrowley.co.uk/2011/09/05/deploying-windows-services-using-msdeploy/ –

उत्तर

5

मैं हाल ही में MSDeploy, प्रेत और installUtil.exe

का उपयोग कर तुम बस मूल रूप से अपने संस्थापक वर्ग को संशोधित करने और यदि आवश्यक हो तो अपने रिमोट wmsvc सेवा विशेषाधिकार तरक्की की जरूरत है ऐसा किया।

Link to blog

4

हम जो घायल हो रहे थे वह एक 'नियंत्रक' परत बना रहा था जो तैनाती कार्यों का समन्वय करता है, यहां तक ​​कि एक जो msdeploy का उपयोग कर सकता है। अनिवार्य रूप से, हमारी तैनाती प्रणाली में msdeploy अमूर्तता का उच्चतम स्तर नहीं है।

हमने 'पैकेज' से वस्तुओं को तैनात करने के उन कार्यों को समन्वयित करने के लिए एमएसबिल्ड का उपयोग करना चुना।

हमारी तैनाती प्रक्रिया में, msdeploy के साथ तैनात एक वेब एप्लिकेशन केवल एक और सेवा है, जैसा कि एक विंडोज सेवा है।

सभी प्रकटीकरण में, हमने वास्तव में msdeploy परिनियोजन कार्यों को अभी तक नहीं बनाया है, हालांकि यह पहले से ही जो हमने पहले से बनाया है, उसे अच्छी तरह से छोड़ना चाहिए, क्योंकि एमएसबिल्ड एमएसडीओपी का आह्वान करेगा। हम वर्तमान में एमएसबिल्ड के माध्यम से समन्वयित वेबपैप परिनियोजन स्वचालन के लिए एमएसबिल्ड समुदाय कार्यों का उपयोग करते हैं।

आप ब्लॉग पोस्ट के माध्यम से हमारे तैनाती को 'सामान्यीकृत' करने के तरीके के बारे में कुछ और पढ़ सकते हैं जिसे मैंने "PANDA - Packaging ANd Deployment Automation" कहा था।

+0

क्या आपने कभी खोला अपने पांडा सामान सोर्स? – vittore

+0

नहीं, लेकिन ब्याज के लिए धन्यवाद! इस समय, सोचें कि उस स्थान को भरने के लिए विकल्प उपलब्ध हैं (यहां तक ​​कि विंडोज़ पर) (शेफ, पावरशेल डीएससी, ऑक्टोपस तैनाती) इत्यादि। –

4

यहाँ एक msdeploy cmd लाइन मैं एक archivedir कि मेरे Windows Service.proj फ़ाइल में एक के बाद निर्माण कदम से बनाई गई है सिंक करने के लिए प्रयोग किया जाता है।

यह मेरे बिल्ड सर्वर से एक अलग नेटवर्क पर मेरे ऐप सर्वर से समन्वयित हो रहा है। मेरे पास पूर्व और पोस्ट बिल्ड चरण हैं जो दूरस्थ सर्वर पर सेवाओं को प्रारंभ और बंद करते हैं। Powerhell और msdeploy के साथ एक बग के कारण आपको Powerbll स्क्रिप्ट को एक vb स्क्रिप्ट में लपेटना होगा। -verbose विकल्प बहुत उपयोगी है।

मेरे पास नीचे vbscript और ps1 स्क्रिप्ट भी है। वीबी नींद और पूर्व और पोस्ट 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 

वीबी स्क्रिप्ट:

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 
संबंधित मुद्दे