Ubah alamat IP TeamCity dan nomor port pada Windows Server 2008 multi-homed yang menjalankan IIS 7

20

Setelah dua hari penuh "penelitian" (baca: membenturkan kepalaku ke keyboard saya) dan mengutuk dokumentasi TeamCity / MSDN / Tomcat serta binding IIS phantom, saya telah menemukan jawaban untuk masalah yang sangat membingungkan: Bagaimana bisa Saya mengubah alamat IP dan nomor port TeamCity pada server multi-homed yang menjalankan Windows Server 2008 serta IIS 7 yang melayani tujuan yang diperlukan? .

Pertama, sedikit latar belakang. Server build kami menjalankan Windows Server 2008 dengan dua alamat IP (192.168.1.30 dan 192.168.1.31) pada satu NIC. Saya telah mengkonfigurasi IIS untuk secara eksplisit mengikat satu-satunya situsnya ke 192.168.1.30 pada port 80. Pada titik ini saya berpikir bahwa 192.168.1.31 terbuka lebar dan siap digunakan untuk TeamCity ... tidak cukup.

Gangguan pertama: ketika menginstal TeamCity, itu sepenuhnya mengabaikan fakta bahwa ada beberapa alamat IP yang terkait dengan server ini hanya meminta port mana yang harus diikat. Untuk perangkat lunak tingkat server, ini cukup mengejutkan.

Gangguan kedua: TeamCity default ke port 8080 (apa ??). Karena gangguan pertama, pemilihan port agak ambigu: apakah TeamCity akan mengikat ke port 8080 di kedua alamat IP? Mengubah pemilihan port menjadi 80 menghasilkan peringatan bahwa layanan lain sudah terikat ke port 80. Hmm, IIS hanya terikat pada port 80 pada 192.168.1.30; tidak ada yang harus terikat pada 192.168.1.31. Jelas TeamCity bersaing dengan IIS pada 192.168.1.30.

Menyelesaikan instalasi TeamCity, setelah memilih port 80 dan mengabaikan peringatan yang mengikat, saya membuka "C: \ TeamCity \ server.xml". Sidenote: "C: \ TeamCity \" adalah direktori instalasi default untuk TeamCity sementara "C: \ Users \ .BuildServer" adalah direktori data default . Bagaimanapun, "server.xml" adalah file konfigurasi tempat Anda dapat mengatur hal-hal seperti port dan alamat IP dari antarmuka web TeamCity. Setelah sedikit riset saya menemukan konfigurasi untuk mengikat alamat IP 192.168.1.31 pada port 80:

Cari juga

<Connector
    port="8080"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

atau

<Connector
    port="80"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

tergantung pada port yang Anda pilih saat instalasi. Ubah salah satu ke ( catatan: ubah alamat IP! )

<Connector
    port="80"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443"
    address="192.168.1.31" />

Seharusnya semudah itu, kan ... benar? Ya, memulai kembali Server Web TeamCity (melalui Windows Services Manager) tidak menghasilkan apa-apa di 192.168.1.31. Ugh.

Ternyata meskipun satu-satunya situs IIS telah secara eksplisit terikat pada 192.168.1.30 pada port 80, IIS masih mendengarkan semua alamat IP. Ini, tentu saja, membuang Server Web TeamCity (Tomcat) yang berhenti bahkan sebelum online. Setelah secara manual memulai Tomcat dari command-line untuk membedah kesalahan stdout-nya dan penelitian lebih lanjut, saya kebetulan menemukan permata kecil ini dari StackOverflow: Bagaimana saya bisa mengontrol alamat IP yang digunakan IIS7?

Jadi, dari baris perintah administratif yang saya jalankan ( catatan: sekali lagi, ubah alamat IP! Kali ini ke alamat IP yang Anda inginkan IIS terikat )

http netsh add iplisten ipaddress = 192.168.1.30

Sekarang saya restart Server Web TeamCity dan voila, berhasil !! Saya dapat menjelajah ke 192.168.1.31 tanpa harus menentukan nomor port dan antarmuka web TeamCity muncul. Pemeriksaan kewarasan cepat menunjukkan bahwa IIS masih terikat dengan benar ke 192.168.1.30. Semuanya baik-baik saja.

Maaf untuk posting lama untuk perbaikan yang sederhana. Saya harap ini membantu orang lain karena itu pasti akan menyelamatkan saya berjam-jam dari kejengkelan.


Sunting: Setelah menggunakan TeamCity untuk sementara waktu, saya perhatikan bahwa Build Agent yang telah diinstal dengan TeamCity tidak dikenali dengan benar. Untuk memperbaikinya, saya harus mengarahkan Build Agent ke URL baru untuk TeamCity. Perubahan konfigurasi ini dilakukan dalam "C: \ TeamCity \ buildAgent \ conf \ buildAgent.properties". Sekali lagi, ini adalah jalur untuk pemasangan default TeamCity dan mungkin berbeda tergantung pada bagaimana Anda menyesuaikan instalasi TeamCity Anda.

Di dalam "buildAgent.properties" pastikan "serverUrl" menunjuk ke URL TeamCity baru. Dalam kasus saya, saya memperbaruinya ke:

serverUrl = http \: //192.168.1.31

Setelah melakukan perubahan ini, restart kedua Server Web TeamCity dan Agen Build TeamCity.

Brad B.
sumber
1
Serius ini luar biasa. Inilah yang saya dan salah satu admin kami akhirnya menemukan sendiri (yang mengisap). Terima kasih telah mengirim artikel yang bagus.
Ryan Montgomery
5
Anda mungkin ingin memecah pertanyaan dan jawaban meskipun ...
Ryan Montgomery

Jawaban:

10

Jawaban adalah bagian dari "pertanyaan" asli di atas.

Brad B.
sumber
2
+1 untuk menyelamatkan saya beberapa jam!
Tim Long