Reminiscence

dlname not found +1

고객 서버에 mod_jk를 설치...

내 서버와 테스트 서버에서는 아무런 문제 없이 설치가 되길래..
그냥 스크립트 만들어서 당직자한테 실행하라고 했는데..

새벽2시.. 에러난다는 전화..
컴파일을 아무리 해도 문제 발생... 확인해 보니 mod_jk.so 파일 생성이 안됨..
make시 에러는

Warning! dlname not found in /usr/local/apache/modules/mod_jk.la

라고 출력..
make install해도.. mod_jk.so파일이 없으므로, 당연 인스톨 안됨..

이럴때는 2가지 방법으로 해결.
1. tomcat.apache.org에 들어가서 jk_connector를 바이너리버전으로 다운로드
 > 이미 so파일로 되어 있으므로, 각 플랫폼에 맞는놈으로 다운받은뒤, mod_jk.so로 파일명 변경 후 apache의 module 폴더에 그대로 옮겨줌..

2. 난 죽어도 컴파일 해서 해야 겠다.
 > libtool의 버전 확인 필요.
 $ /usr/local/apache/build/libtool --version  ( Apache 경로는 각자 경로대로 )
 위와 같이 명령어 실행해서 출력되는 버전이 1.5.22 이면 정상 컴파일 가능하지만, 만약 1.5.20 이면..
 컴파일 안되고, 위와 같은 에러 출력함...
 $ rpm -qa | grep libtool 실행
 설치된 패키지가 1.5.22면 /usr/bin/libtool 의 버전이 1.5.22 이므로, /usr/local/apache/build/libtool을 지우고 심볼릭 링크 연결.
 $ rm -f /usr/local/apache/build/libtool
 $ ln -s /usr/bin/libtool /usr/local/apache/build/libtool
 이후 다시 make 실행하면 정상적으로 컴파일 가능.

설치는 다 되었는데.. 문제는 mod_jk.so를 연동했음에도 불구하고 소스가 출력되는 문제 발생...
아놔.. 사람 갖고 장난치나.. ;; -_-..;
결국은 내 실수로 삽질을 한 꼴이 되어버린...

문제 해결을 위해 다음과 같이 접근.

phpinfo();로 apache Handler 및 Module Load 상태 확인.
mod_jk.so가 보인다면, 모듈은 로드 된 것이므로, 설정 내용 확인.
설정 내용중 worker를 woker라고 오타 내진 않았는지.. 사소한 오타로 인해 안될 수 있으므로, 재 확인 필요.
properties 파일과 mod_jk.conf 파일을 따로 만들어서 Include 함..

== mod_jk.conf ==
LoadModule jk_module          modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /jsp-examples/*.jsp default
JkMount /servlets-examples/* default
JkMount /*.jsp default

Alias /jsp-examples "/usr/local/tomcat/webapps/examples/jsp"
<Directory "/usr/local/tomcat/webapps/examples/jsp">
        Options Indexes +FollowSymLinks
        AllowOverride None
        Allow From all
</Directory>

Alias /servlets-examples "/usr/local/tomcat/webapps/examples/servlets"
<Directory "/usr/local/tomcat/webapps/examples/servlets">
        Options Indexes +FollowSymLinks
        AllowOverride None
        Allow from all
</Directory>

== worker.properties ==
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/local/java

worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13

파일 생성이 완료되면, httpd.conf를 열어 include함..
> Include conf/mod_jk.conf

VirtualHost 설정을 한 경우에는 해당 VirtualHost 안에 JkMount 설정.
Ex)
<VirtualHost *:80>
DocumentRoot /usr/local/tomcat/webapps/ROOT/
ServerName test.lovetonight.net
JkMount /*.jsp ajp13
JkMount /webapps/*.jsp ajp13
JkMount /ROOT/* ajp13
</VirtualHost>

위와 같이 했는데도 안된다면....
역시 방법은 구글링뿐..

5시간 삽질 종료.. 아흐..

신고

'Linux > Apache' 카테고리의 다른 글

mod_jk 컴파일 에러 처리... -_-  (0) 2009.04.11
apache - Suexec 와 Cgi 파일간의 관  (0) 2006.11.13
[Kisa] Mod_Security Manual  (0) 2006.10.09

댓글 0개가 달렸습니다.