Bagaimana cara mendapatkan kucing jantan untuk mengikat ke alamat ipv4?

32

Saya baru-baru ini menginstal kucing jantan melalui skrip instalasi dari komunitas typo3 apache solr dan menghabiskan 3 hari terakhir mencoba mencari tahu mengapa itu tidak akan bekerja sampai kebetulan saya perhatikan bahwa ketika saya menanyakan proses mendengarkan pada port melalui "lsof -i ", itu terikat pada protokol ipv6. Saya telah googled di mana-mana dan kebanyakan mengatakan bahwa pengaturan alamat ke 0.0.0.0 pada konektor tomcat menyelesaikan masalah ini, yang lain mengatakan pengaturan JAVA_OPTS = "- Djava.net.preferIPv4Stack = true" ; Saya sudah mencoba yang pertama tidak bekerja tetapi yang kedua saya tidak yakin di mana harus meletakkannya. Salah satu solusi yang saya baca di suatu tempat menyarankan untuk meletakkannya di setenv.shtapi saya tidak dapat menemukan file ini di instalasi kucing jantan saya. Saya sangat menghargai bantuan apa pun saat ini mengenai hal ini. Versi tomcat adalah 6.x dan OS adalah ubuntu 11.10. Terima kasih

Dark Star1
sumber
1
Id / port apa yang didengarkan, melalui lsof -i?
Menjadi
@becomingwisest 8080.
Dark Star1
Anda benar - file setenv.sh tidak ada di luar kotak. Anda perlu membuat file setenv.sh di direktori tempat penyimpanan CATALINA_BASE atau CATALINA_HOME Anda. Skrip startup memeriksa apakah Anda membuat file, apakah Anda memang membuat file kustomisasi (setenv.sh) - skrip startup memanggilnya, jika tidak abaikan saja, dan lanjutkan.
nevenc

Jawaban:

28

Banyak yang menyarankan memperbarui catalina.shskrip startup. Ya, solusi itu akan berhasil, tetapi catalina.shskrip tidak dimaksudkan untuk dikustomisasi / diperbarui. Semua perubahan harus masuk ke skrip penyesuaian, yaitu setenv.sh.

CATATAN: TOMCAT_HOME/bin/setenv.shtidak ada secara default, Anda harus membuatnya. Periksa catalina.shskrip dan Anda akan melihat skrip startup memeriksa apakah setenv.shada, dan mengeksekusi jika ada.

Jadi, saya sarankan Anda membuat TOMCAT_HOME/bin/setenv.shskrip baru dengan satu baris:

JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true "
nevenc
sumber
3
Saya juga akan menggunakan CATALINA_OPTS sebagai ganti JAVA_OPTS, terutama jika Anda memiliki opsi JVM lain yang ingin Anda sampaikan ke JVM pada startup Tomcat. Jika Anda menggunakan JAVA_OPTS, opsi yang sama akan diteruskan ke Tomcat shutdown, mungkin bukan yang Anda inginkan / harapkan. Gunakan CATALINA_OPTS sebagai gantinya :)
nevenc
Saya memilih ini sebagai jawabannya sekarang karena kebanyakan orang yang memiliki masalah ini hari ini kemungkinan besar akan menggunakan versi terbaru kucing jantan.
Dark Star1
27

Ok akhirnya saya pecahkan. Saya diarahkan untuk mencoba ini dan solusi Henk. Tak satu pun dari yang tampaknya bekerja dengan server virtual jarak jauh. Saya menduga fakta bahwa karena saya menggunakan ruang kernel bersama sehingga penyedia mencegahnya. Dalam kasus apa pun saya menambahkan: JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresseske skrip startup catalina.sh dan yang tampaknya telah memperbaiki masalah mengikat kucing jantan ke ipv6.

Dark Star1
sumber
3
Jadi Anda menggunakan VPS dengan kernel bersama ... Doh!
Henk
Ini sepertinya tidak berfungsi lagi dengan tomcat 8.
Ortomala Lokni
1
Dengan tomcat 8, opsi ini tidak berfungsi untuk saya, tetapi jawaban nevenc berhasil.
Edenshaw
4

Sintaks yang benar untuk memodifikasi catalina.sh adalah:

JAVA_OPTS=" $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true "
yglodt
sumber
3

Jika Anda menggunakan penginstal ini: " Apache Solr for TYPO3 ", Anda dapat mengubah alamat dalam fileserver.xml . Titik default ke localhost, jadi cari 127.0.0.1 dan ubah ke alamat IPv4 yang Anda inginkan. Jangan lupa untuk me-restart Tomcat6 agar perubahan diterapkan.

PEMBARUAN, 20120521

Lihat komentar saya di bawah ini tentang cara menonaktifkan IPv6 di Ubuntu 11.10.

Saya telah berhasil menguji ini pada Virtualbox-VM di Mac saya. Alamat untuk port konektor 8080 telah diubah dari 127.0.0.1 menjadi 0.0.0.0 in server.xml.

Kemudian menonaktifkan IPv6 membuat "tcp6" untuk pergi, jadi itu diikat ke alamat IPv4-only.

Sebelum / dengan IPv6 diaktifkan:

# netstat -anp | grep 8080   
tcp6       0      0 :::8080                 :::*                    LISTEN      1972/java

Setelah / IPv6 dinonaktifkan:

# netstat -anp | grep 8080   
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      2045/java
Henk
sumber
Mencoba ini juga dan itu tidak berhasil netstat menunjukkan bahwa meskipun proses terikat ke alamat ipv4 itu masih mencari ipv6 ala pengembalian ini: tcp6 0 0 XXXX: 8080 ::: * LISTEN. yang menurut saya aneh tetapi masalahnya juga telah direplikasi pada vm teman saya yang di-host di mac.
Dark Star1
Dan ketika IPv6 dinonaktifkan? Berikut ini adalah panduan untuk Ubuntu 11.10: pario.no/2011/12/09/disable-ipv6-on-ubuntu-11-10
Henk
0

Bersamaan dengan jawaban lain menggunakan setenv.sh dan CATALINA_OPTS ...

Menggunakan Tomcat SSL dengan APR, satu-satunya cara saya bisa mengikat Tomcat ke ipv4 adalah menambahkan ini ke konektor config:

address="0.0.0.0"

server.xml terlihat seperti ini:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150"
               SSLEnabled="true"
               scheme="https"
               compression="off"
               connectionTimeout="1190"
               address="0.0.0.0"
               >
comfytoday
sumber
-2

Navigasi Debian 8 untuk menggunakan editor favorit Anda di / etc / default / grub ; cari bagian GRUB_CMDLINE_LINUX_DEFAULT = "quiet" ** dengan kemudian tambahkan ipv6.disable = 1 , seperti terlihat di bawah

GRUB_CMDLINE_LINUX_DEFAULT = "ipv6.disable = 1 quiet"

Simpan dan keluar. Dalam direktori yang sama gunakan editor favorit Anda di / etc / default / tomcat8 lalu cari bagian dengan JAVA_OPTS = yang akan dikomentari, tambahkan berikut ini di bawah baris itu. JAVA_OPTS = "$ JAVA_OPTS -Djava.net.preferIPv4Stack = true -Djava.net.preferIPv4Addresses = true"

Simpan dan keluar

Pada prompt perintah ketik update-grub , jika Anda telah menggunakan sudo dengan sudo, kemudian restart tomcat8 layanan tomcat8 tomcat8 restart

Anda harus menggunakan IPv4 sekarang.

Silakan di posting mendatang termasuk path lengkap dan nama file Terima kasih

Keamanan Centric Inc.
sumber