>> Read No. 249 article  
[자바] 리눅스에서 자바서블릿을 돌려보자!

등록 1999-09-16 06:10:00     조회 4
이름 한상열    

		<PRE>리눅스에서 자바를 쓰시는 분들이 많은 것 같습니다. 자바의다양한 기능을 리눅스에
서도 맛볼 수 있다는 게 초기엔 무척신기하고 재밌는 일이었답니다. 저에겐 말이죠. emoticon이제
는 썬에서도 리눅스를 상당히 고려하고 있는 눈치고, 얼마전엔 jdk1.2도 리눅스용으로 포팅
되었다고 합니다. 또, 아이비엠의 VisualAge for Java 2.0도 리눅스용(래드햇5.2)으로포팅되었구
요. 바야흐로 자바기술과 리눅스의 만남이 본격화되고 있습니다.서론이 길었죠? emoticon위와 같
이 좋은 시대가 되고 있는데, 리눅스에서 아직 서블릿기술을 맛볼 수 없다면, 이게 도로 아
미타불입니다. 물론, 자바웹서버 스팍용을 다운받아서 쓰실 수도 있지만요. 아파치웹서버
에서 서블릿을 돌릴 수 있는 방법이 있어서 소개합니다.1. 글의 목표리눅스의 아파치웹서
버에서 서블릿을 맘대로 써보자!2. 글의 목적많은 분들이 php3와 마찬가지로 서블릿을 쓰기 
위해서 아파치를 재컴파일했는데, 배포본에 들어있는 아파치웹서버를 다시 컴파일하지 않
고 서블릿을 쓰는 방법을 기술한다.3. 테스트환경배포본은 Accel Linux 6.0 plus입니다. 액셀이 
되면, 파워,알짜도 당연히 되겠죠. (추측...)일단은 아파치웹서버가 설치되어 있는 것으로 
가정합니다.4. 시나리오- 리눅스용 jdk(java development kit) 1.1.7을 설치한다.- 썬스팍용 jsdk(java s
ervlet development kit) 2.0을 설치  한다.- JServ(서블릿 지원 아파치 모듈) 1.0을 설치한다.- JServ와
 관련한 설정파일을 수정한다.- 테스트5. 준비물 다운로드- jdk:액셀plus엔 jdk1.1.7이 패키징되
어 있습니다.- jsdk2.0:http://java.sun.com/products/servlet/index.html에 가시면,간단한 정보와 함께 다
운로드할 수 있게 해놓았습니다.- JSverv1.0:http://java.apache.org에 가시면, 다양한 정보와 함께 
다운로드할 수 있습니다.6. jdk 설치액셀plus엔 jdk1.1.7이 패키징되어 있습니다. 따라서 다음
과 같이 설치하시면 됩니다.[root@free RPMS] rpm -Uvh jdk-1.1.7-v2al.i386.rpm만약 jdk가 없으면 http://www
.blackdown.org에 가셔서 다운로드하시기 바랍니다. jdk의 설치방법은 README나 그곳의FAQ를 참고
하십시오.(무척 쉽습니다.)참고1: 액셀에서는 /usr/lib/jdk에 설치됩니다.참고2: 다운로드받은 
사용자[root@free lib] pwd/usr/lib[root@free lib] tar xvzf jdk-1.1.7v3.tar.gz[root@free lib] mv jdk-1.1.7v3 jdk클래
스패스 설정은 다음절을 참조하세요.7. jsdk2.0 설치단순히 압축을 풀고 적당한 디렉토리로 
옮기는 것으로 설치는 완료됩니다. 반드시 CLASSPATH에 등록을 해둬야 합니다.[root@free lib] pwd/
usr/lib[root@free lib] zcat jsdk20-solaris2-sparc.tar.Z|tar xvf -[root@free lib] mv JSDK2.0 jsdk액셀엔 /etc/profile.d
/jdk.sh과 /etc/profile.d/jdk.csh이 있어서 자바와 관련한 필요한 환경변수를 설정하게끔 되어 있
습니다. 꽤 괜찮은 방법 같네요. 만약 없다면, 만들어놓는 게 좋을 것 같습니다./etc/profile.d/
jdk.sh은 담과 같습니다.#!/bin/bash export JAVA_HOME=/usr/lib/jdktmpdir="$JAVA_HOME/bin"if [ -z "$PATH" ] ; then 
       export PATH=$tmpdirelif [ -z `echo ":$PATH:" | grep $tmpdir` ] ; then        export PATH="$tmpdir:$PATH"fi
# 서블릿을 위한 클래스패스 추가tmpdir=.:$JAVA_HOME/lib:$JAVA_HOME/lib/classes.zip:/usr/lib/jsdk/lib/jsdk.ja
rif [ -z "$CLASSPATH" ]; then    export CLASSPATH=$tmpdirelif [ -z `echo ":$CLASSPATH:" | grep ":$tmpdir:"` ]; then  
  export CLASSPATH=$tmpdir:$CLASSPATHfi/etc/profile.d/jdk.csh은 담과 같습니다.#!/bin/cshsetenv JAVA_HOME /usr/li
b/jdk#Add directories to the PATH environment variable if they aren't in it alreadyset tmpdir=$JAVA_HOME/binset test=`ec
ho ":${PATH}:" | grep ":${tmpdir}:"`if ( ! ${#test} ) setenv PATH ${PATH}:${tmpdir}# 서블릿을 위한 클래스패스
 추가set tmpdir=.:$JAVA_HOME/lib:$JAVA_HOME/lib/classes.zip:/usr/lib/jsdk/lib/jsdk.jar# Set CLASSPATHif ( ! ${?CLASSPA
TH} ) then    setenv CLASSPATH $tmpdirelse    set test=`echo ":${CLASSPATH}:" | grep ":${tmpdir}:"`    if ( ! ${#t
est} ) then        setenv CLASSPATH ${tmpdir}:${CLASSPATH}    endifendif8. JServ1.0 설치다운로드받은 파
일을 아무곳에서나 일단 풀고 컴파일합니다.컴파일 후 /usr/local/jserv에 설치하면 됩니다.[roo
t@free root] pwd/root[root@free root] tar xvzf Apache_JServ_1.0.tar.gz[root@free root] cd ApacheJServ-1.0[root@free Apac
heJServ-1.0] ./configure --prefix=/usr/local/jserv                                         --with-ap
ache-install=/usr                                         --with-apache-conf                
                         --with-jdk=/usr/lib/jdk                                        
 --with-jsdk=/usr/lib/jsdk                                         --disable-debugging편의상 여
러줄에 나누어서 썼지만 한 줄에 써야 합니다../configure --prefix=/usr/local/jserv --with-apache ~ 뭐
이런식으로 말입니다.위와 같이하면 Makefile을 만들어줍니다. 잠깐 의미를 살펴보겠습니다.
--prefix=/usr/local/jserv   : /usr/local/jserv에 JServ1.0을 설치하겠다.--with-apache-install=/usr  : apache가 
/usr에 설치되어 있다.--with-apache-conf          : apache의 설정을 그래로 사용한다.--with-jdk=/us
r/lib/jdk     : jdk가 /usr/lib/jdk에 설치되어 있다.--with-jsdk=/usr/lib/jsdk   : jsdk가 /usr/lib/jsdk에 설
치되어 있다.--disable-debugging         : debugging을 할 수 없게 한다.[root@free ApacheJServ-1.0 ] make[
root@free ApacheJServ-1.0 ] make install9. 확인/usr/lib/apache에 mod_jserv.so가 생겼으면 설치는 성공한겁
니다. 거기엔 다른 모듈들도 아주 많이 있답니다.[root@free apache] ls -l mod_jserv.so-rwxr-xr-x   1 ro
ot     root       202614 Jun 26 16:45 mod_jserv.so*10. 설정파일 수정하기(1차)아파치설정파일에 JSer
v와 관련한 사항들을 적어주어야 합니다.간편한 방법은 JServ 설정파일을 httpd.conf 뒤에 붙이
는 겁니다.JServ의 설정파일은 컴파일을 한 위치에 있답니다.[root@free root] pwd/root[root@free root]
 cd ApacheJServ-1.0[root@free ApacheJServ-1.0] cd example[root@free example] lsHello.class    Makefile.am        
    jserv.conf        jserv.properties.inHello.java     Makefile.in            jserv.conf.inHello.java.in
  example.properties     jserv.logMakefile       example.properties.in  jserv.properties설정파일들이 굉장
히 여러개 있는데요. 일단은 중요한게jserv.conf입니다.jserv.conf파일 주에서 한 줄을 수정합니
다.[root@free example] vi jserv.conf###################################################  Apache JServ Configuration Fi
le#################################################### Note: this file should be appended to httpd.conf# Tell Apache on 
win32 to load the Apache JServ communication moduleLoadModule jserv_module modules/mod_jserv.so모듈의 위치 지정 
위치만 일단 바꿔주면 됩니다.다음은 jserv.conf를 httpd.conf에 붙이는 일입니다.[root@free example]
 cat jserv.conf >> /etc/httpd/conf/httpd.conf11. 테스트(1차)아파치웹서버를 다시 구동시키고 jserv를 
테스트합니다.[root@free init.d] pwd/etc/rc.d/init.d[root@free init.d] ./httpd stop[root@free init.d] ./httpd start
넷스케잎을 열고서 다음 싸이트에 접속합니다.http://localhost/jserv/반드시 맨 뒤에도 짝대기
를 붙이세요.JAVA APACHE PROJECT의 페이지가 나오면 일단 성공하신겁니다.12. 설정파일 바꾸기
이제부터는 완전히 노가다와 다름없는 documents읽는 것과 설정파일 수정입니다. 사실 젤 중
요한 것이라고도 할수 있습니다. 설정은 누구나 자기 스타일에 맞추어서 하는 것이니, 정
형화될 수는 없을 겁니다.저의 설정결과만 일단 적겠습니다.[root@free httpd] pwd/home/httpd[root@fr
ee httpd] mkdir servlets[root@free httpd] cd servlets[root@free servlets] mkdir development[root@free servlets] mkdir pr
oduction[root@free servlets] pwd/home/httpd/servlets[root@free servlets] lsdevelopment/  production/[root@free servlets
] cd production[root@free production] lsproduction.properties[root@free production] cd ../development[root@free developm
ent] lsdevelopment.propertiesdevelopment와 production은 서블릿들이 들어갈 디렉토리들입니다. 거기엔 
development.properties와production.properties란 파일이 각각 있습니다.먼저 /home/httpd/servlets/production/p
roduction.properties파일입니다.repositories=/home/httpd/servlets/productionautoreload.classes=trueautoreload.file=t
rueinit.timeout=10000destroy.timeout=10000session.timeout=1800000session.checkFrequency=30000singleThreadModelServlet.in
itialCapacity=5singleThreadModelServlet.incrementCapacity=5singleThreadModelServlet.maximumCapacity=10담은 /home/httpd
/servlets/development/development.properties파일입니다.repositories=/home/httpd/servlets/developmentautoreload.clas
ses=trueautoreload.file=trueinit.timeout=10000destroy.timeout=10000session.timeout=1800000session.checkFrequency=30000si
ngleThreadModelServlet.initialCapacity=5singleThreadModelServlet.incrementCapacity=5singleThreadModelServlet.maximumCapa
city=10이제 httpd.conf파일을 손봐야 하는데요. 1차 수정 때에추가되었던 부분을 몽땅 지웁니
다. 그리고, 다음과 같은줄을 추가합니다. Include conf/httpd.conf.jserv[root@free conf] pwd/etc/httpd/conf
[root@free conf] tail httpd.conf# 아파치에서 SSL모듈을 사용하고자 한다면 주석을 삭제한후 httpd.co
nf.ssl를# 설정하면 된다.## Include conf/httpd.conf.ssl## 아파치에서 Jserv모듈을 사용하고자 한다면
 주석을 삭제한 후 httpd.conf.jserv를# 설정하면 된다.#Include conf/httpd.conf.jservhttpd.conf.jserv를 /etc
/httpd/conf에 만듭니다. 내용은 다음과같습니다.LoadModule jserv_module modules/mod_jserv.soApJServManual o
ffApJServProperties /etc/httpd/conf/jserv.propertiesApJServLogFile /var/log/httpd/jserv.logApJServDefaultProtocol ajpv11
ApJServDefaultHost hancom.left.com <-- 자신의 호스트이름을 넣으세요.ApJServDefaultPort 8007ApJServSecretKey
 DISABLEDApJServMount /development /developmentApJServMount /production /productionApJServMountCopy on<Location /jserv/>
  SetHandler jserv-stat;us  order deny,allow  deny from all  allow from localhost 127.emoticon.1 hancom.left.com 200.emoticon.
2 <-- 잔신의 아이피,호스트</Location>같은 디렉토리 /etc/httpd/conf에 jserv.properties파일을 담과같
이 만듭니다.wrapper.bin=/usr/lib/jdk/bin/javawrapper.class=org.apache.jserv.JServwrapper.classpath=/usr/lib/apache/
ApacheJServ.jarwrapper.classpath=/usr/lib/jsdk/lib/jsdk.jarport=8007zones=production,developmentproduction.properties=/h
ome/httpd/servlets/production/production.propertiesdevelopment.properties=/home/httpd/servlets/development/development.p
ropertiessecurity.maxConnections=50security.allowedAddresses=127.emoticon.1,200.emoticon.2 <-- 자신의 아이피를 적으세요
.security.authentication=falsesecurity.challengeSize=5log=falselog.file=jserv.loglog.timestamp=truelog.dateFormat=[dd/MM
/yyyy HH:mm:ss:SSS zz]log.channel.servletLog=truelog.channel.init=truelog.channel.terminate=truelog.channel.serviceReque
st=truelog.channel.authentication=truelog.channel.requestData=truelog.channel.responseHeaders=truelog.channel.signal=tru
elog.channel.exceptionTracing=truelog.channel.servletManager=true휴우~~~~! 설정 다 끝났네요. 굉장히 어려
운 것처럼보이죠. 사실 그렇게 어렵지는 않았습니다. 왜냐하면,/root/ApacheJServ-1.0/example 밑에
 있는 설정파일들을 조금만 수정해서 쓰면 되거든요. emoticon13. 테스트(2차)전통의 예제 프로그
램인 Hello를 돌릴 차례입니다. 작성해도 되구요. 게으르신 분들은 /root/ApacheJServ-1.0/example밑
에 있으니 카피하면 되겠죠![root@free development] pwd/home/httpd/servlets/development[root@free development] 
lsHello.class Hello.java development.properties먼저 아파치데몬을 다시 시작하십시오.[root@free init.d] pw
d/etc/rc.d/init.d[root@free init.d] ./httpd stop[root@free init.d] ./httpd start넷스케잎을 열고 http://hancom.lef
t.com/development/Hello에 접속해보세요. 물론 hancom.left.com은 자신의 호스트이름으로 바뀌어야겠
죠.Congratulations, Apache JServ is working!야~~~ 좋타~~~~!!!http://hancom.left.com/production/Hello에 접속해보
세요.역시 hancom.left.com은 자신의 호스트이름이어야 합니다.Not Found그럼 이번엔 위의 Hello.cla
ss를 /home/httpd/servlets/production에 카피하고나서 재차 http://hancom.left.com/production/Hello에접속해
보세요. 짜잔~~~Congratulations, Apache JServ is working!야~~~ 좋타~~~~!!!감이 좀 잡히시나요.기타 자
세한 설정은 Documents를 더 읽어봐야 할 것 같습니다. 어제 듬성듬성 읽으면서 설정한거라 
미숙한 부분이많습니다.14. 결론아파치에서도 서블릿을 자유자재로 돌릴 수 있으니 넘 좋
네요. 앞으론 JServ모듈도 php3모듈처럼 배포판에 추가되었으면 하는 바램입니다.</PRE>15. 참
고문헌- JServ1.0 문서들- 자바랜드의 이현찬님의 강좌글들 (http://www.idcsoft.co.kr/~java)항상 행
복하세요!!!
이름
암호
  목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 0.81 초 ] 작업시간: [ 0.02 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1791013924
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.