Linux WEB

Apache-Tomcat Multi Instance 설정

2015.05.28 20:10

호스트웨이 조회 수:3308

1. Apache Tomcat Multi Instance

개발 환경 위한 개발, 스테이징, 상용 의 목적으로 웹서버를 구축할 시 해당 용도에 따른

 

물리적으로 분리된 환경을 구성하여 웹서비스 구동이 필요한 경우, 서로 다른 환경 변수 설정 및

 

분리된 디렉토리로 해당 인스턴스 별 구동 및 정지가 가능한 환경을 말합니다.

 

 multi instance.png

2. 설치 과정


Tomcat JAVA 설치는 FAQ Tomcat 서버 구축 문서 등을 참조하시기 바랍니다.

 

본 문서에서는 java home=/usr/local/java, tomcat home=/usr/local/tomcat 이며,

버전의 경우 java version="1.8.0_45" apache-tomcat version ="8.0.23" 입니다.

 

3. 환경 변수 등록

vi /etc/profile 의 최하단에 아래와 같이 등록

JAVA_HOME=/usr/local/java

CATALINA_HOME=/usr/local/tomcat

Source /etc/profile 로 적용

 

4. apache tomcat 실행 유저 및 그룹 생성

groupadd webuser

useradd -g webuser -s /usr/sbin/nologin webuser

 

 

5. 인스턴스 별 디렉터리 및 환경 설정 디렉터리 생성

 

본 문서에는 /home/apache-tomcat/instance-01 과 같은 형식으로 지정하겠습니다.


[root@mail local]# cd /home/

[root@mail home]# mkdir -p /home/apache-tomcat/instance-01

[root@mail home]# mkdir -p /home/apache-tomcat/instance-01/bin

[root@mail home]# mkdir -p /home/apache-tomcat/instance-01/conf

[root@mail home]# mkdir -p /home/apache-tomcat/instance-01/logs

[root@mail home]# mkdir -p /home/apache-tomcat/instance-01/temp

[root@mail home]# mkdir -p /home/apache-tomcat/instance-01/webapps/ROOT

 

Apache Tomcat conf 설정 파일을 새로 생성하는 Instance 폴더로 복사합니다.

[root@mail home]# cp /usr/local/tomcat/conf/* /home/apache-tomcat/instance-01/conf

 

Apache Tomcat Instance conf/server.xml 파일 편집합니다.

[root@mail home]# vim /home/apache-tomcat/instance-01/conf/server.xml

(맨 좌측 숫자는 행 번호 입니다.)

 

22 <Server port="${tomcat.port.shutdown}" shutdown="SHUTDOWN">

 

69         <Connector port="${tomcat.port.http}" protocol="HTTP/1.1"

70                 connectionTimeout="20000"

71                 redirectPort="${tomcat.port.https}"

72                 URIEncoding="UTF-8" />

 

92        <Connector port="${tomcat.port.ajp}" protocol="AJP/1.3" redirectPort="${tomcat.port.https}" URIEncoding="UTF-8" /    >

 

6. 시작 스크립트를 생성 합니다.

[root@mail home]# vim /home/apache-tomcat/instance-01/bin/tomcat.sh

 

아래의 설정값을 다른 Instance 와 중복되지 않도록 설정한 후 저장합니다.

* SERVER_NAME : Apache Tomcat Instance 폴더명을 입력합니다.

* export JAVA_OPTS="$JAVA_OPTS -Dtomcat.port.shutdown=8505" #Shutdown Port
* export JAVA_OPTS="$JAVA_OPTS -Dtomcat.port.http=8580" #HTTP Port
* export JAVA_OPTS="$JAVA_OPTS -Dtomcat.port.https=8943" #HTTPS Port
* export JAVA_OPTS="$JAVA_OPTS -Dtomcat.port.ajp=8509" #AJP Port

* export CATALINA_HOME=/usr/local/tomcat 아파치톰캣의 설치 경로 입니다.

* export CATALINA_BASE=/home/apache-tomcat/$SERVER_NAME 인스턴스 경로 입니다.


#!/bin/bash
 
# chkconfig: 2345 95 20
# description: instance-01
# processname: instance-01
 
SERVER_NAME=instance-01
TOMCAT_USER=webuser
SHUTDOWN_WAIT=10
UNAME=`id -u -n`
 
export JAVA_OPTS="-server"
export JAVA_OPTS="$JAVA_OPTS -Xms256m"
export JAVA_OPTS="$JAVA_OPTS -Xmx256m"
export JAVA_OPTS="$JAVA_OPTS -XX:NewSize=128m"
export JAVA_OPTS="$JAVA_OPTS -XX:MaxNewSize=128m"
export JAVA_OPTS="$JAVA_OPTS -XX:PermSize=128m"
export JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=128m"
export JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC"
 
export JAVA_OPTS="$JAVA_OPTS -Dtomcat.port.shutdown=8505"
export JAVA_OPTS="$JAVA_OPTS -Dtomcat.port.http=8580"
export JAVA_OPTS="$JAVA_OPTS -Dtomcat.port.https=8943"
export JAVA_OPTS="$JAVA_OPTS -Dtomcat.port.ajp=8509"
 
export CATALINA_HOME=/opt/apache-tomcat
export CATALINA_BASE=/app/apache-tomcat/$SERVER_NAME
export CATALINA_OPTS="$CATALINA_OPTS -Djava.security.egd=file:/dev/./urandom"
 
tomcat_pid() {
    echo `ps aux | grep "$CATALINA_BASE[ ]" | grep -v grep | awk '{ print $2 }'`
}
 
start() {
    pid=$(tomcat_pid)
 
    if [ -n "$pid" ]
    then
        echo "Tomcat is already running (pid: $pid)"
    else
        echo "Starting tomcat (pid: $pid)"
 
        if [ e$UNAME = "eroot" ]
        then
            ulimit -n 100000
            umask 007
            /bin/su -p -s /bin/sh $TOMCAT_USER $CATALINA_HOME/bin/startup.sh
        else
            $CATALINA_HOME/bin/startup.sh
        fi
    fi
 
    return 0
}
 
stop() {
    pid=$(tomcat_pid)
 
    if [ -n "$pid" ]
    then
        echo "Stoping Tomcat"
 
        if [ e$UNAME = "eroot" ]
        then
            /bin/su -p -s /bin/sh $TOMCAT_USER $CATALINA_HOME/bin/shutdown.sh
        else
            $CATALINA_HOME/bin/shutdown.sh -force
        fi
 
        let kwait=$SHUTDOWN_WAIT
        count=0;
        until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
        do
            echo -n -e "\nwaiting for processes to exit (pid: $pid)\n";
            sleep 1
            let count=$count+1;
        done
 
        if [ $count -gt $kwait ]; then
            echo -n -e "\nkilling processes which didn't stop after $SHUTDOWN_WAIT seconds (pid: $pid)"
            kill -9 $pid
        fi
    else
        echo "Tomcat is not running"
    fi
 
    return 0
}
 
case $1 in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        pid=$(tomcat_pid)
        if [ -n "$pid" ]
        then
            echo "Tomcat is running with pid: $pid"
        else
            echo "Tomcat is not running"
        fi
        ;;
    *)
        echo $"Usage : $0 {start|stop|restart}"
        exit 1
esac
exit 0


실행 스크립트 권한 변경

[root@mail home]# chmod 755 apache-tomcat/instance-01/bin/tomcat.sh

 

인스턴스 사용자 권한 변경

[root@mail home]# chown -R webuser.webuser apache-tomcat/instance-01

 

간단한 jsp 문서를 만들어서 테스트 하여 봅니다.

[root@mail ROOT]# vim apache-tomcat/instance-01/webapps/ROOT/index.jsp

 

<%-- test.jsp --%>

 

<%@ page language="java" %>

 

<%!

 

int a= 100;

 

int b= 200;

 

%>

 

<%

 

int c= 0;

 

c=a+b;

 

%>

 

<html>

 

<head><title> JSP Test </title></head>

 

<body>

 

a= <%=a%><br>

 

b= <%=b%><br>

 

c= <%=c%>

 

</body>

 

</html>




http://서버IP:8580 으로 연결 되면 성공

아래와 같은 결과가 출력되면 정상 동작 중

a=100

b=200

c=300


포트 및 인스턴스 디렉터리 경로등에 유의하여 멀티 인스턴스를 생성하시면 되겠습니다.

번호 제목 글쓴이 날짜 조회 수
63 Debian 에서 mod_rewrite 활성화 하기 jook 2008.12.12 18386
62 Debian에서 apm 설치할때의 패키지 목록 jook 2008.12.27 18901
61 php.ini 옵션 중 short_open_tag jook 2009.02.12 25288
60 register_globals 옵션에 따른 변수 전달 jook 2009.02.19 21272
59 아파치2 에서 mod_cband 사용법 sylee 2009.06.05 21858
58 mod_rewrite 모듈 설치 및 기본 사용법 sylee 2009.07.02 30345
57 phpize를 이용하여 모듈 추가 file 호스트웨이 2012.03.15 13498
56 APM 및 OS 버전 확인 하는 방법 호스트웨이 2012.03.30 11977
55 Linux log 분할 방법 (logrotate) 호스트웨이 2012.04.06 10546
54 PHP에서 MS-SQL 서버를 연동하기 위한 방법 호스트웨이 2012.04.13 20848
53 Zend Guard Loader 설치 호스트웨이 2012.04.20 14415
52 apache에서 cgi를 사용하기 위한 설정 방법 호스트웨이 2012.04.27 12496
51 mod_GeoIP를 이용한 국가 IP 확인 및 국가별 접속 제한 호스트웨이 2012.05.04 13404
50 apache ssl 시작시 오류 메세지 호스트웨이 2012.05.11 8014
49 웹페이지에 사용자 인증 사용하기 호스트웨이 2012.05.18 7573
48 ZendOptimizer 3.3.9 설치 file 호스트웨이 2012.06.01 14023
47 PHP 속도 향상을 위한 eAccelerator 설치 호스트웨이 2012.06.15 9701
46 PHP-5.3 버전 이상에서 Deprecated 에러 발생시 처리 방법 호스트웨이 2012.06.22 11773
45 Apache2.4.x 버전 설치 호스트웨이 2012.06.22 20105
44 SSL config error 조치사항 호스트웨이 2012.06.29 8242