(아파치 및 톰캣 설치는 생략)

1. httpd.conf 설정 (기본 서버 설정 파일)
 - 서버에서 사용할 모듈 및 전체 보안 설정 등을 관리.
  a. virtual host 및 mod_jk 설정하기.

아파치와 Tomcat을 이어주는 커넥터 파일임.
이 파일을 다운 받아 아파치 설치폴더내에 modules 폴더로 붙여넣습니다.

httpd.conf를 열어 보면 아래와 같은 내용이 있습니다.

~ 윗줄은 생략 ~
#LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule version_module modules/mod_version.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
~ 아랫줄도 생략 ~

LoadModule을 추가해야 한다. LoadMoudle 하단에 아래줄을 추가합니다.
LoadModule jk_module modules/mod_jk-1.2.27-httpd-2.2.10.so

톰캣에 관한 내용을 httpd.conf에 직접 기술하여도 되나, 효율적인 관리를 위해 http-tomcat.conf라는 파일로 따로 관리 합니다.


아파치 설치 폴더/conf/extra 내에 빨간색 박스의 파일을 추가합니다.
하나는 톰캣, 하나는 가상 호스트 파일입니다,
이 두가지 모두 httpd.conf에 직접 기술하여도 되나 관리하기 쉽지않아서
따로 설정 파일로 빼두어 불러들이는 형식으로 관리합니다.

그리고 httpd.conf 하단에
# User home directories
#Include conf/extra/httpd-userdir.conf
# Real-time info on requests and configuration
#Include conf/extra/httpd-info.conf

이런 구문이 있는데 conf 파일을 읽어들이는 부분입니다.
아래 부분을 추가해줍니다.
# Tomcat
Include conf/extra/httpd-tomcat.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf 




httpd.conf에 정의하는 부분은 끝입니다.
이제 각각의 설정파일을 세부적으로 설정해주어야 합니다.

2. httpd-tomcat.conf , workers.properties 설정.

# Where to find workers.properties
JkWorkersFile 아파치_설치_폴더/conf/workers.properties
# 따로 안빼도 되지만.. 관리 효율 증가를 위해.. properties로 뺐음.

# Where to put jk shared memory
JkShmFile     logs/mod_jk.shm

# Where to put jk logs
JkLogFile     "|아파치_설치_폴더/bin/rotatelogs.exe 로그_저장할_폴더/mod_jk_%Y-%m-%d.log 86400"
# 로그, 86400은 24시간 주기로 파일 생성하는 것.


# Set the jk log level [debug/error/info]
JkLogLevel    error
#로그 레벨
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
<Location /jkmanager/>
  JkMount jkstatus
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1 xxx.xxx.xxx.xxx
</Location>
 #Allow From은 톰캣 접근을 허용할 IP를 지칭한다. 자기 자신과 서버 컴퓨터 IP를 적는다.

- worker.properties

worker.list=tm-router, jkstatus
worker.jkstatus.type=status

worker.tomcat.port=8809
  #주의 여기서 사용하는 port는 톰캣 설정 중 ajp13 포트임.
worker.tomcat.host=localhost
worker.tomcat.type=ajp13
worker.tomcat.lbfactor=1

worker.tm-router.type=lb
worker.tm-router.balance_workers=tomcat

3. httpd-vhosts.cnf 설정.

<VirtualHost *:8787> #httpd.conf의 listner port와 같아야 함.
    ServerAdmin admin@localhost
    ServerName localhost (or your domain)
    DocumentRoot "아파치_설치_폴더/htdocs"
   
    ErrorLog  "|아파치_설치_폴더/bin/rotatelogs.exe 로그_찍을_폴더/tm-error_%Y-%m-%d.log 86400"
    CustomLog "|아파치_설치_폴더/bin/rotatelogs.exe 로그_찍을_폴더/tm-access_%Y-%m-%d.log 86400" combined

    Alias /app1 "D:/app/app1"
    # /app로 접속할 경우 d:/app/app1 폴더를 바라보게 설정하는 것. 미 설정시 htdocs를 바라본다.(기본 설정 되어있으니)
 
 <Directory "D:/app/app1">
     Options FollowSymLinks
     AllowOverride None
     Order deny,allow
     Allow from all
  </Directory>

 
  <Directory "아파치_설치_폴더/htdocs">
     Options FollowSymLinks
     AllowOverride None
     Order deny,allow
     Allow from all
  </Directory>

</VirtualHost>

설정은 모두 끝.
이제 서비스 등록 후 실행해서 로그를 살피면서 에러가 없는지 보아야 한다.

예상되는 에러는 Alias를 통해 우회시킨 폴더가 index 형태로 나오는 것.
권한이 없어 제대로 표시가 되지 않는 것.

index 형태로 나오는 것은 Directory 노드에 indexes를 제거하면 된다.



'Server' 카테고리의 다른 글

DIMM, RDIMM 등  (0) 2011.04.08
Win NT에 Apache 2.2 (Virtual host, Alias) + Tomcat 6.x 연동하기.  (0) 2010.03.31
Vitual host에 alias를 붙이니 오류가 났다..

virtual host이기 때문에 서버 설정을 바꾸는게 아니라 가상 호스트 설정만 바꾸어야 한다. (보안상..)

httpd-vhosts.conf 에서
Alias /yeory "D:/yeory/webapp1"  # Alias 설정.

<Directory "D:/yeory/webapp1">
     Options FollowSymLinks
     AllowOverride None
     Order deny,allow
     Allow from all
</Directory>


만약 가상호스팅을 하지 않고 단독으로 사용한다면 별수없이 서버 설정을 바꾸는게 맞다.
즉 httpd.conf의

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>
적색 부분을 Allow from all 바꿔주면 된다.

그리고 자신의 WebRoot로 이동했을때 기본 페이지인 index.jsp, default.jsp 등이 보여지지 않으면 서버 설정을 수정하여야 한다.

<IfModule dir_module>
    DirectoryIndex index.html index.jsp default.jsp
</IfModule>

적색 부분 처럼 자신이 작성한 기본 페이지를 추가해주면 되는 것..

'Web' 카테고리의 다른 글

Tomcat console encoding.  (0) 2010.09.01
[Script] 특수문자 강제 치환.  (0) 2010.07.23
Apache error : client denied by server configuration  (0) 2010.03.31
DWR 간단 테스트  (0) 2010.03.29
JSP 에러 모음  (0) 2010.03.29
브라우저 구분하기.  (0) 2010.03.29


Eclipse에서 Web Project 생성.

Project Name : DWR-Test

dwr.jar 파일을 Project내의 WEB-INF/lib에 넣어준다.


web.xml에 아래 내용 추가.

     dwr-invoker                  org.directwebremoting.servlet.DwrServlet                        debug               true                 dwr-invoker         /dwr/* 


중간 파란색 부분은 dwr 버전이 1.x라면 uk.ltd로 시작하는것을 servlet-class로 적어주어야만 한다. 무조건.


dwr.xml 만들기.

                                                      

<dwr> 위에 아래 docType을 추가한다. (코드 하이라이터에서 docType을 빼버려서..)
 <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">

creator에 new라는 것은 객체를 만들어서 사용한다는 것이고.. HelloTest는 jsp나 html에서 객체의 이름으로 사용할 것을 적는당.
param의 class란 java파일이므로 class라 한 것이고... value의 dwr.test.SimpleText는 java파일의 경로를 적은 것.
hello란 것은 SimpleText Class의 메소드로 hello가 있다는 것을 정의해준 것.(그냥 쓸거 정의하면 됨..)

SimpleText.java 만들기

src 아래에 패키지 만들기를 통해 dwr.test를 만든 후 test 아래에 SimpleText class를 만든다.

package dwr.test;    public class SimpleText {            public String hello(String value){                   return "Hello ~ "+value;            } }

hello는 dwr.xml에서 정의한 것(자신이 쓸 메소드)과 일치시켜주면 된다.

이제 톰캣에 Project를 올리고 서버를 실행시킨후에
http://localhost:{your_port}/{your_app}/dwr/
위 주소로 들어가게 되면 dwr.xml에 정의했던 Class 목록이 나오게 된다.

위와 똑같이 했다면 이런 화면....

그리고 HelloTest를 눌러보면은.. 아래와 같이 나오게 된다..

위 그림에서 보면 script 구문이 3줄이 있다.
DWR이 알아서 저걸 만들어 준다는 것이다.
그리고 그 아래에는 Test를 할 수 있는 부분이 있다.

WebContent/index.jsp 만들기.


<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>   


send를 클릭하게 되면 JavaScript의 test() function이 호출이 된다.
test에서는 demo에 적혀진 text를 value로 저장해 DWR에서  정의한 객체(HelloTest)의 메소드(hello)를 호출한다.
그런데 hello 메서드를 보게 되면 매개변수가 하나 였는데 script내에서는 2개이다..

why? 

이를 callback function이라 하는데, return값이 있다면 return 값을 처리하는 함수이다.
왜 저렇게 쓰냐고 하면... 그냥 간단히 하기 위해서??
왜 복잡한지 궁금하다면..

function test(){     var value = dwr.util.getValue("demo");     HelloTest.hello(value, cb_function);}function cb_function(data){     dwr.util.setValue("here", data);}


이렇게 사용하느니 그냥 줄여서 사용한다 이거다. 

위 예제는 정말 간단하게 DWR 설명이 가능한 예제이다..
jsp -> Java로 가는 대부분의 과정을 DWR이 처리해주고 있다..

무분별한 사용은 금지..
데이터가 많을 경우 메모리 급상승 최악에는 서버가 죽어버린다..

아래 링크에서 확인할 수 있다.
http://javaora.tistory.com/109



'Web' 카테고리의 다른 글

Tomcat console encoding.  (0) 2010.09.01
[Script] 특수문자 강제 치환.  (0) 2010.07.23
Apache error : client denied by server configuration  (0) 2010.03.31
DWR 간단 테스트  (0) 2010.03.29
JSP 에러 모음  (0) 2010.03.29
브라우저 구분하기.  (0) 2010.03.29

+ Recent posts