Linux WEB

Apache-Tomcat Multi Instance 설정

2015.05.28 20:10

호스트웨이 조회 수:10705

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


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

번호 제목 글쓴이 날짜 조회 수
23 PHP 컴파일시 에러 메세지가 나오는 경우 조치방법 호스트웨이 2012.12.14 10310
22 PHP 컴파일시 에러 메세지가 나오는 경우 조치방법-2 호스트웨이 2012.12.20 6123
21 아파치 특정폴더에 암호걸기 호스트웨이 2012.12.28 8163
20 64bit 에서 php 컴파일시 에러 메세지 발생 시 대처방법-3 호스트웨이 2012.12.28 8583
19 apache 쓸모없는 로그 남기지 않는 방법. 호스트웨이 2012.12.28 6758
18 apache 가상호스트(virtualhost) 사용하기 호스트웨이 2013.06.03 25682
17 Apache event MPM, Prefork MPM, Worker MPM 방식의 차이점 및 설치 시 설정 방법 호스트웨이 2014.07.20 26648
16 mod_evasive를 이용한 웹 DDoS 방어 호스트웨이 2014.08.19 13104
» Apache-Tomcat Multi Instance 설정 file 호스트웨이 2015.05.28 10705
14 Apache 설치 후 WEB 403 Forbidden 에러 호스트웨이 2015.09.08 20312
13 WEB에 특정 IP접근 차단 호스트웨이 2015.09.10 10056
12 외부 링크 도용을 막기 위한 아파치 설정 호스트웨이 2015.09.11 8417
11 httpd.pid 파일 오류 메시지 (20014) 호스트웨이 2015.09.12 11910
10 Apache 동시접속자 수 알아내기 호스트웨이 2015.09.13 9306
9 Linux LVS 사용하기 호스트웨이 2015.09.16 10288
8 Apache Log 관리 방법 (Logrotate) 호스트웨이 2015.09.17 11177
7 웹부하 테스트 - httperf 호스트웨이 2015.09.18 8988
6 Alternative PHP Cache 설치 & 설정 호스트웨이 2015.09.18 6517
5 apache - mod_url 설치 호스트웨이 2015.09.18 10287
4 cronlog 설정 호스트웨이 2015.09.18 8047