37

मैं msdeploy स्थापित किया है और सेट करने के लिए कोशिश कर रहा हूँ। मैं वेब सर्वर पर दूरस्थ सेवा स्थापित किया है, लेकिन मेरे सभी परीक्षणों मुझे एक 401 unauthorised error दे रहे हैं। सर्वर विंडोज 2008 आर 2 है।msdeploy (वेब ​​तैनात) 401 प्रमाणन के साथ नाकाम रहने के मुद्दों

msdeploy -verb:dump -source:contentPath=c:\inetpub\wwwroot\MyApp,computerName=<IP HERE>,userName=Domain\msdeploy,password=MyPassword 

और त्रुटि:

मैं एक बहुत ही सरल msdeploy आदेश का परीक्षण कर रहा हूँ

Error: Object of type 'contentPath' and path 'c:\inetpub\wwwroot\MonApp' cannot be created. 
Error: Remote agent (URL http://<IP HERE>/MSDEPLOYAGENTSERVICE) could not be contacted. Make sure the remote agent service is installed and started on the target computer. 
Error: An unsupported response was received. The response header 'MSDeploy.Response' was '' but 'v1' was expected. 
Error: The remote server returned an error: (401) Unauthorized. 
Error count: 1. 

मैं एक उपयोगकर्ता कहा जाता msdeploy बनाया है और मैं सर्वर पर स्थानीय व्यवस्थापक समूह में जोड़ा ।

मैं देख लिया है: सेवा ठीक से स्थापित

  • यही है और मैं इसे शुरू कर दिया
  • विभिन्न संयोजनों उपयोगकर्ता नाम का डोमेन भाग का उपयोग नहीं की, और AuthType = बेसिक
  • को देखते हुए पूर्ण अनुमति जोड़ने उस फ़ोल्डर में सभी को
  • आईआईएस में रिमोट कनेक्शन
  • सामग्री के लिए मेरे "एमएसडीओपी" उपयोगकर्ता के लिए प्रबंधन सेवा प्रतिनिधि नियम जोड़ा गया है और iisApp (संक्षेप में री पर आधारित डिंग this)
  • एक अलग व्यवस्थापक खाते मैं सर्वर से आरडीसी के लिए उपयोग के साथ की कोशिश की ...
  • अलग contentPaths और विभिन्न msdeploy साथ की कोशिश की आज्ञा देता है
  • एक विशिष्ट खाता बनाया गया, और IIS_Users है कि खाता जोड़ा है। उस उपयोगकर्ता को मेरी वेबसाइट "आईआईएस प्रबंधक अनुमतियों" में जोड़ा गया, और सभी प्रदाताओं के लिए "प्रबंधन सेवा प्रतिनिधि" सेटअप किया गया।

उत्तर

56

मैं यह सोचते कर रहा हूँ आप इस लेख के अनुसार WebDeploy 2.0 के लिए सही ढंग से अपने सर्वर कॉन्फ़िगर कर दिया है:

Configure Web Deploy (IIS.NET)

नोट: एमएस वेब तैनात 2.0 का एक ताज़ा और मूल लिंक 'isn जारी किया है टी वास्तव में और अधिक वैध नहीं है। मैंने इसे अपडेट किया है लेकिन मुझे लगता है कि यह समय के साथ एक चलती लक्ष्य होगा।

आप भी अपने विकास/निर्माण/सीआई मशीन पर वेब तैनात 2.0 स्थापित करने की आवश्यकता।

यदि आप अभी भी 1.0 का उपयोग कर रहे हैं तो मैं उन्नयन की अनुशंसा करता हूं, 2.0 में कुछ बड़े सुधार हैं।

का प्रयोग विजुअल स्टूडियो 2010 के फीचर प्रकाशित करें:

दृश्य स्टूडियो साइट पर राइट क्लिक करके एक साइट प्रकाशित कर सकते हैं और चयन करने "प्रकाशित करें"।

enter image description here

दृश्य स्टूडियो 2010 और WebDeploy 2.0 के साथ पकड़ लिया है के एक जोड़े हैं: यह निम्नलिखित संवाद को लाता है। पहला यह है कि वीएस -2010 वेब डिप्लॉय/एमएसडीपॉइंट 2.0 जागरूक नहीं है। तो अगर आप प्रकाशित करने का प्रयास आप निम्नलिखित जैसे एक त्रुटि प्राप्त होगी:

Error 1 Web deployment task failed.((04/02/2011 12:30:40) An error occurred when the request was processed on the remote computer.)

enter image description here

तुम भी विफल अनुरोध में निम्न त्रुटि में सर्वर पर वेब प्रबंधन सेवा के लिए ट्रेसिंग देखेंगे C:\inetpub\logs\wmsvc\TracingLogFiles\W3SVC1 आप यह मानते हुए कि यह चालू कर दी है:

AspNetModuleDiagErrorEvent
Uri /msdeploy.axd
eventData Tracing deployment agent exception. Request ID ''. Request Timestamp: '02/04/2011
System.UnauthorizedAccessException: Access to the path 'D:\' is denied.

enter image description here

ड्राइव अक्षर acco अलग अलग होंगे आपकी आईआईएस साइट पर कौन सा ड्राइव चल रहा है, इस पर आधारित है।

बॉक्स के बाहर, इन-जीयूआई प्रकाशन तंत्र MSDeploy (1.0) के गलत संस्करण का उपयोग करने के लिए डिफ़ॉल्ट है। हम MSDeploy 2.0 का उपयोग करने के लिए VS2010 बताना चाहते हैं। आप संपादन दृश्य स्टूडियो 2010 के devenv.exe.config फ़ाइल जो में स्थित है ऐसा कर सकते हैं (एक डिफ़ॉल्ट c:\ ड्राइव स्थापित संभालने तुमने किया था):

64 के लिए बिट सिस्टम: c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE 32 के लिए बिट सिस्टम: c:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE

ओपन अप devenv.exe.config अपने पसंदीदा एक्सएमएल संपादक में (मैं सिर्फ दृश्य स्टूडियो 2010 में ही प्रयोग किया जाता है) और निम्न एक्सएमएल कॉपी:

<dependentAssembly> 
    <assemblyIdentity 
    name="Microsoft.Web.Deployment" 
    publicKeyToken="31bf3856ad364e35" culture="neutral"/> 
    <bindingRedirect oldVersion="7.1.0.0" newVersion="8.0.0.0"/> 
</dependentAssembly> 

/configuration/runtime/assemblyBinding अनुभाग को यह करें:

enter image description here

बार जब आप इस पास विजुअल स्टूडियो 2010 के सभी उदाहरणों इस परिवर्तन को प्रभावी करने के लिए अनुमति देने के लिए किया है। VS2010 को पुनरारंभ करें, एक वेब प्रोजेक्ट खोलें और फिर फिर से प्रकाशित करने का प्रयास करें। इस बार यह सफल होना चाहिए।

प्रकाशन का उपयोग कर एक पैकेज बिल्ड:

दृश्य स्टूडियो एक पैकेज बिल्ड कि कमांड लाइन से क्रियान्वित किया जा सकता उत्पादन कर सकते हैं। यह Project -> Build Deployment Package का उपयोग करके उत्पन्न होता है। निरंतर एकीकरण के लिए सुविधाजनक और जैसे (पैकेज को /t:Package स्विच के साथ msbuild का उपयोग करके भी उत्पन्न किया जा सकता है)।

पैकेज के लिए आउटपुट फ़ोल्डर आमतौर पर obj\Package पर डिफ़ॉल्ट होता है।

दुर्भाग्य से विजुअल स्टूडियो 2010 यदि यह कुछ गलत हो जाता है और एक msdeploy आवरण बैच स्क्रिप्ट 1.0 लक्ष्यीकरण और सर्वर के बजाय साइट स्तर पर तैनाती लक्ष्यीकरण उत्पन्न करता है।

अपनी खुद की msdeploy.exe कमांड लाइन तैयार करने के अलावा इस के लिए कोई त्वरित समाधान नहीं है। मैं इस में थोड़ा और अधिक पठनीय बनाने के लिए .:

 
"C:\Program Files\IIS\Microsoft Web Deploy v2\\msdeploy.exe" 
    -source:archiveDir='d:\sites\DemoApp\obj\Package\Archive' 
    -dest: 
     auto, 
     computerName='https://yoursite.com:8172/msdeploy.axd?site=yoursitename', 
     userName='demosite', 
     password='somepassword', 
     authtype='basic', 
     includeAcls='False' 
    -verb:sync 
    -disableLink:AppPoolExtension 
    -disableLink:ContentExtension 
    -disableLink:CertificateExtension 
    -setParamFile:"d:\sites\DemoApp\obj\Package\Archive.SetParameters.xml" 
    -allowuntrusted 

नोट करने के लिए पहली बात यह है msdeploy.exe के लिए पथ है कई लाइनों भर में इस विभाजित कर दिया है। विजुअल स्टूडियो संस्करण 1.0 के लिए एक पथ उत्पन्न करता है। मैंने 2.0 का उपयोग करने के लिए इसे बदल दिया है।

उल्लेखनीय पैरामीटर:

-source:archiveDir= msdeploy बताता है कि हम एक पैकेज की तैनाती और स्थानीय स्थान

computerName='https://yoursite.com:8172/msdeploy.axd?site=yoursitename' प्रदान करता है कर रहे हैं - यह बताता है MSDEPLOY IIS7 पर किसी विशिष्ट साइट पर तैनात करने के लिए। yoursitename बिल्कुल आईआईएस में साइट के नाम से मेल खाना चाहिए।

userName और password साइट के लिए प्रतिनिधि प्रबंधक उपयोगकर्ता का नाम है। यह साइट स्तर पर "आईआईएस प्रबंधक अनुमतियों" सुविधा का उपयोग कर कॉन्फ़िगर किया गया है। खाते को स्थानीय विंडोज उपयोगकर्ता खाता होना चाहिए।

-authtype='basic' - यह बुनियादी प्रमाणीकरण को मजबूर करता है अन्यथा एनटीएलएम प्रमाणीकरण का प्रयास किया जाता है।

-allowuntrusted - यदि आप अंतर्निहित स्वयं हस्ताक्षरित SSL प्रमाणपत्र का उपयोग करते हैं तो यह किसी SSL प्रमाणपत्र त्रुटियों को अनदेखा करता है।

यदि आप उस कमांड लाइन का उपयोग करते हैं तो आप सफलता के साथ रिमोट आईआईएस 7 सर्वर पर तैनात करने में सक्षम होना चाहिए।

प्रकाशन कच्चे सामग्री:

कभी कभी हम बस सीधे एक स्थानीय फ़ोल्डर से कुछ स्थिर सामग्री (या शायद यह भी एक क्लासिक एएसपी या PHP साइट) प्रकाशित करना चाहते हैं। हम निम्नलिखित msdeploy.exe कमांड लाइन का उपयोग कर ऐसा कर सकते हैं:

 
"C:\Program Files\IIS\Microsoft Web Deploy v2\\msdeploy.exe" 
    -source:contentPath='d:\websites\mysite' 
    -dest: 
    contentPath='yoursitename', 
    computerName='https://yoursite.com:8172/msdeploy.axd?site=yoursitename', 
    userName='demosite', 
    password='somepassword', 
    authtype='basic', 
    includeAcls='False' 
-verb:sync 
-allowuntrusted 

फिर वही नियम -dest:contentPath और computerName के लिए पहले की तरह लागू होते हैं।

मेरा मानना ​​है कि एमएसडीईपी संस्करण के मुद्दों को एसपी 1 में हल किया जाएगा (जिसे मुझे अभी तक देखने का मौका नहीं मिला है)।

एक अंतिम VS2010 पकड़ लिया:

जब दृश्य स्टूडियो 2010 का उपयोग करके प्रकाशन, "प्रकाशित करें" का निर्माण पैकेज एसीएल की साइट की एक अनाम खाते का कारण बनता है परिवर्तित करने के लिए सभी फ़ाइलों और के अपवाद के साथ फ़ोल्डर के लिए केवल पढ़ने के लिए App_Data फ़ोल्डर जो पढ़ और लिखने के लिए बदला जाता है।

msbuild.exe myproject.csproj /t:Package /p:IncludeSetAclProviderOnDestination=False 

मैं से कि उपयोगी डला पाया: आप MSBuild उपयोग कर रहे हैं

<IncludeSetAclProviderOnDestination>False</IncludeSetAclProviderOnDestination> 

या:

यह प्रत्येक <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> तहत .csproj फ़ाइल में निम्न सेटिंग जोड़कर आसपास काम किया जा सकता है यहां:

Skipping setting an ACL in a Visual Studio 2010 deployment package (WayBackMachine link because the original content is no longer available)

+0

यह एक महान पोस्ट केवी है - यहां वास्तव में उपयोगी जानकारी है। हालांकि, मेरी समस्या के लिए, मैंने अभी भी 401 ऑथ त्रुटियों को देखा जब तक कि मैं कंप्यूटर व्यवस्थापक खाते का उपयोग नहीं करता (नीचे अपने स्वयं के उत्तर में समझाया गया)। –

+1

msdeploy.axd? साइट = yoursitename यह मेरे लिए तय है। अगर मैंने साइट पैरामीटर छोड़ा तो मुझे 401 मिल गया। धन्यवाद – Schneider

+0

इस भयानक उत्तर के लिए धन्यवाद। साइट = ... क्या मैंने अभी अपने जीवन के 3 घंटे बिताए हैं! :) – Ragesh

3

हम तुम्हारा के रूप में एक ऐसी ही समस्या का सामना कर रहे थे।

इसके लिए आपको सेवाओं में दूरदराज के एजेंट सेवा शुरू करने के लिए की जरूरत है। हम पीसी नाम का इस्तेमाल किया क्योंकि आईपी पते एक त्रुटि दे रहा था। तो पीसी नाम, उपयोगकर्ता नाम और पासवर्ड का उपयोग करने की कोशिश करें।

1

अंत में मैंने कभी भी क्या नहीं किया मेरे नियोक्ता उपयोगकर्ता खाते के साथ मैं लापता था - लेकिन पाया कि अगर मैंने मशीन व्यवस्थापक खाते का उपयोग किया था, तो तैनाती सफल होगी। अभी के लिए मैं तैनाती करने के लिए व्यवस्थापक खाते का उपयोग कर रहा हूँ।एमएस की स्थापना के शानदार और सूचनात्मक सारांश के लिए कीव के लिए

कुडोस 2 :)

6

मेरे लिए, प्रकाशन दृश्य स्टूडियो में काम किया तैनात है, लेकिन यह काम नहीं किया, जब मैं .deploy.cmd स्क्रिप्ट भाग गया।

में <UseMsdeployExe>true</UseMsdeployExe> सेट करके, आप एमएसबिल्ड कार्य के बजाय msdeploy.exe का उपयोग करने के लिए वीएस को मजबूर कर सकते हैं। फिर लॉगिंग स्तर (टूल्स> विकल्प> प्रोजेक्ट्स और सॉल्यूशंस> बिल्ड और रन> एमएसबिल्ड प्रोजेक्ट बिल्ड आउटपुट वर्बोजिटी) को चालू करके आप वीएस का उपयोग करने वाली कमांड लाइन देख सकते हैं।

मेरी .deploy.cmd के साथ समस्याओं थे:

  • मेरे आईआईएस उपयोगकर्ता केवल उस साइट पर अनुमतियों था तो मैं computerName में ?site=<SITENAME> की जरूरत है।
  • मुझे -dest: पैरामीटर में AuthType='Basic' की आवश्यकता थी।
+1

विशेषता के सुझाव के लिए धन्यवाद –

0

इसके लिए क्या लायक है। प्रकाशन मेरे लिए काम कर रहा था और फिर एक दिन मेरे पास यह वही मुद्दा था (401 अनधिकृत त्रुटि) VS2012 को पुनरारंभ करने से समस्या हल हो गई। इच्छा है कि मैंने हर दूसरे समाधान की कोशिश करने से पहले कोशिश की थी।

संबंधित मुद्दे