Não mod_jk.so gerado ao compilar o conector do tomcat

2

Quando eu tento compilar o conector do tomcat da fonte, tudo parece bem, exceto que nenhum arquivo mod_jk.so é criado.

Versões de software: RHEL6 x86_64
httpd-2.4.3
tomcat-connector 1.2.37

Comandos:     %código% A única mensagem de aviso durante a marca é:
Aviso! dlname não encontrado em /usr/local/tomcat-connectors-1.2.37-src/native/apache-2.0/mod_jk.la.

Alguém tem alguma sugestão sobre como obter o arquivo mod_jk.so para ser gerado?

    
por user1171848 11.12.2012 / 17:19

2 respostas

0

Eu finalmente consegui isso funcionar. Acontece que eu tive problemas maiores do que apenas o conector do tomcat.

Primeiro, há várias coisas que eu precisava fazer para compilar o apache com o Linux de 64 bits. Eu estava recebendo erros de compilação, como:

relocation R_X86_64_32 against '.rodata' can not be used when making a shared object; recompile with -fPIC 

Para corrigir isso, o OpenSSL precisava ter uma opção especial de configuração:

./configure -fPIC

Então eu recompilei o OpenSSL, que permitia ao Apache compilar o módulo ssl corretamente. Então eu recebi outro erro durante o apache make install :

libtool: install: error: relink 'libaprutil-1.la' with the above command before installing it

Para corrigir isso, as classes APR precisavam de uma opção de configuração especial durante a compilação:

CC="gcc -m64" ./configure --prefix=/usr/local/apr
CC="gcc -m64" ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

Compilar isso separadamente significava que eu precisava usar a opção --with-apr em vez de --with-included-apr na compilação do Apache:

./configure ... --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

Eu também estava usando uma estranha opção de configuração durante a configuração do Apache:

--with-apxs2=...

que deveria ter sido:

--with-apxs=...

Depois de corrigir todas essas coisas e recompilar o apache, tentei novamente com a compilação do conector do tomcat. O arquivo mod_jk.so é gerado corretamente.

    
por 13.12.2012 / 15:44
0

A informação do sistema

# uname -r
2.6.32-358.14.1.el6.x86_64

# cat /etc/redhat-release
CentOS release 6.4 (Final)

# rpm -qa | grep httpd
httpd-devel-2.2.15-28.el6.centos.x86_64
httpd-2.2.15-28.el6.centos.x86_64
httpd-tools-2.2.15-28.el6.centos.x86_64

Vou sugerir que você construa a partir do próprio módulo fonte

# cd /root/
# wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.37-src.tar.gz

# tar -xzf tomcat-connectors-1.2.37-src.tar.gz
# cd tomcat-connectors-1.2.37-src/native/
# ./configure --prefix=/opt/ --with-apxs=/usr/sbin/apxs
# make
# file apache-2.0/mod_jk.so
apache-2.0/mod_jk.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped

# cp apache-2.0/mod_jk.so /usr/lib64/httpd/modules/
# echo "LoadModule jk_module modules/mod_jk.so" > /etc/httpd/conf.d/mod_jk.conf

# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

# apachectl -t -D DUMP_MODULES | grep jk
Syntax OK
 jk_module (shared)

Portanto, não há necessidade de instalar o apache / openssl / apr / apr-util a partir do código-fonte. Se você quiser atualizar os pacotes - seria o inferno

    
por 07.08.2013 / 18:07