หลังจากนั้นสองวันเต็มของ "การวิจัย" (อ่าน: โผงหัวของฉันกับแป้นพิมพ์ของฉัน) และคำสาปแช่งที่เอกสาร TeamCity / MSDN / Tomcat เช่นเดียวกับผี IIS ผูกผมได้มาด้วยคำตอบให้กับปัญหาที่น่างงมาก: วิธีสามารถ ฉันเปลี่ยนที่อยู่ IP และหมายเลขพอร์ตของ TeamCity บนเซิร์ฟเวอร์หลาย homed ที่ใช้ Windows Server 2008 รวมถึง IIS 7 ซึ่งให้บริการตามวัตถุประสงค์ที่จำเป็นหรือไม่ .
ก่อนอื่นบิตของพื้นหลัง เซิร์ฟเวอร์การสร้างของเรากำลังเรียกใช้ Windows Server 2008 โดยมีที่อยู่ IP สองแห่ง (192.168.1.30 และ 192.168.1.31) ใน NIC เดียว ฉันได้กำหนดค่า IIS ให้เชื่อมโยงไซต์หนึ่งไซต์เท่านั้นกับ 192.168.1.30 อย่างชัดเจนบนพอร์ต 80 ณ จุดนี้ฉันคิดว่า 192.168.1.31 เปิดกว้างและพร้อมที่จะใช้สำหรับ TeamCity ... ไม่มาก
ความรำคาญครั้งแรก: เมื่อติดตั้ง TeamCity มันจะไม่สนใจความจริงที่ว่ามีที่อยู่ IP หลายแห่งที่เชื่อมโยงกับเซิร์ฟเวอร์นี้เพื่อถามเฉพาะพอร์ตที่ควรผูกไว้ สำหรับซอฟต์แวร์เกรดเซิร์ฟเวอร์นี่เป็นเรื่องที่ค่อนข้างแปลกใจ
ความรำคาญครั้งที่สอง: ค่าเริ่มต้นของ TeamCity ไปที่พอร์ต 8080 (wha ??) เนื่องจากความรำคาญครั้งแรกการเลือกพอร์ตค่อนข้างคลุมเครือ: TeamCity จะเชื่อมโยงกับพอร์ต 8080 บนที่อยู่ IP ทั้งสองหรือไม่ การเปลี่ยนการเลือกพอร์ตเป็น 80 จะทำให้เกิดการเตือนว่าบริการอื่นถูกผูกไว้กับพอร์ต 80 แล้วอืม IIS ควรเชื่อมโยงกับพอร์ต 80 ใน 192.168.1.30 เท่านั้น ไม่มีอะไรควรผูกมัดกับ 192.168.1.31 เห็นได้ชัดว่า TeamCity กำลังแข่งขันกับ IIS บน 192.168.1.30
เสร็จสิ้นการติดตั้ง TeamCity หลังจากเลือกพอร์ต 80 และไม่สนใจคำเตือนการเชื่อมฉันเปิด "C: \ TeamCity \ server.xml" Sidenote: "C: \ TeamCity \" เป็นไดเรกทอรีการติดตั้งเริ่มต้นสำหรับ TeamCity ในขณะที่ "C: \ Users \ .BuildServer" เป็นไดเรกทอรีข้อมูลเริ่มต้น อย่างไรก็ตาม "server.xml" เป็นไฟล์กำหนดค่าที่คุณสามารถตั้งค่าต่างๆเช่นพอร์ตและที่อยู่ IP ของเว็บอินเตอร์เฟสของ TeamCity หลังจากการวิจัยเล็กน้อยฉันได้รับการกำหนดค่าสำหรับผูกที่อยู่ IP 192.168.1.31 ที่พอร์ต 80:
มองหาอย่างใดอย่างหนึ่ง
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
หรือ
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
ขึ้นอยู่กับพอร์ตที่คุณเลือกระหว่างการติดตั้ง เปลี่ยนเป็น ( หมายเหตุ: เปลี่ยนที่อยู่ IP! )
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
address="192.168.1.31" />
ควรจะง่ายอย่างนั้นใช่ไหม ... การรีสตาร์ทเว็บเซิร์ฟเวอร์ของ TeamCity (ผ่านทาง Windows 'Services Manager) ไม่ได้ผลอะไรกับ 192.168.1.31 ฮึ.
ปรากฎว่าแม้ว่า IIS ของไซต์เดียวและไซต์เดียวเท่านั้นที่ถูกผูกไว้กับ 192.168.1.30 อย่างชัดเจนบนพอร์ต 80 แต่ IIS ยังคงฟังที่อยู่IP ทั้งหมด แน่นอนว่านี่เป็นการสลัดเว็บเซิร์ฟเวอร์ (Tomcat) ของ TeamCity ซึ่งหยุดก่อนที่จะออนไลน์ หลังจากเริ่มต้น Tomcat ด้วยตนเองจากบรรทัดคำสั่งเพื่อแยกข้อผิดพลาด stdout และการวิจัยมากขึ้นฉันเกิดขึ้นกับอัญมณีเล็ก ๆ นี้จาก StackOverflow: ฉันจะควบคุมที่อยู่ IP ใดของ IIS7 ได้อย่างไร
ดังนั้นจากบรรทัดคำสั่งของผู้ดูแลระบบที่ฉันเรียกใช้ ( หมายเหตุ: อีกครั้งเปลี่ยนที่อยู่ IP เวลานี้เป็นที่อยู่ IP ที่คุณต้องการให้ IIS ถูกผูกไว้ )
netsh http เพิ่ม iplisten ipaddress = 192.168.1.30
ตอนนี้ฉันรีสตาร์ทเว็บเซิร์ฟเวอร์ของ TeamCity และ voila แล้วก็ใช้งานได้ !! ฉันสามารถเรียกดู 192.168.1.31 โดยไม่ต้องระบุหมายเลขพอร์ตและเว็บอินเตอร์เฟสของ TeamCity จะปรากฏขึ้น การตรวจสอบสติอย่างรวดเร็วแสดงให้เห็นว่า IIS ยังคงเชื่อมโยงกับ 192.168.1.30 อย่างถูกต้อง ทั้งหมดเป็นอย่างดี.
ขออภัยสำหรับการโพสต์ที่ยาวนานเช่นการแก้ไขที่ง่าย ฉันหวังว่าสิ่งนี้จะช่วยคนอื่นได้เพราะมันจะช่วยให้ฉันประหยัดเวลาได้มากขึ้น
แก้ไข:หลังจากใช้ TeamCity ได้พักหนึ่งฉันสังเกตว่า Build Agent ที่ติดตั้งกับ TeamCity นั้นไม่ได้รับการจดจำอย่างถูกต้อง ในการแก้ไขปัญหานี้ฉันต้องระบุ Build Agent ไปที่ URL ใหม่สำหรับ TeamCity การเปลี่ยนแปลงการกำหนดค่านี้กระทำใน "C: \ TeamCity \ buildAgent \ conf \ buildAgent.properties" อีกครั้งนี่คือเส้นทางสำหรับการติดตั้ง TeamCity เริ่มต้นและอาจแตกต่างกันไปขึ้นอยู่กับวิธีที่คุณปรับแต่งการติดตั้ง TeamCity
ภายใน "buildAgent.properties" ตรวจสอบให้แน่ใจว่า "serverUrl" ชี้ไปที่ URL ของ TeamCity ใหม่ ในกรณีของฉันฉันอัปเดตเป็น:
ServerUrl = http \: //192.168.1.31
หลังจากทำการเปลี่ยนแปลงนี้ให้รีสตาร์ททั้ง TeamCity Web Server และ TeamCity Build Agent