Linux WEB

Apache-Tomcat Multi Instance 설정

2015.05.28 20:10

호스트웨이 조회 수:3311

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


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

번호 제목 글쓴이 날짜 조회 수
43 PHP 컴파일시 /usr/bin/ld: cannot find -lltdl 오류 호스트웨이 2012.07.13 9630
42 [Apache] Image 관련 Log 남기지 않기 호스트웨이 2012.07.13 7666
41 PHP 업로드 파일 용량 제한 설정 호스트웨이 2012.07.06 8651
40 SSL config error 조치사항 호스트웨이 2012.06.29 8243
39 Apache2.4.x 버전 설치 호스트웨이 2012.06.22 20118
38 PHP-5.3 버전 이상에서 Deprecated 에러 발생시 처리 방법 호스트웨이 2012.06.22 11782
37 PHP 속도 향상을 위한 eAccelerator 설치 호스트웨이 2012.06.15 9701
36 ZendOptimizer 3.3.9 설치 file 호스트웨이 2012.06.01 14023
35 웹페이지에 사용자 인증 사용하기 호스트웨이 2012.05.18 7573
34 apache ssl 시작시 오류 메세지 호스트웨이 2012.05.11 8017
33 mod_GeoIP를 이용한 국가 IP 확인 및 국가별 접속 제한 호스트웨이 2012.05.04 13411
32 apache에서 cgi를 사용하기 위한 설정 방법 호스트웨이 2012.04.27 12499
31 Zend Guard Loader 설치 호스트웨이 2012.04.20 14419
30 PHP에서 MS-SQL 서버를 연동하기 위한 방법 호스트웨이 2012.04.13 20863
29 Linux log 분할 방법 (logrotate) 호스트웨이 2012.04.06 10548
28 APM 및 OS 버전 확인 하는 방법 호스트웨이 2012.03.30 11979
27 phpize를 이용하여 모듈 추가 file 호스트웨이 2012.03.15 13500
26 mod_rewrite 모듈 설치 및 기본 사용법 sylee 2009.07.02 30352
25 아파치2 에서 mod_cband 사용법 sylee 2009.06.05 21863
24 register_globals 옵션에 따른 변수 전달 jook 2009.02.19 21273