Saya ingin mengakses Tomcat melalui server-Apache menggunakan konektor. Saya tetap berpegang pada dokumentasi: http://tomcat.apache.org/connectors-doc/generic_howto/quick.html Saya hanya memodifikasinya sedikit agar sesuai dengan struktur direktori yang digunakan pada sistem Debian- (Squeeze) -System saya.
Jadi saya menambahkan yang berikut ini ke /etc/apache2/httpd.conf:
# Load mod_jk module
# Update this path to match your modules location
#LoadModule jk_module libexec/mod_jk.so
# Declare the module for <IfModule directive> (remove this line on Apache 2.x)
#AddModule mod_jk.c
# Where to find workers.properties
# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
JkWorkersFile /etc/apache2/workers.properties
# Where to put jk shared memory
# Update this path to match your local state directory or logs directory
JkShmFile /var/log/apache2/mod_jk.shm
# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
JkLogFile /var/log/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# Send everything for context /examples to worker named worker1 (ajp13)
JkMount /tomcat7/* worker1
Saya berkomentar keluar memuat modul, karena itu sudah terjadi, setelah saya menginstal mod_jk melalui sistem paket (libapache2-mod-jk).
Properti pekerja saya terlihat seperti ini:
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
Tomcat 7 diinstal langsung dari arsip dari Apache, karena itu bukan paket di Squeeze. Tomcat 7 berjalan dan dapat dijangkau di bawah portnya sendiri (8180, untuk tidak bertabrakan dengan tomcat6 dari sistem paket). Sejauh yang saya mengerti, saya harus melihat sekarang situs tomcat dengan http: // host / tomcat7 / . Tapi saya malah mendapat 404. Apa yang salah?
Setelah quanta mengisyaratkan untuk mengatur level log ke debug (terima kasih) saya melakukan itu dan menemukan pesan kesalahan berikut di mod_jk.log: 'jk_map_to_storage :: mod_jk.c (3585): hilang peta uri untuk 176.9.9.55:/tomcat7 / ' Saya mencari di Google untuk itu dan menemukan http://old.nabble.com/mod_jk%2C-missing-uri-map-td23984359.html
Jadi opsi yang diatur dalam httpd.conf tidak digunakan di VirtualHosts. Saya menambahkan 'JkMountCopy On' ke VirtualHost - dan mendapatkan Tomcat 404 (bukan httpd 404). Masalahnya di sini, bahwa ia mencoba mengakses URI yang sama persis terpasang, jadi dalam kasus saya / tomcat7. Saya menggunakan nama webapp sebagai mount dan semuanya baik-baik saja untuk saya.
sumber
JkLogLevel
kedebug
dan memuat kembali / restart Apache? Coba ini:http://host/tomcat7/xx
. Poskan seluruh kontenserver.xml
.Saya memiliki masalah yang sama. Solusinya adalah berubah
JkMount /tomcat7* worker1
menjadiJkMount /your-servlet-app* worker1
. Anda dapat memiliki sebanyak yangJkMount
Anda inginkan.Misalnya, setelah menambahkan
JkMount /manager* worker1
, Anda akan dapat mengakseshttp://host/manager/html
Saya menemukan masalah ini setelah saya mencoba AJP dan http. Saya memiliki log akses berikut di blog saya
/var/log/tomcat7/localhost_access_log.txt
Dua baris log pertama dihasilkan saat saya menggunakan AJP. Tiga yang terakhir dihasilkan ketika saya menggunakan http untuk secara langsung mengakses kucing jantan. Jadi apache meneruskan seluruh URL ke kucing jantan, alih-alih menghapus awalan jkmount.
sumber
Gunakan mod_proxy_ajp atau mod_proxy_http jika Anda bisa: http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html
sumber