[웹서버] 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을 컴파일하는데 많은 애를 먹은 분들께

조금이라도 도움이 되었으면 하는 바이다. 문서에 대한 궁금한 사항이 있으면 문서의 위에

명시한 홈페이지 또는 메일주소로 연락을 하면 시간이 허용하는 한도내에서 답변을 드릴것을

약속한다. 문서에서 오류가 있으면 저에게 메일로 보내주면 고맙겠습니다.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.