2011-05-04 11 views
8

के साथ विंडोज सेवाओं को तैनात करने के लिए MsDeploy का उपयोग करना क्या कोई भी preSync runCommand के साथ विंडोज सेवाओं को तैनात करने के लिए सफलतापूर्वक MsDeploy का उपयोग कर रहा है? मुझे यह एक प्रशासक खाते का उपयोग कर काम कर रहा है, लेकिन मेरे जीवन के लिए यह एक मानक उपयोगकर्ता खाते पर काम नहीं कर सकता है। दुर्भाग्य से मैं एकीकृत प्रमाणीकरण का उपयोग नहीं कर सकता (हम बाहरी बॉक्स में तैनात हैं), और हमारे बिल्डर सर्वर पर लॉग में सादे टेक्स्ट में बैठे हमारे प्रशासक पासवर्ड का विचार मुझे बिल्कुल आरामदायक महसूस नहीं करता है। उस मामले के लिए, न तो कोई उपयोगकर्ता प्रमाण-पत्र करता है - लेकिन मैं इसके चारों ओर एक रास्ता नहीं देख सकता।preSync कमांड

"tools/deploy/msdeploy.exe" -verb:sync 
-preSync:runCommand="tools\Deploy\PreSyncCommand.cmd",waitInterval=30000 
-source:dirPath="C:\BuiltSourcePath" 
-dest:computerName=https://server:8172/msdeploy.axd?site=dummysitename,userName=service-deploy,password=service-deploy-pass,authType=basic,dirPath="C:\DeployPath\" 
-allowUntrusted 

IIS में contentPath साथ, सेवा को तैनात खिड़कियों खाते के लिए प्रमाणीकरण की अनुमति के लिए डमी साइट के लिए सेट अप नियमों और runCommand अनुमति के साथ (के लिए:

आदेश मैं उपयोग कर रहा हूँ यह है पल सी पर सेट किया गया है: \ क्योंकि यह पूरी तरह से स्पष्ट नहीं है कि क्या इसे अस्थायी पथ पर सेट किया जाना चाहिए जो एमएसडीईपी स्ट्रीम करता है, या तैनाती पथ?)। सेवा-तैनाती खाते में लक्ष्य निर्देशिका का पूर्ण नियंत्रण भी है। मुझे निम्नलिखित वापस मिलते हैं:

Performing '-preSync'... 
Info: Using ID '7a7d34a1-b5d8-49f1-960a-31c9cf825868' for connections to the remote server. 
Info: Using ID '4d0b910c-aca4-4640-84bd-3597d22d99d1' for connections to the remote server. 
Info: Updating runCommand (C:\TeamCity\buildAgent\work\aec989676b349656\tools\De 
ploy\PreSyncCommand.cmd). 
Warning: Access is denied. 
Warning: The process 'C:\Windows\system32\cmd.exe' (command line '/c "C:\Windows 
\ServiceProfiles\LocalService\AppData\Local\Temp\giz2t0kb.0ay.cmd"') exited with 
code '0x1'. 

ऐसा होता है भले ही PreSyncCommand.cmd की सामग्री खाली हो। यदि मैं प्रशासक प्रमाण-पत्र में पास करता हूं तो वही आदेश ठीक चलाता है। मैंने ProcessMonitor का उपयोग करके यह जांचने की कोशिश की है कि क्या कुछ भी पहुंच से इनकार किया जा रहा है लेकिन कोई भी नहीं देख सकता है - इसलिए मुझे लगता है कि यह अभी भी एक एमएसडीमेंट प्रमाणीकरण नियम है। WmSvc.log में कुछ भी नहीं है (डीबगिंग सक्षम है), न ही इवेंट लॉग में।

कोई विचार? धन्यवाद!

+2

मैं ऐसा करने के तरीके पर एक ब्लॉग प्रविष्टि पोस्ट किया है: http://www.jamescrowley.co.uk/2011/04/28/deploying-windows- सेवाओं-उपयोग-एमएसडीओपी/ –

+2

उपरोक्त जेम्स क्रॉली द्वारा पोस्ट की गई ब्लॉग एंट्री ने इसे अभी यहां ले जाया है [http://www.jamescrowley.co.uk/2011/09/05/deploying-windows-services-using- msdeploy /) –

उत्तर

13

आप WmSvc के माध्यम से वेब तैनात उपयोग कर रहे हैं के बाद से, आप गंतव्य सर्वर पर सेटअप उचित प्रतिनिधिमंडल नियमों की जरूरत है:

भीतर आईआईएस प्रबंधक, "प्रबंधन सेवा डेलिगेशन" सुविधा को खोलने के। एक नया नियम जोड़ें जो कम से कम runCommand प्रदाता निर्दिष्ट करता है। अनुभाग के रूप में चलाएं, Specific User चुनें और उस मशीन पर स्थानीय व्यवस्थापक खाते के लिए प्रमाण-पत्र प्रदान करें। यह वह पहचान है जिसके अंतर्गत आपकी रनकॉमैंड स्क्रिप्ट निष्पादित की जाएगी। अंत में, उपयोगकर्ता जिसे आप गंतव्य के लिए निर्दिष्ट कर रहे हैं dirPath प्रदाता प्रतिनिधिमंडल नियम में जोड़ा जाना आवश्यक है।

आप आह्वान एक तैनाती एक विशेषाधिकार रहित खाते का उपयोग करने की अनुमति देता है कि, और अभी तक यह प्रशासनिक साख के तहत लक्षित मशीन पर मार डाला है।

आईआईएस सुविधा प्रतिनिधिमंडल पर अधिक जानकारी: http://learn.iis.net/page.aspx/516/configure-the-web-deployment-handler/

+0

धन्यवाद! यह * तत्व * के रूप में चला गया था जिसे मैं याद कर रहा था। यह अब पूरी तरह से काम करता है। –