Linux WEB

Apache-Tomcat Multi Instance 설정

2015.05.28 20:10

호스트웨이 조회 수:3232

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 아파치 특정폴더에 암호걸기 호스트웨이 2012.12.28 1530
62 PHP 컴파일시 에러 메세지가 나오는 경우 조치방법-2 호스트웨이 2012.12.20 494
61 PHP 컴파일시 에러 메세지가 나오는 경우 조치방법 호스트웨이 2012.12.14 2879
60 Ubuntu 아파치 웹서버에서 index.php 다운로드 창이 뜰 경우 호스트웨이 2012.12.13 1657
59 Symbolic link not allowed or link target not accessible 에러 발생 시 호스트웨이 2012.11.16 2218
58 CentOS6 64bit openssl 설치시 에러 조치사항 호스트웨이 2012.11.02 1558
57 [php] 세션 유지시간 설정하기 호스트웨이 2012.10.25 8083
56 Apache 재시작시 세션 끊어짐 현상 호스트웨이 2012.10.12 4637
55 apache 구동시 "파일 크기 제한을 초과함 $HTTPD -DSSL" 에러메시지 출력에 대한 해결방법 호스트웨이 2012.10.11 976
54 failed to open stream: Too many open files in 에러메시지 출력 시 해결방법 호스트웨이 2012.10.03 1090
53 httpd-2.4 설치하기 호스트웨이 2012.09.27 11053
52 아파치 실행시 libphp5.so 에러 호스트웨이 2012.09.14 9649
51 apache internal dummy connection 로그 생성 방지하기 호스트웨이 2012.09.06 12479
50 SSL 패스워드 삭제 하기 호스트웨이 2012.09.05 16118
49 Apache Max Client 값 수정 호스트웨이 2012.08.31 12784
48 Nginx 설치 호스트웨이 2012.08.31 10314
47 nginx - redirect 설정 호스트웨이 2012.08.24 12999
46 CentOS 6.3 에 apache, php, mysql, phpmyadmin(LAMP) 설치하기 #2 호스트웨이 2012.08.07 10742
45 CentOS 6.3 에 apache, php, mysql, phpmyAdmin(LAMP) 설치하기 #1 호스트웨이 2012.08.07 13999
44 PHP 사용 시 특정함수 사용제한 하는 방법 호스트웨이 2012.08.03 7541