[웹서버] solaris+apache+tomcat+java
<!————————————————————–>
<!– –>
<!– Solaris 2.6+Java+Apache+Tomcat 컴파일방법 메뉴얼 –>
<!– –>
<!– –>
<!– Official distribution site : http://jkkang.net/ –>
<!– Technical Info : jkkang65 at hanmail.net
–>
<!– –>
<!– Updated in October 15, 2001 –>
<!– Written by Kang Jul Ki –>
<!– –>
<!– –>
<!– Powered by http://jkkang.net/ since 1996 –>
<!– –>
<!————————————————————–>
본 문서는 Solaris 환경에서 Apache와 Tomcat을 연동(컴파일)하기 위한 한글 문서입니다.
그리고, 마지막에서는 mod_jserv.so, mod_jk.so 을 직접 컴파일해서 생성을 시킬것입니다.
OS: Solaris 2.6 or higher
Apache: 1.3.20 or higher
Java: 1.2.2 or higher
gcc: 2.95.2 or higher
Jakarta-Tomcat: 3.2.3 or higher
perl: 5.005 or higher
위에서 higher란 말은 그 이상에서도 컴파일이 될수 있음을 의미합니다. 옆에 있는
버전은 제가 테스트한 환경을 의미합니다. 각각의 디렉토리및 경로는 저의 경우를
예로 들은 것이므로 자신들의 환경에 맞추어서 약간씩 변경하시기 바랍니다.
1. Apache 1.3.20 인스톨/컴파일
root directory: /swlab/backup2/seluser/apache
Makefile 생성
# ./configure –prefix=/swlab/backup2/seluser/apache –with-perl=/usr/local/bin/perl
–enable-module=so
# make
# make install
2. .cshrc 설정 (환경변수) – Shell은 cshell을 사용한다.
setenv CLASSPATH /usr/local/java2/java1.2/lib/tools.jar:.
setenv JAVA_HOME /usr/local/java2/java1.2
setenv TOMCAT_HOME /swlab/backup2/seluser/apache/tomcat
만약 사용자가 ksh 을 사용한다면 다음과 같이 .profile에 넣어주면 된다.
export CLASSPATH=/usr/local/java2/java1.2/lib/tools.jar:.
export JAVA_HOME=/usr/local/java2/java1.2
export TOMCAT_HOME=/swlab/backup2/seluser/apache/tomcat
3. $(TOMCAT_HOME) 디렉토리에 Tomcat 관련 파일 다운로드
jakarta-tomcat-3.2.3-src.tar.gz
jakarta-ant-1.4.1-src.tar.gz
jakarta-servletapi-3.2.3-src.tar.gz
4. jakarta-tomcat-3.2.3-src.tar.gz 인스톨
# gzip -d jakarta-tomcat-3.2.3-src.tar.gz
# tar xvf jakarta-tomcat-3.2.3-src.tar
# mv jakarta-tomcat-3.2.3-src jakarta-tomcat
5. jakarta-ant-1.4.1-src.tar.gz 인스톨
# gzip -d jakarta-ant-1.4.1-src.tar.gz
# tar xvf jakarta-ant-1.4.1-src.tar
# mv jakarta-ant-1.4.1-src jakarta-ant
6. jakarta-servletapi-3.2.3-src.tar.gz 인스톨
# gzip -d jakarta-servletapi-3.2.3-src.tar.gz
# tar xvf jakarta-servletapi-3.2.3-src.tar
# mv jakarta-servletapi-3.2.3-src jakarta-servletapi
# ls -l
drwxr-xr-x 9 seluser seluser 512 Oct 13 19:06 jakarta-ant/
drwxr-xr-x 4 seluser seluser 512 Oct 13 19:16 jakarta-servletapi/
drwxr-xr-x 3 seluser seluser 512 Oct 13 18:53 jakarta-tomcat/
위와 같은 디렉토리가 생기면 된다.
7. jakarta-ant 컴파일
# cd $TOMCAT_HOME/jakarta-ant
# cd lib
# ls -l
-rw-r–r– 1 seluser seluser 196399 Oct 11 22:58 crimson.jar
-rw-r–r– 1 seluser seluser 33323 Oct 11 22:58 jaxp.jar
drwxr-xr-x 2 seluser seluser 512 Oct 11 22:58 optional/
컴파일 하고자 한다면,
# cd $TOMCAT_HOME/jakarta-ant
# chmod 755 build.sh
# ./build.sh
컴파일 완료후,
# cd $TOMCAT_HOME/jakarta-ant
drwxr-xr-x 4 seluser seluser 512 Oct 13 19:02 bootstrap/
drwxr-xr-x 4 seluser seluser 512 Oct 13 19:01 build/
drwxr-xr-x 4 seluser seluser 512 Oct 13 19:03 dist/
디렉토리 생성됨
ant.jar 생성 확인
# find . -name ant.jar -ls
14493 416 -rw-r–r– 1 seluser seluser 415002 Oct 13 19:03 ./dist/lib/ant.jar
15155 416 -rw-r–r– 1 seluser seluser 415010 Oct 13 19:10 ./build/lib/ant.jar
15172 416 -rw-r–r– 1 seluser seluser 415010 Oct 13 19:10 ./bootstrap/lib/ant.jar
8. jakarta-servletapi 컴파일
# cd $TOMCAT_HOME/jakarta-servletapi
# chmod 755 build.sh
# ./build.sh dist
if 에러발생 (build.sh 의 cp=../jakarta-ant/lib/ant.jar:$JAVA_HOME/lib/tools.jar 잘못
설정됨-수정필요)
다음과 같이 복사하면 수정할 필요 없음
# cp $TOMCAT_HOME/jakarta-ant/dist/lib/ant.jar $TOMCAT_HOME/jakarta-ant/lib
# cd $TOMCAT_HOME/jakarta-ant/lib
# ls -l
-rw-r–r– 1 seluser seluser 415002 Oct 13 19:23 ant.jar
-rw-r–r– 1 seluser seluser 196399 Oct 11 22:58 crimson.jar
-rw-r–r– 1 seluser seluser 33323 Oct 11 22:58 jaxp.jar
drwxr-xr-x 2 seluser seluser 512 Oct 11 22:58 optional/
if 에러발생
/swlab/backup2/seluser/apache/tomcat/jakarta-servletapi/build.xml:45: Javadoc fa
iled: java.io.IOException: /swlab/backup2/seluser/apache/tomcat/jakarta-ant/bin/
antRun: not found
/bin/antRun 을 못찾기 때문에 발생
$TOMCAT_HOME/jakarta-ant/bin 디렉토리가 없다. ./dist/bin 디렉토리가 있을뿐.
다음과 같이 Symbolic Link로 처리한다.(디렉토리를 만들어서 복사할수도 있지만, 숙련된
관리자라면
디스크 공간도 아낄�Y…)
# cd $TOMCAT_HOME/jakarta-ant
# ln -s ./dist/bin ./bin
servlet.jar 생성확인
# cd $TOMCAT_HOME/jakarta-servletapi/lib
# ls -l
-rw-r–r– 1 seluser seluser 40813 Jul 18 01:21 servlet.jar
9. jakarta-tomcat 컴파일
# cd $TOMCAT_HOME
# ls -l
drwxr-xr-x 3 seluser seluser 512 Oct 13 19:24 build/
drwxr-xr-x 3 seluser seluser 512 Oct 13 19:24 dist/
drwxr-xr-x 8 seluser seluser 512 Oct 13 19:28 jakarta-ant/
drwxr-xr-x 4 seluser seluser 512 Oct 13 19:16 jakarta-servletapi/
drwxr-xr-x 3 seluser seluser 512 Oct 13 18:53 jakarta-tomcat/
# cd $TOMCAT_HOME/jakarta-tomcat
# chmod 755 build.sh (chmod가 설정이 않되어 있으면)
# ./build.sh
if 에러발생
/swlab/backup2/seluser/apache/tomcat/jakarta-tomcat/build.xml:58: Could not find
file /swlab/backup2/seluser/apache/tomcat/jaxp-1.0.1/jaxp.jar to copy.
# cd $TOMCAT_HOME
# find . -name jaxp.jar -ls
13792 33 -rw-r–r– 1 seluser seluser 33323 Oct 11 22:58
./jakarta-ant/lib/jaxp.jar
# mkdir jaxp-1.0.1
# ls -l
drwxr-xr-x 4 seluser seluser 512 Oct 13 19:35 build/
drwxr-xr-x 3 seluser seluser 512 Oct 13 19:24 dist/
drwxr-xr-x 8 seluser seluser 512 Oct 13 19:28 jakarta-ant/
drwxr-xr-x 4 seluser seluser 512 Oct 13 19:16 jakarta-servletapi/
drwxr-xr-x 3 seluser seluser 512 Oct 13 18:53 jakarta-tomcat/
drwxr-xr-x 2 seluser seluser 512 Oct 13 19:42 jaxp-1.0.1/
# cp $TOMCAT_HOME/jakarta-ant/lib/jaxp.jar $TOMCAT_HOME/jaxp-1.0.1
# cd $TOMCAT_HOME/jaxp-1.0.1
# ls -l
-rw-r–r– 1 seluser seluser 33323 Oct 13 19:44 jaxp.jar
다시한번,
# cd $TOMCAT_HOME/jakarta-tomcat
# ./build.sh
if 에러발생
/swlab/backup2/seluser/apache/tomcat/jakarta-tomcat/build.xml:60: Could not find
file /swlab/backup2/seluser/apache/tomcat/jaxp-1.0.1/parser.jar to copy
# cd $TOMCAT_HOME
# find . -name parser.jar -ls
없음.
여기서 parser.jar를 구해야 하는데, 방법은
http://jakarta.apache.org/builds/jakarta-ant/release/v1.3/src/ 에
가보면,
jakarta-ant-1.3-src.tar.gz 을 다운 받아서, 설치해보면,
# cd $TOMCAT_HOME/jakarta-ant-1.3/lib 214 ] ls -l
-rw-r–r– 1 seluser seluser 5537 Mar 2 2001 jaxp.jar
drwxr-xr-x 2 seluser seluser 512 Oct 13 19:51 optional/
-rw-r–r– 1 seluser seluser 136198 Mar 2 2001 parser.jar
와 같이 파일이 있다. parser.jar을 $TOMCAT_HOME/jaxp-1.0.1 에 복사
# cd $TOMCAT_HOME
# cp $TOMCAT_HOME/jakarta-ant-1.3/lib/parser.jar $TOMCAT_HOME/jaxp-1.0.1
# cd $TOMCAT_HOME/jaxp-1.0.1
# ls -l
-rw-r–r– 1 seluser seluser 33323 Oct 13 19:44 jaxp.jar
-rw-r–r– 1 seluser seluser 136198 Oct 13 19:53 parser.jar
# cd $TOMCAT_HOME/jakarta-tomcat
# ./build.sh
에러가 발생한다.
이유는, .jar 파일 경로가 맞지 않기 때문에, 추가적으로 빼먹은 걸 설정해줘야 한다.
# cd $TOMCAT_HOME/jakarta-tomcat
# more build.sh
을 해보면 마지막에 다음 라인이 있다. 이부분에 몇가지 추가해 줘야 한다.
cp=../jakarta-ant/lib/ant.jar:../jakarta-servletapi/lib/servlet.jar:../jakarta-t
ools/moo.jar:../build/tomcat/classes:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dev
.jar 끝에,
../jaxp-1.0.1/jaxp.jar:./jaxp-1.0.1/parser.jar ../jakarta-ant/lib/crimson.jar 추가한당.
그럼 다음과 같이 된다(필요없는건 빼버리고, 나의 경험상)…
cp=../jakarta-ant/lib/ant.jar:../jakarta-servletapi/lib/servlet.jar:../build/tom
cat/classes:$JAVA_HOME/lib/tools.jar:../jaxp-1.0.1/jaxp.jar:../jaxp-1.0.1/parser
.jar:../jakarta-ant/lib/crimson.jar
그래도 에러가 발생하면, 의심가는 .jar 를 모조리 추가해준다. (진짜, 노가다임….
노가다작업의 높은 성공율은 나의 경험상 수많은 경험에서 온당…)
그리고 다시 실행
# ./build.sh
10. Tomcat Start/Shutdown
# cd $TOMCAT_HOME/build/tomcat
# ./bin/startup.sh
에러가 발생하면 (crimson.jar)을 다음과 같이 복사한다. 최종적으로 tomcat을 startup
할때, 다음과 같은 파일이 아래 위치에 있어야 한다.
# cd $TOMCAT_HOME/build/tomcat/lib
# ls -l
-rw-r–r– 1 seluser seluser 415002 Oct 13 19:35 ant.jar
-rw-r–r– 1 seluser seluser 196399 Oct 14 17:44 crimson.jar
-rw-r–r– 1 seluser seluser 33323 Oct 13 19:44 jaxp.jar
-rw-r–r– 1 seluser seluser 136198 Oct 13 19:55 parser.jar
-rw-r–r– 1 seluser seluser 40812 Oct 13 19:35 servlet.jar
drwxr-xr-x 3 seluser seluser 512 Oct 13 19:35 test/
# cp $TOMCAT_HOME/jakarta-ant/lib/crimson.jar $TOMCAT_HOME/build/tomcat/lib
정상적으로 tomcat이 실행이 되면
http://localhost:8080/ 해보면 Tomcat 실행 화면이 뜬다.
그래도 에러가 뜨면,
# vi ~/.cshrc
에서,
setenv TOMCAT_HOME /swlab/backup2/seluser/apache/tomcat/build/tomcat 이렇게 바꿔준다.
# source ~/.cshrc 하고 다시
# cd $TOMCAT_HOME
# ./bin/startup.sh
If 성공
ps -ef |grep java 해보면 뭐가 보일것이다.
shutdown 하는 방법은 다음과 같다.
# cd $TOMCAT_HOME/build/tomcat
# ./bin/shutdown.sh
/*************************************************
mod_jsev.so 를 만들어 내는 방법
**************************************************/
# vi ~/.cshrc
에서,
setenv TOMCAT_HOME /swlab/backup2/seluser/apache/tomcat 이렇게 다시 바꿔준다.
# source ./.cshrc
mod_jserv.so을 직접 컴파일하려면 다음과 같이 한다.
# cd $TOMCAT_HOME/jakarta-tomcat/src/native/apache/jserv
# apxs -c -o mod_jserv.so *.c
만일 apxs를 찾지 못한다면 아파치를 설치한 곳의 bin디렉토리에 있으므로
경로를 모두 써 주거나, .cshrc 파일을 편집해서 apxs의 경로를 써주면 된다. 그리고 다시
로그인을 하거나, # source .cshrc 을 하여야만 경로변경이 적용된다. apxs는 apache/bin
에 있다. apxs는 내부적으로 perl을 호출하기 때문에 서버에 반드시 perl이 설치되어 있어야
한다. perl의 경로는 Apache를 configure할때 –with-perl=/usr/local/bin/perl 과 같이
경로를 지정해줘야 한다.
아파치는 DSO를 지원하도록 컴파일되어야 mod_jserv.so을 동적으로 로드할 수 있다.
배포본에 포함된 것이라면 대부분 DSO를 지원하도록 되어 있으므로 문제가 없으나
직접 컴파일을 하는 경우라면 configure 실행시에 반드시 –enable-module=so 옵션을
주어야 한다.
If 다음과 같이 에러 발생하는 경우
apxs fails with apxs:Break: Command failed + with rc=255, it may have been damaged by +
mod_ssl.
(이부분 에러때문에 5시간 고생했당… 졸라 열받았던 부분…)
apache/bin/apxs 파일을 다음과 같이 편집한당.
my $CFG_LD_SHLIB = q(); # substituted via Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = q(); # substituted via Makefile.tmpl
my $CFG_LD_SHLIB = q(ld); # substituted via Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = q(-G); # substituted via Makefile.tmpl
And then,
# apxs -c -o mod_jserv.so *.c
If Success
cp mod_jserv.so apache/libexec 한당.
/*************************************************
mod_jk.so 를 만들어 내는 방법
이것은 mod_jserv.so의 대체버전이당.
**************************************************/
mod_jk.so을 직접 컴파일하려면 다음과 같이 한다. mod_jk.so는 mod_jserv.so를 대체하기 위한
다음버전이다.
# cd $TOMCAT_HOME/jakarta-tomcat/src/native/jk
# apxs -o mod_jk.so -DSOLARIS -I../jk -I/selhome/usr/local/java2/java1.2/include
-I/selhome/usr/local/java2/java1.2/include/solaris -c *.c ../jk/*.c
and then,
Successful!!!
If Success
cp mod_jk.so apache/libexec 한당.
본 문서를 통해서 지금까지 Solaris에서 Tomcat을 컴파일하는데 많은 애를 먹은 분들께
조금이라도 도움이 되었으면 하는 바이다. 문서에 대한 궁금한 사항이 있으면 문서의 위에
명시한 홈페이지 또는 메일주소로 연락을 하면 시간이 허용하는 한도내에서 답변을 드릴것을
약속한다. 문서에서 오류가 있으면 저에게 메일로 보내주면 고맙겠습니다.