728x90
반응형
 
얼마전에 설치한 JBoss의 가상 호스트 설정를 설정할 일이 생겼다. 
 
상황은 이렇다. 현재 설치된 JBoss를 이용하여 두개의 호스트네임을 두어 하나는 실제 운영을 하기 위한것이고 하나는 TEST 용으로 사용될 것이다. 바꾸어 말하자면 테스트 서버를 하나 두고 싶다는 말이다. ㅡ.ㅡ;;
 
그럼 일단 가상호스트에 대한 개념을 이해해보자.
  • 웹 서버는 서로 다른 두개의 가상 호스트를 처리한다.
  • 웹 서버는 서로 다른 두개의 가상 호스트에 대한 static content를 처리한다.
  • mod-jk는 가상 호스트에 대해서 JBoss로 HTTP Request를 요청한다.
  • JBoss에는 두 개의 서로 다른 애플리케이션이 배포되며 이 애플리케이션은 서로 다른 가상 호스트로 서비스를 제공한다.
  • 배포할 웹 애플리케이션의 jboss-web.xml 파일에는 가상 호스트 정보가 포함된다.
  • 배포할 웹 애플리케이션의 jboss-web.xml 파일에는 context root가 모두 /로 정의한다.
특히 여기에서 웹 애플리케이션이 중요하다. 가상 호스트에서 서비스를 제공하는 것이므로 모두 /로 요청을 받아야 합니다. 만약, 가상호스트를 사용하지 않는 경우 두 애클리케이션의 context root가 /인 경우 context root가 동일하기 때문에 충돌이 발생합니다. 하지만 jboss-web.xml 파일에 가상 호스트를 지정하면 충돌이 발생하지 않습니다. 이것이 중요한 포인트 입니다.
 
설정하는 방법은 Tomcat과 좀 다릅니다. 
 
%APACHE_HOME/conf/httpd.conf 파일에 가상 호스트별로 제공할 static content 경로를 지정해줘야 합니다. 이것을 지정하지 않을 경우 403에러가 발생합니다.
# Include mod_jk configuration file
Include conf/mod-jk.conf

<Directory "/usr/local/jboss/server/default/deploy/TTT_TEST.war">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<Directory "/usr/local/jboss/server/default/deploy/TTT.war">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<Directory "/usr/local/apache2/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
위 부분을 파일에 추가했습니다.
소스의 위치는 JBoss가 설치된어 현재 기동한 configuration 의 레벨 및에 있는 폴더입니다.
전 아래와같이 설치했습니다.
/usr/local/jboss/server/default/deploy/TTT.war          
                      =(사용할 호스트명)=> v1.taebal-test.co.kr
/usr/local/jboss/server/default/deploy/TTT_TEST.war  
                      =(사용할 호스트명)=> v2.taebal-test.co.ko
다음은 %APACHE_HOME/conf/httpd.conf 파일에 가상 호스트를 설정하는 부분입니다.
실제로 httpd.conf 파일에 직접 써도 되지만, 여기서는 mod_jk.conf 파일에 JBoss 연동 부분을 세팅해 놨기 때문에 mod_jk.conf 파일에 설정을 하도록 하겠습니다.
 
%APACHE_HOME/conf/mod_jk.conf 
<VirtualHost *>
    ServerAdmin XXXXX@gmail.com
    DocumentRoot /usr/local/jboss/server/default/deploy/TTT.war
    ServerName v1.XXXXX-test.co.ko
    ErrorLog logs/v1.XXXXX-test.co.ko-error.log
    CustomLog logs/v1.XXXXX-test.co.ko-access.log common

    LogLevel debug
    JkMountFile                 conf/uriworkermap_v1.properties
    <Directory "/usr/local/jboss/server/default/deploy/TTT.war/WEB-INF/">
        AllowOverride None
        deny from all
    </Directory>
        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</VirtualHost>

<VirtualHost *>
    ServerAdmin XXXXX@gmail.com
    DocumentRoot /usr/local/jboss/server/default/deploy/TTT_TEST.war
    ServerName v2.XXXXX-test.co.ko
    ErrorLog logs/v2.XXXXX-test.co.ko-error.log
    CustomLog logs/v2.XXXXX-test.co.ko-access.log common

    LogLevel debug
    JkMountFile                 conf/uriworkermap_v2.properties
    <Directory "/usr/local/jboss/server/default/deploy/TTT_TEST.war/WEB-INF/">
        AllowOverride None
        deny from all
    </Directory>
        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</VirtualHost>
파일 및에 위를 추가 했습니다. 어떤 내용인지는 설명을 드리면..
ServerAdmin : 관리자 메일
DocumentRoot : 실제 애플리케이션이 존재하는 위치
ServerName : 호스트 이름
ErrorLog : 에러 로그 생성 위치
CustomLog : 엑세스 로그 생성 위치
LogLevel : 로그 생성 레벨
JkMountFile : mod-jk의 설정파일
Directory : WEB-INF의 접근을 막음 (옵션)
Rewrite : http 로 들어오는 것을 https로 바꿔주는 역활 (옵션)
대충 위와 같은 내용입니다. 옵션이라고 적힌 부분은 필요하지 않으면 써주지 않아도 됩니다.
 
다음으로 %JBoss/server/$Configuration$/deploy/jbossweb.sar/server.xml 파일을 열어서 JBoss도 설정해줍니다. (난 $Configuration$ 의 부분이 default 이다.)
파일을 열고 아래 부분 Engine 테그 사이에 추가한다. <Host name="localhost"> 태그 위에 추가...
 <Host name="v1.XXXXX-test.co.ko">
     <Alias>v1.XXXXX-test.co.ko</Alias>
     <Valve className="org.jboss.web.tomcat.service.jca.CachedConnectionValve"
cachedConnectionManagerObjectName="jboss.jca:service=CachedConnectionManager"
transactionManagerObjectName="jboss:service=TransactionManager" ></Valve>
 </Host>

<Host name="v2.XXXXX-test.co.ko">
    <Alias>v2.XXXXX-test.co.ko</Alias>
    <Valve className="org.jboss.web.tomcat.service.jca.CachedConnectionValve"
cachedConnectionManagerObjectName="jboss.jca:service=CachedConnectionManager"
transactionManagerObjectName="jboss:service=TransactionManager" ></Valve>
</Host>
 
이렇게 하면 서버에서 설정하는 것은 모두 끝났다. 라고 생각하면 오산이다.... 

 

실제로 잘되는지 보기 위해서는 테스트 하려는 컴퓨터의 hosts 파일을 수정해야한다. 왜냐면 지정한 가상 호스트이름은 내가 임의로 지정한 이름이기 때문에 DNS서버에 등록이 되어있지 않아 IP를 찾지 못하기 때문이다. 
 
서버에서 테스트를 한다고하면...
/etc/hosts 파일을 열어 다음을 추가해준다.
192.OOO.OOO.OOO  v1.XXXXX-test.co.ko
192.OOO.OOO.OOO  v2.XXXXX-test.co.ko
 
여기서 192.OOO.OOO.OOO 은 서버 IP이다.
 
이제 마지막으로 남은 jboss-web.xml 파일의 설정을 보자.
애플리케이션에 WEB-INF/jboss-web.xml 파일을 만들고 아래처럼 설정하였다.
 
v1.XXXXX-test.co.ko
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC 
        "-//JBoss//DTD Web Application 5.0//EN" 
        "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd"> 

<jboss-web>
	<context-root>/TTT</context-root>
	<virtual-host>v1.XXXXX-test.co.ko</virtual-host>
</jboss-web>
v2.XXXXX-test.co.ko
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC 
        "-//JBoss//DTD Web Application 5.0//EN" 
        "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd"> 

<jboss-web>
	<context-root>/TTT</context-root>
	<virtual-host>v2.XXXXX-test.co.ko</virtual-host>
</jboss-web>
여기서 context root는 실제 프로젝트에서 /TTT이라고 사용을 하기 때문에 /TTT이라고 적어줬으며, 이부분이 필요없이 /로 하고싶다면 /로 적어주면 된다.
이렇게 하면 가상 호스트의 설정은 모두 끝~!!
 
부가적으로 https 를 사용한다면...%APACHE_HOME/extra/httpd-ssl.conf 을 수정해줘야한다.
mod-jk 연결해주는 파일을 가상호스트 설정시 썼던 파일로 바꿔줘야 한다. 아래 참조...
# 가상호스트 사용전 mod-jk 설정 파일
# JkMountFile conf/uriworkermap.properties 

# 가상호스트 사용 mod-jk 설정 파일 (mod_jk.conf 가상호스트 설정 부분의 파일을 적어줌)
JkMountFile conf/uriworkermap_v1.properties
JkMountFile conf/uriworkermap_v2.properties
728x90
반응형
728x90
반응형

어제 설치한 JBoss를 아파치와 연동을 하는 부분을 시도해보겠다. 일단 준비물은 아래와 같다.

1. httpd-2.2.11
     (apache 2.2.11 openssl을 이용하여 https 서비스가 가능게 설치된것)
     ---> 설치방법 바로가기
2. JBoss 5.1.0 GA 
     (5.x 버전이면 크게 상관이 없을듯하다. 4.x 버젼과 조금은 차이가 있지만....)
     ---> JBoss 설치 바로가기
3. mod_jk 1.2.28
     (apache 2.2.11 설치방법의 글을 참조해서 설치...)


아파치 설치방법에 나온것은 Tomcat 과 연동이 되도록 적혀있다. 연동설정하는 부분을 제외한 부분은 모두 동일하다. 즉, 톰켓을 연동하던 JBoss를 연동하던...설정부분만 바꿔주면 된다는 뜻...!!!!

1. %APACHE_HOME/conf/httpd.conf 수정

2. %APACHE_HOME/conf/mod-jk.conf 생성

3. %APACHE_HOME/conf/workers.properties 생성

4. %APACHE_HOME/conf/uriworkermap.properties 생성

5. %JBOSS_HOME/server/default/deploy/jbossweb.sar/server.xml 수정

6. %APACHE_HOME/conf/extra/httpd-ssl.conf 수정 
(https 통신을 위한 설정 - https가 필요없다면 하지 않아도 된다.)

7. apache 구동

8. JBoss 구동

※ 주의
 JBoss만 구동하여 외부에서 접속하기 위해서는 구동시 -b 옵션으로 서버IP를 설정해야 하지만, 아파치와 연동시 -b 옵션을 주게되면 아파치와 연동이 안된다.
 %APACHE_HOME/conf/workers.properties 파일에서 설정한 host 부분때문인것 같은데, host 부분이 localhost로 되어있기때문에 127.0.0.1의 호출로 JBoss를 연결하지 못하기 때문인듯하다. 외부에서 직접 JBoss의 접속을 사용하지 않는다면 그냥 설정한데로 사용하면 될듯!!!

9. https://[서버]/jmx-console/ 테스트



10. https://[서버]/web-console/ 테스트


위 테스트는 https 를이용하여 접속한것이기 때문에 주소창이 빨강색으로 표시된다. https 를 사용하지 않고 하는 방법은 위에 https 설정만 빼고 하면 된다.
728x90
반응형
728x90
반응형


JBoss ... 일단 난 처음 들었다. 그래서 자료를 이리 저리 찾아봤는데.. tomcat과 상당히 유사한 웹서버이네..하지만 틀린것은 EJB를 무난하게 돌아가게 할수있다는거...그리고 오픈소스이지만, tomcat보다 관리적인 측면에서 좋다는거, 또 따지고 들어가면...메인터넌스가 있다는거...즉, 오픈소스라서 맘대로 가져다 사용해도 되지만, 관리를 받을려면 돈을 내고 관리받을수 있다. 유지보스 측면인가..?? 그리고 중요한건 Tomcat을 WAS라고 말하기 좀 뭐한 감이 있는데, 이건 WAS라고 말할수 있을듯...

아무튼 JBoss 북미지역에서는 점유율이 상당하다고 한다. 우리나라는 제우스, 웹투비를 많이 사용하지만...요즘 점점 들어가는 추세라고 하며, 일본도 꽤 많이 사용하고 있다고 한다. 레드헷에서 인수를 해서 지금 현재 레드헷리눅스 계열에서 굉장히 좋은 호환성을 보여주고 있는듯 하다.

그럼 일단 설치를 해보자. 설치는 굉장히 간단하다. 

1. JBoss 사이트에서 다운로드를 받는다. (http://www.jboss.org/)
    - 참고로 다운로드 받는 부분이 보이지 않는다...;;;; 
       열심히 이리저리 클릭해본 결과...아래 사이트로 들어가면 된다.
    
    - 난 여기서 5.1.0.GA 를 다운받았다. ( Description  이 Stable  인것이 정식 버젼인듯...)

2. 다운받은 파일의 압축을 풀자. 

3. 그리고 적당한 위치로 가져다 둔다음... JAVA_HOME 경로를 지정해주자.
- 윈도우의 경우 환경변수로 지정해두기를 권장함
- 리눅스의 경우 .bash_profile 에 설정한다. (아래 .bash_profile 파일 참조)
   --> JAVA_HOME 뿐만 아니라 JBOSS_HOME 도 설정해두자.

- 리눅스의 경우 jboss 라고 소프트 링크를 걸어 두는것이 좋다.
[root@Cent5JBossServer local]# ls -l
合計 152
lrwxrwxrwx  1 root root   16  6月 12 17:53 ant -> apache-ant-1.7.1
drwxr-xr-x  6 root root 4096  6月 27  2008 apache-ant-1.7.1
drwxr-xr-x 15 root root 4096  6月 26 15:03 apache2
drwxr-xr-x 15 root root 4096  6月 12 17:54 apache2.bak
drwxr-xr-x 15 root root 4096  6月 26 10:27 apache2.bak.ssl1
drwxr-xr-x  2 root root 4096  6月 26 09:58 bin
drwxr-xr-x  2 root root 4096  3月 10 07:42 etc
drwxr-xr-x  2 root root 4096  3月 10 07:42 games
drwxr-xr-x  3 root root 4096  6月 26 09:58 include
lrwxrwxrwx  1 root root   12  6月 12 17:49 java -> jdk1.6.0_14/
lrwxrwxrwx  1 root root   14  7月 16 11:27 jboss -> jboss-5.1.0.GA
drwxr-xr-x  8 root root 4096  5月 23 17:59 jboss-5.1.0.GA

drwxr-xr-x 10 root root 4096  6月 12 17:37 jdk1.6.0_14
drwxr-xr-x  4 root root 4096  6月 26 09:58 lib
drwxr-xr-x  2 root root 4096  3月 10 07:42 libexec
drwxr-xr-x  6 root root 4096  6月 26 16:36 openssl
drwxr-xr-x  2 root root 4096  3月 10 07:42 sbin
drwxr-xr-x  4 root root 4096  3月 10 07:42 share
drwxr-xr-x  2 root root 4096  3月 10 07:42 src
[root@Cent5JBossServer local]# pwd
/usr/local


4. 실행은 JBoss가 설치된 bin 폴더 및에 run.bat(윈도우) 또는 run.sh(리눅스)를 실행 시킨다.
- 실행시 참고 사항
run.sh -c minimal <enter> -> minimal로 configuration으로 구성된 서버 실행
run.sh -c all <enter>       -> all configuration으로 구성된 서버 실행
run.sh <enter>              
-> default configuration으로 구성된 서버 실행

- IP 바인딩 : JBoss를 구동시 IP 바인딩을 할수있는데, 좀 중요한 부분이다. 예를들어 그냥 run.sh를 실행 하였다면, 외부에서 접속이 안된다. 이것은 127.0.0.1 로 IP가 바인딩되었기 때문이다. 만약 외부에서 접속을 하려면, -b [IP] 옵션을 주면 된다.
(아파치랑 연동을 한다면 -b 옵션을 줘서는 안된다.)

5. 실행이 되었다면 http://localhost:8080 으로 접속한다. 설치는 쉽게 완료~!!!!!

(아래 화면은 외부에서 접속하기위해 구동시 -b 옵션을 주고 구동한후, 외부에서 접속한 화면이다.)

728x90
반응형

+ Recent posts