RHEL7 기반 Jboss, apache 연동 방법

1. JDK 설치

1.7.X 이상의 경우 openjdk 를 사용하는것도 무방함. 이하 (1.6.X 이하) 의 경우 oracle jdk 사용할 것을 권고 (oracle jdk 설치 시 /etc/profile.d/java.sh 생성이 필요할 수도 있음)

shell# yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

 

2. jboss 설치

http://jbossas.jboss.org/downloads

 

shell# wget http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.tar.gz

shell# tar xvzf jboss-as-7.1.1.Final.tar.gz -C /opt

 

# chkconfig service 를 위한 설정

shell# mkdir /etc/jboss-as

shell# vi /etc/jboss-as/jboss-as.conf

JBOSS_HOME=/opt/jboss-as-7.1.1.Final

JBOSS_USER=root

STARTUP_WAIT=10

SHUTDOWN_WAIT=10

 

# chkconfig service 등록 및 시작

shell# cp /opt/jboss-as-7.1.1.Final/bin/init.d/jboss-as-standalone.sh /etc/init.d/jboss

shell# chkconfig jboss on

shell# service jboss start

 

# jboss management user 수동 생성

shell# cd /opt/jboss-as-7.1.1.Final/bin

shell# ./add-user.sh

 

# 노드 추가시에는 아래 파일 복사하여 사용 가능

/opt/jboss-as-7.1.1.Final/standalone/configuration/mgmt-users.properties

/opt/jboss-as-7.1.1.Final/domain/configuration/mgmt-users.properties

 

# 기본적으로 localhost 에서만 접근 가능함으로 아래 설정 변경

shell# vi /opt/jboss-as-7.1.1.Final/standalone/configuration/standalone.xml

<interface name=”management”>

    <!– <inet-address value=”${jboss.bind.address.management:127.0.0.1}”/> –>

    <any-ipv4-address/>

</interface>

<interface name=”public”>

    <!– <inet-address value=”${jboss.bind.address:127.0.0.1}”/> –>

    <any-ipv4-address/>

</interface>

 

# .jsp 사용 가능하게

shell# vi /opt/jboss-as-7.1.1.Final/standalone/configuration/standalone.xml

<deployment-scanner path=”deployments” relative-to=”jboss.server.base.dir” scan-interval=”5000″/>

<deployment-scanner path=”deployments” relative-to=”jboss.server.base.dir” scan-interval=”5000″ auto-deploy-exploded=”true”/>

 

# ROOT directory 변경

shell# vi /opt/jboss-as-7.1.1.Final/standalone/configuration/standalone.xml

설정 부분에 아래 붉은색 추가, 수정

 

<subsystem xmlns=”urn:jboss:domain:web:1.1″ default-virtual-server=”default-host” native=”false”>

    <configuration>

        <jsp-configuration development=”true” check-interval=”1″ modification-test-interval=”1″ recompile-on-fail=”true” />

    </configuration>

    <connector name=”http” protocol=”HTTP/1.1″ scheme=”http” socket-binding=”http”/>

    <virtual-server name=”default-host” enable-welcome-root=”false”>

        <alias name=”localhost”/>

        <alias name=”example.com”/>

    </virtual-server>

</subsystem>

 

# ROOT directory 생성 및 테스트 jsp 작성 (디렉토리명이 .war 로 생성되어야 함)

shell# mkdir /opt/jboss-as-7.1.1.Final/standalone/deployments/ROOT.war

 

shell# vi /opt/jboss-as-7.1.1.Final/standalone/deployments/ROOT.war/nowTime.j

 

<%@ page contentType=”text/html; charset=UTF-8″%>

<html>

<head><title>HELLO WORLD</title></head>

<body>

현재 시간: <%= new java.util.Date() %>

</body>

</html>

 

# jsp 를 위한 환경설정 적용하여 재시작

shell# service jboss restart

 

# 기타

/var/log/jboss-as/console.log

 

3. apache + mod_jk 설치 및 연동

# apache 설치 (RHEL-7.3, apache-2.4.6)

shell# yum install httpd httpd-devel httpd-tools

 

# mod_jk 설치

shell# wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz

shell# tar xvzf tomcat-connectors-1.2.42-src.tar.gz

shell# cd tomcat-connectors-1.2.42-src/native

shell# ./configure –with-apxs=/usr/bin/apxs

shell# make

shell# make install

 

# apache mod_jk 모듈 로딩 및 mod_jk 관련 설정

shell# vi /etc/httpd/conf.d/mod_jk.conf

 

=========================================== mod_jk.conf ===========================================

# mod_jk 모듈 로드

<IfModule !mod_jk.c>

  LoadModule jk_module modules/mod_jk.so

</IfModule>

 

# jk 로그파일 위치 지정

JkLogFile logs/mod_jk.log

 

# jk 로그레벨 설정 [debug|error|info]

JkLogLevel info

 

# jk 로그 포맷 설정

JkLogStampFormat  “[%a %b %d %H:%M:%S %Y] “

JkRequestLogFormat “%w %V %T”

 

# JkOptions 지정

JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories

 

# worker 파일 위치 지정, 아래는 APACHE_HOME/conf.d 아래에 위치하는 것으로 가정

JkWorkersFile conf.d/workers.properties

 

# uri 매핑 파일 위치 지정, 아래는 APACHE_HOME/conf.d 아래에 위치하는 것으로 가정

JkMountFile conf.d/uriworkermap.properties

 

# 로드 밸런싱을 위해 shared memory 설정

# SELinux를 사용할 경우에는 문제가 발생할 수 있으므로, 이때는 run/jk.shm 으로 변경

# https://bugzilla.redhat.com/show_bug.cgi?id=225452

JkShmFile logs/jk.shm

 

# Add jkstatus for managing runtime data

<Location /jkstatus/>

    JkMount jkstatus

    Order deny,allow

    Deny from all

    # 관리자를 위한 페이지로 적절한 IP 대역으로 허용 설정

    #Allow from 127.0.0.1

    Allow from all

</Location>

=========================================== mod_jk.conf ===========================================

 

# jboss 인스턴스 연결 설정 (mod_jk.conf 에 통합 설정 가능하나 별도 파일 분리 시 주기적으로 (60) 본 파일을 reload 함으로써 설정 변경 시 apache 재시작을 하지 않아도 변경된 설정 적용이 가능하여 별도 파일로 분리할 것을 추천)

# static or dynamic mapping 방법에 따라 선택하여 설정

 

shell# vi /etc/httpd/conf.d/workers.properties

 

=========================================== workers.properties ===========================================

################################################################################################

# static mapping

################################################################################################

worker.list=jkstatus, node1, node2

worker.jkstatus.type=status

 

# define node1

worker.node1.host=192.168.22.31

worker.node1.port=8009

worker.node1.type=ajp13

 

# define node2

worker.node2.host=192.168.22.32

worker.node2.port=8009

worker.node2.type=ajp13

 

################################################################################################

# dynamic mapping (load balance)

################################################################################################

worker.list=jkstatus, wlb

# load balance 를 사용하더라도 필요하다면 개별로 worker 정의 & 사용 가능

# worker.list=jkstatus, node1, node2, wlb

worker.wlb.type=lb

worker.wlb.balance_workers=node1, node2

 

worker.jkstatus.type=status

 

# define node1

worker.node1.host=192.168.22.31

worker.node1.port=8009

worker.node1.type=ajp13

worker.node1.lbfactor=1

 

# define node2

worker.node2.host=192.168.22.32

worker.node2.port=8009

worker.node2.type=ajp13

worker.node2.lbfactor=1

=========================================== workers.properties ===========================================

 

# jboss 로 전달할 request URI 매핑 설정 (mod_jk.conf 에 통합 설정 가능하나 별도 파일 분리 시 주기적으로 (60) 본 파일을 reload 함으로써 설정 변경 시 apache 재시작을 하지 않아도 변경된 설정 적용이 가능하여 별도 파일로 분리할 것을 추천)

shell# vi /etc/httpd/conf.d/uriworkermap.properties

 

=========================================== uriworkermap.properties ===========================================

# 확장자가 .jsp, .do 파일 node1 worker 로 매핑

/*.jsp=node1

/*.do=node1

 

# 경로가 /helloworld, /helloworld 하위 경로를 node2 worker 로 매핑

/helloworld=node2

/helloworld/*=node2

 

# 경로가 /high, /high 하위 경로를 wlb worker 로 매핑

/high=wlb

/high/*=wlb

=========================================== uriworkermap.properties ===========================================

 

# 아래 예와 같이 <VirtualHost></VirtualHost> 내에 worker 를 지정하는 방법도 있음

# VirtualHost Worker 지정

<VirtualHost *:80>

  <ServerName> test.com

  <ServerAlias> www.test.com

  …

  …

 

  JkMount /*.jsp worker_name

</VirtlaHost>

 

# jboss ajp 활성화 (mod_jk <-> jboss 간 통신 프로토콜)

shell# vi /opt/jboss-as-7.1.1.Final/standalone/configuration/standalone.xml

 

        <subsystem xmlns=”urn:jboss:domain:web:1.1″ default-virtual-server=”default-host” native=”false”>

            <configuration>

              <jsp-configuration development=”true” check-interval=”1″ modification-test-interval=”1″ recompile-on-fail=”true” />

            </configuration>

            <connector name=”http” protocol=”HTTP/1.1″ scheme=”http” socket-binding=”http”/>

            <connector name=”ajp13″ protocol=”AJP/1.3″ scheme=”http” socket-binding=”ajp”/>

            <virtual-server name=”default-host” enable-welcome-root=”false”>

                <alias name=”localhost”/>

                <alias name=”example.com”/>

            </virtual-server>

        </subsystem>

 

# load balance 연동 시 jboss 추가 설정 필요

# 설정하지 않을 시 rr 방식으로 동작은 잘되지만 session 사용시에 문제가 생길 수 있음으로 설정하는 것 추천

shell# vi /opt/jboss-as-7.1.1.Final/standalone/configuration/standalone.xml

<subsystem xmlns=”urn:jboss:domain:web:1.1″ default-virtual-server=”default-host” native=”false”>

<subsystem xmlns=”urn:jboss:domain:web:1.1″ default-virtual-server=”default-host” native=”false” instance-id=”node1″>

 

*주의* instance-id=”value” value 는 호스트별로 모두 다르게 지정되어야 함

 

# 기타

/etc/httpd/logs/mod_jk.log

 

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.