"शोध" के दो पूरे दिनों के बाद (पढ़ें: मेरे कीबोर्ड के खिलाफ मेरे सिर को पीटना) और टीमसिटी / एमएसडीएन / टॉमकैट प्रलेखन के साथ-साथ प्रेत आईआईएस बाइंडिंग को कोसना, मैं एक बहुत ही खराब मुद्दे के जवाब के साथ आया हूं: कैसे कर सकते हैं मैं Windows Server 2008 के साथ-साथ IIS 7 जो एक आवश्यक उद्देश्य से काम कर रहा है, मल्टी-होम सर्वर पर TeamCity का IP पता और पोर्ट नंबर बदलता है? ।
पहले, थोड़ी सी पृष्ठभूमि। हमारा बिल्ड सर्वर एक आईआईसी पर दो आईपी पते (192.168.1.30 और 192.168.1.31) के साथ विंडोज सर्वर 2008 चला रहा है। मैंने IIS को पोर्ट 80 पर 192.168.1.30 पर अपनी एक और एकमात्र साइट को स्पष्ट रूप से बाँधने के लिए कॉन्फ़िगर किया है। इस बिंदु पर मैं सोच रहा हूँ कि 192.168.1.31 वाइड ओपन है और टीमसिटी के लिए इस्तेमाल होने के लिए तैयार है ... काफी नहीं।
पहली झुंझलाहट: टीमसिटी स्थापित करते समय, यह पूरी तरह से इस तथ्य की अवहेलना करता है कि इस सर्वर से जुड़े कई आईपी पते हैं जो केवल पूछते हैं कि इसे किस पोर्ट से बाँधना चाहिए। सर्वर-ग्रेड सॉफ्टवेयर के लिए, यह बहुत आश्चर्यजनक है।
दूसरी झुंझलाहट: TeamCity 8080 को पोर्ट करने के लिए चूक (wha ??)। पहली झुंझलाहट के कारण, बंदरगाह का चयन कुछ अस्पष्ट है: क्या TeamCity दोनों आईपी पते पर 8080 को पोर्ट करने के लिए बाध्य होने जा रही है? पोर्ट चयन को 80 में बदलने से एक चेतावनी मिलती है कि एक और सेवा पहले से ही 80 पोर्ट के लिए बाध्य है। हम्म, आईआईएस केवल 192.168.1.30 पर पोर्ट 80 के लिए बाध्य होना चाहिए; 192.168.1.31 पर कुछ भी नहीं होना चाहिए। जाहिर है टीमसिटी 192.168.1.30 को IIS से प्रतिस्पर्धा कर रही है।
पोर्टसीटी की स्थापना को समाप्त करना, पोर्ट 80 को चुनने और बाध्यकारी चेतावनी को अनदेखा करने के बाद, मैं "C: \ TeamCity \ server.xml" को खोलता हूं। Sidenote: "C: \ TeamCity \" TeamCity के लिए डिफ़ॉल्ट इंस्टॉलेशन डायरेक्टरी है जबकि "C: \ Users \ .BildServer" डिफॉल्ट डेटा डायरेक्टरी है। वैसे भी, "server.xml" कॉन्फ़िगरेशन फ़ाइल है, जहां आप टीमसिटी के वेब इंटरफ़ेस के पोर्ट और आईपी पते जैसी चीजें सेट कर सकते हैं। थोड़ा शोध के बाद मैं पोर्ट 80 पर आईपी पते 192.168.1.31 को बाइंड करने के लिए कॉन्फ़िगरेशन के साथ आता हूं:
या तो देखो
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
या
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
स्थापना के दौरान आपके द्वारा चुने गए पोर्ट के आधार पर। या तो बदलें ( नोट: आईपी पता बदलें! )
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
address="192.168.1.31" />
उतना ही आसान होना चाहिए, है ना ... है ना? खैर, TeamCity के वेब सर्वर (विंडोज सेवा प्रबंधक के माध्यम से) को फिर से शुरू करने से 192.168.1.31 पर कुछ भी नहीं मिलता है। ओह।
यह पता चला है कि भले ही IIS की एक और एकमात्र साइट पोर्ट 80 पर स्पष्ट रूप से 192.168.1.30 से बंधी हो, लेकिन IIS अभी भी सभी आईपी पते पर सुनता है । यह, निश्चित रूप से, टीमसिटी के वेब सर्वर (टॉमकैट) को फेंक देता है जो ऑनलाइन आने से पहले भी रुकता है। मैन्युअल रूप से टॉमकैट को कमांड-लाइन से इसकी स्टडआउट त्रुटि और यहां तक कि अधिक शोध को विच्छेदित करने के बाद, मैं स्टैकओवरफ़्लो से इस छोटे से मणि पर होता हूं: मैं कैसे नियंत्रित कर सकता हूं कि आईपी पते IIS7 का उपयोग करता है?
इसलिए, एक प्रशासनिक कमांड लाइन से, जो मैं चलाता हूं ( ध्यान दें: फिर से, आईपी एड्रेस को बदलें! इस बार आईपी पते पर जिसे आप चाहते हैं कि आईआईएस )
netsh http iplisten ipaddress = 192.168.1.30 जोड़ें
अब मैं TeamCity के वेब सर्वर और वॉइला को पुनः आरंभ करता हूं, यह काम करता है !! मैं पोर्ट नंबर निर्दिष्ट किए बिना 192.168.1.31 पर ब्राउज़ कर सकता हूं और टीमसिटी का वेब इंटरफेस सामने आता है। एक त्वरित विवेक जांच से पता चलता है कि IIS अभी भी सही ढंग से 192.168.1.30 से बंधा हुआ है। सब ठीक हैं।
इस तरह के एक साधारण फिक्स के लिए लंबी पोस्ट के लिए क्षमा करें। मुझे उम्मीद है कि यह किसी और की मदद करता है क्योंकि यह सुनिश्चित करता है कि मुझे घंटों तक बचा रहा होगा।
संपादित करें: कुछ समय के लिए TeamCity का उपयोग करने के बाद, मैंने देखा कि Build Agent जिसे TeamCity के साथ स्थापित किया गया था, उसे सही ढंग से पहचाना नहीं जा रहा था। इसे ठीक करने के लिए, मुझे TeamCity के लिए नए URL पर बिल्ड एजेंट को इंगित करना था। यह कॉन्फ़िगरेशन परिवर्तन "C: \ TeamCity \ buildAgent \ conf \ buildAgent.properties" में किया जाता है। फिर से, यह TeamCity की डिफ़ॉल्ट स्थापना के लिए मार्ग है और आप TeamCity की स्थापना को कैसे अनुकूलित करते हैं, इसके आधार पर भिन्न हो सकते हैं।
अंदर "buildAgent.properties" सुनिश्चित करें कि नया TeamCity URL के लिए "serverUrl" अंक हैं। मेरे मामले में, मैंने इसे अपडेट किया:
serverURL = http: \ //192.168.1.31
यह परिवर्तन करने के बाद, TeamCity Web Server और TeamCity Build Agent दोनों को फिर से शुरू करें।