본문 바로가기

StoreHouse/Server

RedHat 7.3 + APM + 톰켓 4.1.12 연동법

굿스피드
http://aidc.co.kr
http://www.aidc.co.kr/customer/sub7_qna-read.htm?id=26&num=21



[설치환경]
Model: LG IBM eServer X330
CPU : Intel Pentium III 1.13Mhz
RAM: 256M
HDD: SCSI IBM 18
OS: Redhat Linux 7.3
Kernel: 2.4.18

[설치전]
그동안 와우리눅스 파란 7.1에서 리눅스를 운영하다가 여러가지 보안버그와 기타등등의 이유로 이번 기회에 레드햇 7.3으로
업그레이드를 하였습니다. 그러나 생각보다 쉽지는 않더군여.. ㅡㅡ;
그래서 1주일동안 PHP스쿨과 사랑넷의 게시판과 Q&A를 참고하여 7.3버전에서 아파치와 톰켓의 연동에 성공하였습니다.
기존 4.0.5버전 이하의 톰켓과는 연동 방법이 좀 다른것 같아서 많이 고생했습니다.
톰켓과 아파치의 커넥팅 모듈은 아파치 컴파일시 PHP와 같이 모듈화 시켜서 컴파일 시켰습니다.
톰켓은 처음 셋팅해보는것이라서 실수가 있을지도 모르니 양해 바랍니다.
아직 톰켓에서 버추얼 호스팅은 성공 하지 못했는데 영문 도큐먼트까지 찾아 봤으나 하란데로 했는데
안되더군여..ㅡㅡ; 아직 내공이 부족하여.. 혹시 성공하신분 있으시면 내공이 부족한 행자를 위해 답글좀 달아 주시기 바랍
니다.
레드헷 7.3은 서버모드로 설치하고 패키지에서는 모두 해제 하고 설치했습니다.
기본적으로 Freetype와 GD는 7.3버전에 같이 설치 되는군요.. PHP컴파일할때 옵션만 넣어주시면 같이 연동 됩니다.
openssl의 보안 버그로 인하여 업그래이드를 해야 되나 의존성이 걸리는게 너무 많아서 엄두가 안남니다..ㅡㅡ;
openssl을 사용하시는 분은 꼭 패치후에 설치하시기 바랍니다.. 기타 설치에 좋은 팁이나 부족한점이 있다면
리플 바랍니다(메일주소:admin@aidc.co.kr). 내공이 부족한 행자에게 많은 도움이 될겁니다.^^

[설치화일]
mysql-3.23.52.tar.gz : http://www.mysql.com/downloads/mysql-3.23.html
apache_1.3.26.tar.gz : http://www.apache.org/dist/httpd
php-4.2.3.tar.gz : http://www.php.net/downloads.php
j2sdk-1_4_1-linux-i586.bin : http://java.sun.com
jsdk20-solaris2-sparc.tar.Z : http://java.sun.com/products/servlet/archive.html
mm.mysql-2.0.4-bin.jar : http://mmmysql.sourceforge.net/oldDist.html
imap-2001a.tar.Z : ftp://ftp.cac.washington.edu/imap/
freetype-2.0.6.tar.gz : ftp://ftp.freetype.org/freetype/freetype2 (7.3버전에 기본 제공)
gd-2.0.1.tar.gz : http://www.boutell.com/gd (7.3버전에 기본제공)
openssl-0.9.6e.tar.gz : http://www.openssl.org/source
ZendOptimizer-1.3.2-Linux_glibc21-i386.tar.gz : https://http://www.zend.com/store/products/zend-optimizer.php
jakarta-tomcat-4.1.12.tar.gz : http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.12/bin
jakarta-tomcat-connectors-4.1.12-src.tar.gz : http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.12/src

** 소스는 위의 경로에서 받았습니다. 혹시 자료가 없거나 귀찮으시면 아래 링크에서 받으시면 됩니다.
설치 소스화일 전부 압축해서 화일 한개로 만들어 놓았습니다. (참고 : 용량이 조금 많습니다. 약 70메가 분량)
http://www.aidc.co.kr/customer/sub7_qna-list.htm


[설치방법]
모든 소스는 /usr/local/src폴더가 설치 루트 폴더이다.
설치전 SSH를 3.4이상의 버전으로 업데이트 해준다.
openssl도 같이 업데이트 해준다.
1. MYSQL설치

먼저 소스를 /usr/local/src 폴더에 이동한다음 압축을 푼다.

[root@localhost]# tar xvfz mysql-3.23.52.tar.gz
[root@localhost]# cd mysql-3.23.52
[root@localhost]# ./configure --prefix=/usr/local/mysql --with-charset=euc_kr --localstatedir=/var/lib/mysql(DB화일을 저장할
경로 설정)

- 혹시 실수로 환경설정을 다시 해야할 경우 make distclean 명령실행

[root@localhost]# make; make install

- 기본 데이터 베이스 설치
[root@localhost]# cd /usr/local/mysql/bin
[root@localhost]# ./mysql_install_db

- mysql의 시작계정설정
[root@localhost]# groupadd mysql
[root@localhost]# adduser -g mysql mysql
[root@localhost]# vi /etc/passwd (mysql계정의 쉘을 nologin으로 수정)
[root@localhost]# rm -rf /home/mysql(mysql계정의 홈디렉토리 삭제)
[root@localhost]# cd /usr/local/mysql
[root@localhost]# chown -R mysql.mysql var
[root@localhost]# cp /usr/local/src/mysql-3.23.52/support-files/my-medium.cnf /etc/my.cnf
[root@localhost]# vi /usr/local/mysql/share/mysql/mysql.server

- 편집기로 열어서 safe_mysql이 실행되는 라인(119라인)에 --language=korean 옵션을 추가.

$bindir/safe_mysqld --pid-file=$pid_file --datadir=$datadir --language=korean & 한글메세지를 띄우도록 해준다.

- 시스템 부팅시에 자동 실행되도록 설정
[root@localhost]# cp -p /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S90mysqld

- 만일 Xwindows로 부팅할 경우를 위해 /etc/rc.d/rc5.d/ 디텍토리에도 링크를 만든다.
[root@localhost]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc5.d/S90mysqld

- mysql데몬의 시작과 종료 및 관련 명령어를 사용하기 편하게 하기위해서 시스템 부팅환경에 PATH를 지정해 둔다.
[root@localhost]# vi /root/.bash_profile

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
BASH_ENV=$HOME/.bashrc
USERNAME="root"

[root@localhost]# /etc/rc.d/init.d/mysqld start
[root@localhost]# ps -ef | grep mysql MySQL 프로세스 확인하기
[root@localhost]# /etc/rc.d/init.d/mysqld stop MySQL 데몬 종료하기

- mysql설치후 꼭 root패스워드를 변경해준다

2. IMAP설치

[root@localhost]# tar xvzf imap.tar.gz
[root@localhost]# mv imap-2001a /usr/local/imap
[root@localhost]# cd /usr/local/imap
[root@localhost]# make slx
[root@localhost]# cp ipopd/ipop3d /usr/sbin
[root@localhost]# cp imapd/imapd /usr/sbin
[root@localhost]# vi /etc/xinetd.d/imapd

service imap
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/imapd
log_on_success += HOST DURATION
log_on_failure += HOST
}

[root@localhost]# vi /etc/xinetd.d/ipop3d

service pop3
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += HOST DURATION
log_on_failure += HOST
}

[root@localhost]# /etc/rc.d/init.d/xinetd restart(슈퍼데몬을 재가동)

Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]

- telnet을 이용하여 로컬호스트 110포트(pop3)로 접속하여 테스트 한다.

[root@localhost]# telnet localhost 110

Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK POP3 localhost.localdomain v2001.78 server ready
user admin
+OK User name accepted, password please
pass 1234
+OK Mailbox open, 0 messages
quit
+OK Sayonara
Connection closed by foreign host.

IMAP은 143 포트를 사용.

[root@localhost]# cp /usr/local/imap/c-client/c-client.a /usr/lib/libc-client.a
[root@localhost]# mkdir /usr/local/include (폴더가 없을시 생성해준다)
[root@localhost]# cp /usr/local/imap/c-client/mail.h /usr/local/include
[root@localhost]# cp /usr/local/imap/c-client/rfc822.h /usr/local/include
[root@localhost]# cp /usr/local/imap/c-client/linkage.h /usr/local/include

3. Jdk설치

- 참고) jdk가 설치되어 있어야. 톰캣에서 서블릿을 가동할수 있음

[root@localhost]# cd /usr/local/src
[root@localhost]# chmod +x j2sdk-1_4_1-linux-i586.bin
[root@localhost]# ./j2sdk-1_4_1-linux-i586.bin
[root@localhost]# mv j2sdk1.4.1/ /usr/local/jdk

- 환경설정 부분
[root@localhost]# vi /etc/profile

# JDK 환경설정
PATH="$PATH:/usr/local/jdk/bin"
export JAVA_HOME="/usr/local/jdk"
export CLASSPATH="."

[root@localhost]# java -version
java version "1.2.2"
Classic VM (build JDK-1.2.2_013, green threads, nojit)

4. JSDK설치


[root@localhost]# tar xvfz jsdk20-solaris2-sparc.tar.Z
[root@localhost]# mv JSDK2.0 /usr/local/JSDK

- 환경설정
[root@localhost]# vi /etc/profile

# JSDK 환경설정
PATH="$PATH:/usr/local/JSDK"
export CLASSPATH=".:/usr/local/JSDK/lib/jsdk.tar"

# APACHE + PHP + TOMCAT + TOMCAT Connector연동

[root@localhost]# tar xvfz apache_1.3.26.tar.gz
[root@localhost]# cd apache_1.3.26
[root@localhost]# ./configure --prefix=/usr/local/apache

- tomcat 설치
[root@localhost]# cd /usr/local/src
[root@localhost]# tar xvfz jakarta-tomcat-4.1.12.tar.gz
[root@localhost]# mv jakarta-tomcat-4.1.12 /usr/local/jakarta-tomcat
[root@localhost]# vi /etc/profile

# tomcat config
PATH="$PATH:/usr/local/jakarta-tomcat/bin"
export TOMCAT_HOME="/usr/local/jakarta-tomcat"
export CLASSPATH="."

[root@localhost]# vi /usr/local/jakarta-tomcat/conf/workers.properies(아래 부분 입력)

workers.tomcat_home=/usr/local/jakarta-tomcat
workers.java_home=/usr/local/jdk
worker.list=ajp12, ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13

- tomcat 접속 모듈 컴파일
[root@localhost]# cd /usr/local/src
[root@localhost]# tar xvfz jakarta-tomcat-connectors-4.1.12-src.tar.gz
[root@localhost]# mv jakarta-tomcat-connectors-4.1.12-src /usr/local/jakarta-tomcat/connectors
[root@localhost]# cd /usr/local/jakarta-tomcat/connector/jk/native
[root@localhost]# ./buildconf.sh
[root@localhost]# ./configure --with-apache=/usr/local/src/apache_1.3.26
[root@localhost]# make; make install
[root@localhost]# vi /etc/rc.d/init.d/tomcat 실행 스크립트

#######################################################################
#!/bin/sh
# ---------------------------------------------------------------------
# Start/Stop Script for the CATALINA Server
#
# ---------------------------------------------------------------------
#######################################################################
. /etc/rc.d/init.d/functions

export JAVA_HOME=/usr/local/jdk
export TOMCAT_HOME=/usr/local/jakarta-tomcat/
export CLASSPATH="."

PRGDIR="$TOMCAT_HOME/bin"
EXECUTABLE=startup.sh

# Check that target executable exists
if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
echo "Cannot find $PRGDIR/$EXECUTABLE"
echo "This file is needed to run this program"
exit 1
fi

case "$1" in
start)
echo -n "Starting Catalina service: "
daemon "$PRGDIR"/"$EXECUTABLE $@"
;;
stop)
echo -n "Shutting down Catalina service: "
daemon "$PRGDIR"/"$EXECUTABLE $@"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
echo
exit 0
###################################################################

- php컴파일
[root@localhost]# cd /usr/local/src
[root@localhost]# tar xvfz php-4.2.3.tar.gz
[root@localhost]# cd php-4.2.3
[root@localhost]#./configure --with-mysql=/usr/local/mysql
--with-apache=/usr/local/src/apache_1.3.26
--with-charset=euc_kr --with-language=korean
--with-config-file-path=/usr/local/apache/conf
--enable-shmop --with-track-debug --with-zlib
--enable-track-vars
--enable-calendar
--prefix=/usr/local/php
--enable-ftp
--enable-sockets
--enable-mailparse
--enable-magic-quotes
[root@localhost]# make; make install

- APACHE컴파일
[root@localhost]# cd /usr/local/src/apache_1.3.26
[root@localhost]# ./configure
--prefix=/usr/local/apache
--activate-module=src/modules/php4/libphp4.a
--activate-module=src/modules/jk/libjk.a (이부분 중요)
--enable-module=so
--enable-shared=max

[root@localhost]# make; make install
[root@localhost]# httpd -l 모듈설치 확인
http_core.c
mod_so.c

[root@localhost]# cp ../php-4.2.3/php.ini-dist /usr/local/apache/conf/php.ini php환경설정 파일 복사
[root@localhost]# vi /usr/local/apache/conf/httpd.conf apache환경설정
아래 부분 추가

# MOD_JK

JkWorkersFile /usr/local/tomcat/conf/workers.properies
JkLogFile /usr/local/tomcat/logs/jk.log
JkLogLevel error
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
JkMount /examples/* ajp13


- APACHE부팅시 자동시작 등록

[root@localhost]# cp -p /usr/local/apache/bin/apachectl /etc/rc.d/init.d/apachectl
[root@localhost]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc3.d/S85httpd
[root@localhost]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc5.d/S85httpd

[root@localhost]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc0.d/K15httpd
[root@localhost]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc1.d/K15httpd
[root@localhost]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc6.d/K15httpd

- 환경변수 확인
[root@localhost]# cd $JAVA_HOME
[root@localhost]# cd $TOMCAT_HOME

- Zend 설치
[root@localhost] cd /usr/local/src
[root@localhost] tar xvfz ZendOptimizer-2.0.1-Linux_glibc21-i386.tar.gz
[root@localhost] cd ZendOptimizer-2.0.1-Linux_glibc21-i386
[root@localhost] ./install.sh 자신에 맞게 적절하게 수정(모르면 그냥 Enter키 입력)

[설치후]

아파치 홈디렉토리를 /usr/local/apache/conf에서 httpd.conf화일을 열고 홈디렉토리를
/usr/local/jakarta-tomcat/webapps/ROOT로 수정하시면 80번 포트로 고양이 그림을 보실수
있습니다. 톰켓의 특별한 설정 없이도 모듈로 올려서 컴파일 하니까 고양이 그림을 볼수
있더군여.. 엄청난 삽집을 했었는데.. T_T 주의 하실점은 환경설정부분을 조금 주의 하시면
어렵지 않게 고양이 그림을 보실수 있으실 겁니다. 설치후 phpinfo와 index.jsp 그리고
mysql커넥션부분만 테스트 했습니다. 부족하신 부분은 직접 삽질하시면 될겁니다.. ㅡ,.ㅡ;
악플은 사양합니다. 악플달면 저주 합니다.. ㅎㅎ






굿스피드 오타는 이해 바랍니당~ 10/04 10:18:42

굿스피드 톰켓에서 버추얼 호스팅 하는법좀 알켜 주세여~~^^; 10/04 11:09:46

민가니
docBase="htdocs"
reloadable="true" />
http://www.abc.com


docBase="htdocs"
reloadable="true" />
10/04 11:58:50

굿스피드 저두 그렇게 해봤는데 안되더군여..^^;
appBase는 홈디렉토리의 절대 경로입력하고
docBase는 JSP가 돌아가는 폴더 인가요?
그렇게 했는데 안되던데여..^^;; 10/04 12:43:06

굿스피드 80번 포트로 php와 jsp를 같이 연동해야되는데..
그러니까 index.php치면 php가 연동이 되야되고
index.jsp치면 jsp가 연동이 되야져..^^
절대 경로를 /home/admin/html은 php폴더이고
/home/admin/html/jsp는 jsp폴더일경우
가상호스팅 아시는분 답변좀 주세여~^^ 10/04 12:49:05

헐랭이 어디선가 본건데요....
아파치 버철쪽에서 두어줄 추가해줘야 하는것 같던데요..
예전에 본거라 기억이 않나네요...
10/04 13:14:18

굿스피드 ^^ 예전에는 그렇게 한거 같더라구여.. 4.1.12버전에서는
그냥 server.xml에만 추가 해주면 되는걸로 알고 있는데..
잘 안되네여..T_T 10/04 13:16:02

헐랭이 히.. 저도 지금 찾아보고있습니다.
근데 80번포트 로도 잘 동작되지 않네요..8080 잘 동작 고양이는 나오는데 세부적으로 들어가면 오류가 팍팍인데요.....

이거 예전에 포기해버렸는데 님땜에 또 삽질하네요.... ^^
10/04 15:33:33

굿스피드 헐..전 80포트로는 톰켓 아파치 모두 잘됩니다..
example실행해도 잘되거..근디 가상 호스팅이 안되네여..T_T 10/04 15:34:33

헐랭이 가상 호스팅은 javaschool 에 있던거 같습니다. 10/04 15:36:40

헐랭이 찾으러 갑시다. 얍얍얍.... 10/04 15:37:00

민가니 --; 지송... 4.1.12버전은 아직 손을 안대 봐서....
4.0.3을 사용하는데..server.xml은 위에서 처럼 잡아주구..물론..아파치 쪽에도 버쳘호스트로 잡아주면..잘 되던데..지금 글케 사용중이거덩여..^^; 10/04 15:48:28

굿스피드 민가니님처럼 저두 해봤는데 안되더라구여..^^ 10/04 16:10:08

헐랭이 휴.. 열심히 찾았는데 일반적으로
mod_webapp.so 이 모듈 올리라고 하는데 이러한 모둘은 없고 libjk.so 모듈만 있네요.. 이것이 없어서 가상호스트 설정할 수 없는것이 아닐까요.. 10/04 16:42:42

굿스피드 엇..4.1.12버전에서는 mod_webapp.so 바이너리 버전이 없어서 jakarta-tomcat-connectors-4.1.12-src.tar.gz이걸로 연동시킨다는데여..ㅡㅡㅋ 그리고 가상호스트 한개까지는 잡아 봤습니다. 다른폴더로..그뒤로는 안되더군여..ㅡㅡ; 힘들당..T_T 10/04 17:18:51

k ㅋㅋㅋ 수거했슴돠 ^________^ 211.189. .13 10/08 15:47:46

기가막혀 위에 대로 했는데
php .html을 자꾸 다운 받으려 하네요.
뭘 잘못했나ㅏ
그대로 했는데
도와주세여. 10/09 19:44:27

기가막혀 cd /usr/local/jakarta-tomcat/connector/jk/native
[root@localhost]# ./builconf.sh
도 수정 바랍니다. 10/09 20:19:29

기가막혀 # MOD_JK

JkWorkersFile /usr/local/tomcat/conf/workers.properies
JkLogFile /usr/local/tomcat/logs/jk.log
JkLogLevel error
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
JkMount /examples/* ajp13


tomcat위치가 틀렸어요. ln시킨것도 아닌거 같은데 10/09 20:36:03

기가막혀 님아 아파치.1.3.27하고 레드햇8에 깐거만 틀린데 80포트에서 자꾸php랑 html이 다운 받아줘요.

AddType application/x-httpd php .php .phtml .php3 .sql .inc .html .htm .jsp
AddType application/x-httpd-php-source .phps
AddType application/x-tar .tgz

도 했답니다.
그대로 했는데 10/09 20:52:23

기가막혀 http://아이피/index.html
http://아이피/index.html

http://아이피/index.jsp는 되던데
이 파일들이 같은 위치에 있어도 되는거 아닌가요..

이러니까 다운받아줘요.
근데 tomcat예제에 html은 괞찮던데 왜그러지 혹시 디렉토리 위치도 가리면서 브라우저가 작동되나,
10/09 21:11:49

굿스피드 핫핫..오타를 더 수정해야 겠네여..ㅡㅡ; 10/10 9:40:29

굿스피드 톰켓하고 아파치를 따로따로 테스트 해보시져..
일단 아파치만 도큐루트 새로 잡고 테스트 해보세여..
아파치 1.3.27은 저두 안써봐서..26에서는 잘되는데~^^;
10/10 9:45:34

기가막혀 AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php
AddType application/x-httpd-php .html
AddType application/x-httpd-php3-source .phps
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-jsp .jsp

나눠서 쓰니 되는군요. 10/10 9:48:14

헐랭이 오.. 많이 진척이 되었네요..^^ 가상 호스트 설정은 다 되는데..
인터널 에러 나더군요..ㅋㅋ
10/11 11:02:13

김태헌 가상호스트 인터널 에러는 퍼미션을 nobody가 읽을 수 있도록 조정해주면 되더군요.

'StoreHouse > Server' 카테고리의 다른 글

AWStats 를 이용한 웹로그 통계  (0) 2004.12.10
RedHat 아파치 포트바꾸기  (0) 2004.12.10
RedHat crontab 사용하기  (0) 2004.12.10
RedHat 삼바 설치방법  (0) 2004.12.10
RedHat iptable 세팅예제  (0) 2004.12.10