PID 생성 관련

System/Common 2012. 2. 11. 12:51

프로세스 pid 기록에 관한 질문입니다.

alwaysrainy의 아바타

특정 루틴을 실행하는 프로세스와 각각의 이벤트 수신을 대기하고 있는 
프로세스들이 실행중이고 이벤트 수신시에는 특정 프로세스를 kill 시켜야 
하는 경우 입니다.

저같은 경우는 현재까지도 이러한 경우 프로세스 생성시에 모든 pid를
공유 메모리 상에 기록하고 필요시에 참조하는 방식을 사용하였는데
많은 개발자들이 이러한 경우 파이프나, 파일에 pid를 기록해 놓는 방식을
사용하고 있는 것 같습니다.

이러한 경우 특정한 룰(?)을 따라서 개발을 하여야 하는 것인지요?
제 짧은 지시으로는 구지 디스크를 억세스해야할 필요는 없을 듯 한데..

답변 부탁 드립니다.


 용도에 맞게 쓰시면 됩니다.내부적으로 자식프로세스를 관리하기 위해 

용도에 맞게 쓰시면 됩니다.

내부적으로 자식프로세스를 관리하기 위해서라면
파일보다는 메모리에서 쌓아두고 관리하는게 좋습니다.

외부적으로 특정 프로세스가 실행중이다라는걸 알려줄 필요가 있을때 /var/run/????.pid 파일에 pid 값을 쓰는 방법을 사용합니다.

다른 특정 프로세스가 /var/run/????.pid 파일이 존재하는지 확인하고 특정 작업을 수행한다던지를 할 수 있으니까요. 

사견을 적어보자면파일로 저장하는 대부분의 이유는 쉘스크립트로 확인 

사견을 적어보자면

파일로 저장하는 대부분의 이유는 쉘스크립트로 확인하기 위함인 듯 하네요.
프로세스 start/stop/restart 하는 기능을 갖고 있는건 보통 쉘스크립트 이기때문에 파일에 아스키 형식으로 저장되어 있는게 좋져.

"파일을 사용할 필요가 없으면 공유메모리로..." 라는 공식보다는 "메모리에 기록할 정도의 고속이 필요 없다면 파일로..." 라는 공식이 맞는 듯 합니다. 
요즘은 메모리가 크다고 해도 사실 파일보다 메모리가 좀 더 제한된 리소스에 속할 뿐만 아니라, 공유메모리는 일반 프로세스 메모리와 달리 강제로 삭제 해 주어야 하고, 또 동시에 생성할 수 있는 공유메모리 개수도 커널에 의존적으로 제한되어 있고, 한번 생성하면 사이즈도 고정되고, 공유메모리에 대한 정보를 커널이 계속 관리하고 있어야 하는 등 문제로 인해 pid 정도의 아주 작은 정보이면서 엑세스가 고속일 필요가 없는 정보를 공유메모리에 저장할 필요가 없을 듯 하군요.
디스크 IO 가 일어나는게 찜찜하다면 리눅스의 /dev/shm 과 같은 램디스크를 사용하시는게 더 좋을 듯 하군요.
디스크 IO 와 같은 스트림 방식이 싫으시다면 mmap 을 사용하셔도 될 듯 하네요.


출처 - http://kldp.org/node/41498 


Posted by linuxism
,

JServ 설치

Web/Common 2012. 2. 10. 16:49

JServ 설치

김민식 <minskim@bawi.org>

1999년 2월 24일


JServ는 Apache에서 servlet을 사용할 수 있도록 해 주는 모듈이다. 이 모듈은 아파치와 함께 컴파일할 수도 있고, 동적 모듈로 만들어 이를 지원하는 아파치에서 적재할 수 있도록 만들 수도 있다. 이 글에서는 두 가지 경우에 대하여 Jserv 1.1을 설치하는 방법을 설명한다.

1. 소개

JServ는 아파치 웹써버에서 자바 써블릿을 사용할 수 있게 해 준다. 써블릿은 `써버에서 실행되는 애플릿'으로 생각하면 된다. 써블릿은 웹서버에서 바로 실행되므로 새로운 프로세스를 만들어 실행하는 CGI에 비해 효율면에서 월등히 우수하다.

2. 필요한 것

JServ를 사용하려면 다음과 같은 것들이 필요하다.

3. 컴파일

JServ는 두 가지 방법으로 사용할 수 있다. 첫번째는 아파치에 직접 포함시켜 컴파일을 하는 것이고, 두번째는 동적 로딩 모듈로 만드는 것이다. 두번째 방법을 사용하려면 기존의 아파치가 동적 모듈을 지원하여야 한다. RPM 등의 패키지로 배포되는 아파치는 대부분 이 기능을 지원하고 있으며, 직접 아파치를 컴파일한다면 configure 명령 실행시에 다음 옵션을 주면 된다.

--enable-rule=SHARED_CORE --enable-module=so

어떤 방식으로 JServ를 이용할 지를 결정하고, 그에 맞춰 아파치를 설정했다면 이제 JServ를 컴파일 할 차례이다. 그러기 위해서는 configure 명령 실행시에 컴파일 과정의 여러 옵션을 결정해 주어야 한다.

3.1 설치 디렉토리

Jserv가 설치될 곳을 다음 옵션으로 정해 준다.

--prefix=/usr/local/jserv
여기에는 실제로 JServ 모듈이 저장되는 것이 아니라 JServ 관련 문서들만이 저장된다. 설치과정이 끝난 후에는 이 곳에 docs라는 디렉토리만 생긴 것을 볼 수 있을 것이다. Jserv 모듈 자체는 아파치와 함께 컴파일되거나 아파치의 동적 모듈이 저장되는 곳(libexec)에 함께 저장된다. 그 외의 JServ 설정 파일들은 아파치 설정파일이 있는 디렉토리(conf) 안의 jserv란 디렉토리에 저장된다.

3.2 아파치 디렉토리

JServ를 동적 모듈로 만들기로 했다면 아파치가 설치되어 있는 곳을 알려주어야 한다. 동적 모듈을 만들 때 아파치에서 제공하는 apxs라는 툴을 사용하기 때문이다. JServ 1.1에서는 다음 옵션을 사용하여 apxs의 위치를 절대경로로 적어 주어야 한다.

--with-apxs=/path/to/apache/installation/bin/apxs

apxs는 아파치가 설치될 때 하위 디렉토리로 생성되는 bin 디렉토리에 있으므로 쉽게 찾을 수 있을 것이다.

JServ를 동적 모듈로 사용하지 않고 아파치에 직접 컴파일해 넣으려면 다음 옵션을 추가한다.

--with-apache-src=/path/to/apache/source

뒷 부분의 경로는 실제 자신의 씨스템에 맞춰 설정하여야 한다.

3.3 JDK

만일 JDK_HOME이나 JAVA_HOME 등의 환경 변수가 미리 정의되어 있다면 다음 설정으로 넘어가도 좋다. 하지만 그렇지 않다면 JDK가 있는 곳을 다음 옵션으로 알려주어야 한다.

--with-jdk-home=/path/to/jdk

3.4 JSDK

CLASSPATH 환경 변수가 JSDK를 사용할 수 있도록 설정되어 있지 않다면 다음 옵션으로 JSDK의 위치도 설정해 주어야 한다.

--with-JSDK=/path/to/jsdk.jar

필요한 모든 옵션을 주고 configure를 실행시키면 컴파일 준비가 끝난다. 이제 makemake install 명령을 실행시키면 컴파일 및 설치가 완료된다. 만일 아파치에 직접 컴파일해 넣는 방법을 쓰고 있다면 아파치도 설치하는 것을 잊지 말자. 이 경우 아파치의 configure 실행시에 다음 옵션을 주어야 한다.

--activate-module=src/modules/jserv/libjserv.a

4. 시험

실제로 JServ가 동작하는지 시험해보자. JServ를 컴파일한 디렉토리에 보면 example이란 디렉토리가 있을 것이다. 그 안에 jserv.conf란 파일이 있는데, 이것을 httpd.conf에 포함시켜주면 JServ를 시험해 볼 수 있다. httpd.conf에 다음 줄을 추가하면 아파치에서 jserv.conf를 읽어들이게 된다.

Include conf/jserv/jserv.conf

JServ를 제대로 설치했다면 아파치 설정 파일들이 들어 있는 디렉토리 밑에 jserv란 디렉토리가 새로 생기고, 그 안에 jserv.conf가 있으니 그 경로를 적어 주면 된다.

마지막으로 할 일은 로그 파일이 저장되는 디렉토리에 JServ가 파일을 써 넣을 수 있도록 하는 것이다. 대개의 경우 웹써버를 nobody로 실행하므로 nobody에게 쓰기 권한을 열어주면 된다. JServ의 로그 파일은 아파치의 로그 파일과 같은 곳에 저장되므로 해당 디렉토리를 nobody의 소유로 만드는 것이 가장 간단한 방법이다.

이제 아파치를 새로 띄우고, 브라우져에서 다음 URL을 입력해 보라.

http://ServerName:port/servlets/Hello

ServerName과 port를 맞게 주었다면 JServ가 동작하고 있다는 글을 볼 수 있을 것이다.

5. 이 문서에 대하여

이 문서의 최신판은 WebDox에서 찾아볼 수 있으며, HTML 및 포스트스크립트 파일로 제공된다.

출처 - http://wiki.kldp.org/wiki.php/LinuxdocSgml/JServ-KLDP

'Web > Common' 카테고리의 다른 글

URI & URL  (0) 2012.02.11
MIME  (0) 2012.02.11
웹 접근성  (0) 2012.02.05
랜더링(rendering), 랜더링엔진(rendering engine), 레이아웃 엔진(layout engine)  (0) 2012.01.24
AOL, 넷스케이프 개발 중단  (0) 2012.01.23
Posted by linuxism
,

mod_jk 사용법

Web/WAS 2012. 2. 10. 16:14

The Jakarta Project The mighty Tomcat - Meow!

mod_jk 사용법

By Gal Shachor <shachor@il.ibm.com>
Trans By Kenu <heogn@shinbiro.com>

목차


mod_jk?

mod_jk 는 이전의 mod_jserv의 대치용입니다. Tomcat 과 Apache 를 연동하는 아주 새로운 Tomcat-Apache plugin 입니다.


왜 mod_jk?

여러 이유:

  • mod_jserv 는 너무 복잡해. Apache/JServ로부터 나왔기 때문에, Apache에 필요없는 수많은 JServ 용 코드가 있습니다.
  • mod_jserv 는 오직 Apache에만. Tomcat 은 jk 라이브러리를 통해 많은 웹서버를 지원합니다. 지원, 문서화, 버그 수정의 측면에서 두가지 다른 작업모드를 지원한다는 것은 문제 많을 여지가 있습니다. mod_jk 는 그것을 수정합니다.
  • jk library 의 계층화된 접근법은 Apache1.3.x Apache2.xx. 모두를 보다 쉽게 지원합니다.
  • SSL을 보다 강력하게 지원. mod_jserv HTTP 와 HTTPS 각각의 요청을 구분하지 못합니다. mod_jk 는 새로운 Ajpv13 protocol을 사용해서 구분해서 처리합니다.

왜 쓸까?

새롭고 단순한 설치기법을 알 필요가 있겠죠. 이 기법을 알게된다면 IIS나 Netscape 같은 웹서버에 Tomcat을 연동할 때 아주 쉽게 할 수 있을 것입니다.


정의와 용어

이 문서에서 사용되는 단어들의 뜻은 다음과 같습니다:

용어

의미

Worker process

worker는 웹서버로부터의서블릿 요청을 처리하기 위해 동작하는 tomcat 인스턴스입니다. 대부분 하나의 worker 가 있습니다(하나의 유일한 tomcat process).그러나 때로는 load 밸런싱이나 site 파티셔닝을 위해 여러개의 worker를 띄우게 됩니다. 각각의 worker 는 자신이 자리잡은 호스트, 열려있는 포트, 메시지 교환에 사용되는 통신프로토콜에 의해 웹서버에서 구분되어집니다.

In process worker

특별한 worker입니다. 다른 프로세스에 상주하고있는 Tomcat process 와 동작하는 대신, 웹서버가 JVM을 열어서 웹서버 process 주소 공간에서 Tomcat을 내부적으로 실행합니다. 이 문서에서는 다루지 않는 내용입니다.

Web server plugin/tomcat redirector

Tomcat이 다른 웹서버와 함께 운영될 때 웹서버에 설치해서 웹서버로 들어오는 servlet 요청을 Tomcat으로 보내는 역학을 합니다. 웹서버 플러그인이고, 이 문서에서는 웹서버플러그인으로 mod_jk를 소개합니다. 이 전송자는 서버에 플러그인 되기 위해 DLL(win32) / shared object(linux) 모듈 형태로 되어 있습니다.

Plugin configuration

여러 다른 Tomcat worker가 동작할 경우 요청이 어느 곳으로 전달되야 할 지 구분하기 위해 웹서버플러그인을 설정할 필요가 있습니다. 로그레벨 같은 몇가지 내부 파라미터에 수반된 이 정보가 플러그인 설정을 구성합니다.

Web server configuration

각각의 서버는 어떻게 동작하는지 정의해주는 설정을 가지고 있습니다. 예를 들면 어느 포트를 사용하는지, 어떤 파일을 보낼지, 어떤 웹서버 플러그인을 불러와야 되는지 등등이죠. Tocmat 전달자를 불러와 사용하기 위해 웹서버 설정을 수정해주어야합니다.


Apache에서의 mod_jk 설치

설치순서는 다음과 같습니다:

  1. 이전 mod_jserv 설치를 제거합니다. mod_jk 와 mod_jserv 함께 못씁니다!!
  2. mod_jk 다운받습니다.
  3. (선택) Tomcat 에서 Ajpv13 protocol 를 사용하도록 설정합니다.
  4. mod_jk 사용할 worker 를 정의합니다.(또는 quick start 옵션을 사용합니다.)
  5. mod_jk 에 맞게 Apache를 수정합니다. 그리고 mod_jk 내부도 조정합니다. (또는 quick start 옵션 사용)
  6. Tomcat에 보내질 URL 을 지정합니다. (또는 quick start 옵션 사용)

1. mod_jserv 지시자 제거하기

Apache에 mod_jserv가 설치되었다면, httpd.conf 파일에서 ApJServMount 지시자를 모두 제거합니다. 만일 tomcat-apache.conf tomcat.conf를 포함하고 있다면 요 줄도 지워줍니다. 이것은 mod_jserv에 맞춰져 있습니다.

2. mod_jk 구하기, 만들기

Tomcat 배포판을 받았던 곳의 bin 디렉토리에서 Linux와 Win32용 Binaries 파일들 구할 수 있습니다. Linux 에서는 mod_jk.so 로, Win32에서는 mod_jk.dll 로 되어있습니다. 만들어진 mod_jk 가 없다면 손수 만드셔야죠. 소스로부터 직접 만들 수 있습니다. 먼저, Tomcat 용 Source 배포판을 다운받습니다. 다운로드 디렉토리가 무진장 많지만 jakarta-tomcat 만 찾아서 다운받으면 됩니다.

NT 에서

Visual C++ Ver.6.0으로 만듭니다. 직접 만들기 위해서는 이게 깔려있어야 됩니다.

순서는 다음과 같습니다.:

  1. apache1.3/apache2.0 소스 디렉토리로 이동합니다. 도스창에서요.
  2. APACHE1_HOME 환경변수를 Apache가 설치된 곳의 위치를 지정해줍니다.
  3. 다음과 같이 Command 줄에 입력합니다.:

    MSDEV mod_jk.dsp /MAKE ALL

    msdev 가 path에 잡혀 있지 않다면, msdev.exe의 full path를 입력합니다. 그리고, ApacheCore.lib 파일이 컴파일 되기 전에 APACHE1_HOME\src\CoreD 와 APACHE1_HOME\src\CoreR 디렉토리에 각각 있어야 합니다. 이들 라이브러리를 생성하기 위해 충분한 Apache 소스를 build 할 필요가 있습니다.
  4. 만들어진 mod_jk.dll 를 Apache의 modules 디렉토리에 복사합니다..

이것은 배포판과 디버그버전을 모두 만듭니다(mod_jk).

다른 방법: mod_jk.dsp 파일을 msdev에서 열어서 build 메뉴로 만들어도 됩니다.

UNIX 에서

Apache 용

  1. Perl 5 설치되어 있어야 합니다. 모듈을 만드는 apxs 스크립트가 Perl로 짜져있습니다.
  2. jakarta-tomcat/src/native/apache1.3 (또는 apache2.0) 로 이동합니다.
  3. apache 배포판에 있는 apxs 명령을 돌립니다. (hint: /usr/local/apache/bin, /usr/sbin, 또는 Apache 인스톨 된 곳을 찾아보세요.). 한줄로 아래 명령을 다 칩니다.

    Solaris :
    apxs -o mod_jk.so -DSOLARIS -I../jk -I/usr/java/include -I/usr/java/include/solaris -c *.c ../jk/*.c
    시스템별로 잘 되겠지만, 만일 "symbol "fdatasync" not found" 에러가 날 때가 있습니다. 수정하려면, -lposix4-c 앞에 추가해 주시면 됩니다.

    Linux:
    apxs -o mod_jk.so -I../jk -I/usr/local/jdk/include -I/usr/local/jdk/include/linux -c *.c ../jk/*.c
    소스 디렉토리가 아닌 ../jk 디렉토리에서 나온 objects 파일들이 현재 디렉토리에 컴파일되기 때문에 실패할 수도 있습니다. 그 때는 gcc -shared -o mod_jk.so *.o 를 돌려서 build 를 마쳐야 합니다.

    (다른 디렉토리에 Java를 인스톨했다면 거기에 맞춰주세요.). 끝마쳐야 합니다만 기억할 것은 apxs 에 있는 arguments들의 순서는 중요하다!는 것입니다. For other *nixes you should be able to work it out, but remember that the order of the arguments to apxs is important!.
  4. mod_jk.so 를 Apache의 libexec 디렉토리에 복사합니다.

다른 웹서버들

여러가지 Makefiles 이 jakarta-tomcat/src/native 디렉토리의 하부 디렉토리에 있습니다.

3. (선택) Tomcat에서 Ajpv13 protocol 사용하기

mod_jk 는 원본 Ajpv12 protocol 또는 새로운 Ajpv13 protocol 양쪽다 사용할 수 있습니다. 후자를 선택했다면, "Ajp13" 커넥션핸들러를 톰캣에서 동작시켜야 합니다. 이로인해 빨라진 프로토콜의 잇점과 HTTPS를 통한 요청을 구분해낼 수 있는 능력을 갖게 됩니다.

아래 코드를 TOMCAT_HOME/conf/server.xml 파일에 추가해 주십시오.
<Connector className="org.apache.tomcat.service.PoolTcpConnector">
  <Parameter name="handler" value="org.apache.tomcat.service.connector.Ajp13ConnectionHandler"/>
  <Parameter name="port" value="8009"/>
</Connector>
이미 servlet.xml 파일은 이 부분과 유사한 8007포트를 사용하는 Ajp12 connections 을 포함하고 있습니다(mod_jserv 에 의해 전달됨). Ajp13만 사용하고 싶어도, Ajp12 커넥터를 지우지 마시죠(?) - Tomcat의 shutdown에 필요하댑니다.

4. "workers" 정의하기

Quick start?

대부분 단순한 경우 Tomcat은 Apache에 필요한 환경설정 파일들을 생성합니다. Tomcat 이 구동할 때 Apache 를 위해 TOMCAT_HOME/conf/mod_jk.conf-auto 파일을 자동으로 생성합니다. 우리가 할 일은 단지 이 파일을 httpd.conf 파일에 다음과 같이 한줄을 첨가하는 것 뿐입니다.
"Include TOMCAT_HOME/conf/mod_jk.conf-auto"
Ok, 이제 Tomcat 과 Apache를 시작하면 Apache서버에서 Tomcat에 접근할 수 있습니다.

특별한 경우, 예를 들면 기본값이 아닌 URL prefixes 마운팅 시에 이 파일을 커스터마이즈된 설정의 기반으로 삼고, 다른 파일 이름으로 저장합니다. Apache를 직접 관리한다면 새로운 컨텍스트가 추가될 때마다 Apache를 Update해야합니다.

Tomcat 3.2: 새 context 를 추가한 뒤에 tomcat과 apache 모두 재시작해야합니다; Apache는 재시작해야만 변화된 설정값이 적용됩니다.
또한, TOMCAT_HOME/conf/mod_jk.conf-auto 파일은 tomcat이 시작할 때 생성되므로, Apache를 시작하기 전에 Tomcat을 시작해야합니다. Tomcat은 매번 새로 시작할 때마다 TOMCAT_HOME/conf/mod_jk.conf-auto 파일을 덮어씁니다.

수동 workers 설정.

Worker는 TOMCAT_HOME/conf/workers.properties 파일로 설정됩니다. workers.properties howto 문서에는 상당한 분량의 정보가 있고, 먼저 알고 있어야 합니다. 그러나, 급하시다면 workers.properties 파일을 편집하고 workers.tomcat_home, workers.java_home 파일과 시스템에 맞는 ps 변수값들을 세팅하지 않아도 됩니다.

5. Apache에서의 mod_jk 설치

mod_jk를 사용하기 위한 Apache 설정법은 Apache 서버 설정 지시자를 통해 이루어진다; 시작하려면 자동 생성된 Tomcat 의 conf 폴더에 있는 mod_jk.conf-auto 파일을 본다.

  • Apache 가 Tomcat을 불러오도록 지시해야 한다. Apache의 LoadModuleAddModule 설정지시자를이용한다.
  • mod_jk 가 workers.properties 파일의 위치를 알고 있어야 한다. mod_jk의 JkWorkersFile 설정지시자를 사용한다.
  • mod_jk가 사용할 log 파일의 위치와 로그 수준을 정해주어야 합니다. JkLogFileJkLogLevel 설정지시자를 사용합니다. 로그 레벨의 종류는 debug, warn, error, emerg 이며 warn은 기본값입니다.
httpd.conf 파일에서 다음과 같은 형태로 작성해주면 됩니다:
LoadModule    jk_module  libexec/mod_jk.so
AddModule     mod_jk.c
JkWorkersFile /usr/local/jakarta-tomcat/conf/workers.properties
JkLogFile     /usr/local/apache/logs/mod_jk.log
JkLogLevel    warn

6. Tomcat 호출하는 URL 할당

mod_jk의 JkMount 지시자를 사용해 지정된 URL 들을 Tomcat으로 할당할 수 있습니다. 일반적으로 JkMount 지시자의 구조는 다음과 같습니다:

JkMount <URL prefix> <Worker name>

예를 들어 다음의 지시자들은 .jsp로 끝나는 요청들이나 /servlet 으로 시작하는 모든 요청들은 "ajp13" worker로 보냅니다. 그러나 /otherworker 에 있는 .jsp 요청은 "remoteworker" 로 보냅니다.

JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
JkMount /otherworker/*.jsp remoteworker
httpd.conf 파일에서 JkMount 지시자를 Top레벨 이나 <VirtualHost> 섹션 내부에 둠으로 사용할 수 있습니다.

끝났습니다! 이제 Tomcat과 apache를 시작함으로 두 서버가 동작하면서 서블릿과 JSP 파일들을 돌릴 수 있습니다.


설정예

Here's an example configuration which probably reflects many real-world setups. A site is using Tomcat and Apache with two virtual hosts (one of them using HTTPS as well, which we're assuming is being handled by mod_ssl).

URLs ending in .jsp and beginning with /servlet are handled by Tomcat, the rest are handled by Apache. The files for each Host are server out of /web/host1 and /web/host2 respectively.

The example are over-simplified and incomplete but should get you started. Also note the virtual host setup is new in Tomcat 3.2 - this example won't work with Tomcat 3.1.

.
.
<Connector className="org.apache.tomcat.service.PoolTcpConnector">
  <Parameter name="handler" value="org.apache.tomcat.service.connector.Ajp12ConnectionHandler"/>
  <Parameter name="port" value="8007"/>
</Connector>

<Connector className="org.apache.tomcat.service.PoolTcpConnector">
  <Parameter name="handler"  value="org.apache.tomcat.service.connector.Ajp13ConnectionHandler"/>
  <Parameter name="port" value="8009"/>
</Connector>

<Host name="host1.apache.org">
  <Context path="" docBase="/web/host1" debug="0"/>
</Host>
<Host name="host2.apache.org">
  <Context path="" docBase="/web/host2" debug="0"/>
</Host>
.
.
Table 1 - Excerpt from server.xml showing the Ajp13 Connector and two virtual hosts.

# Setup for Solaris system
#
workers.tomcat_home=/usr/local/jakarta-tomcat
workers.java_home=/usr/java
ps=/
worker.list=ajp12, ajp13

# Definition for Ajp13 worker (Ajp12 left to readers imagination)
#
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
Table 2 - Excerpt from workers.properties showing the Ajp13 worker

# Load mod_jk
#
LoadModule    jk_module  libexec/mod_jk.so
AddModule     mod_jk.c

# Configure mod_jk
#
JkWorkersFile /usr/local/jakarta-tomcat/conf/workers.properties
JkLogFile     /usr/local/apache/logs/mod_jk.log
JkLogLevel    warn

# First Virtual Host.
#
<VirtualHost 10.0.0.1:80>
  DocumentRoot /web/host1
  ServerName host1.apache.org
  JkMount /*.jsp ajp13
  JkMount /servlet/* ajp13
</VirtualHost>

# Second Virtual Host. Also accessible via HTTPS
#
<VirtualHost 10.0.0.2:80>
  DocumentRoot /web/host2
  ServerName host2.apache.org
  JkMount /*.jsp ajp13
  JkMount /servlet/* ajp13
</VirtualHost>

<VirtualHost 10.0.0.2:443>
  DocumentRoot /web/host2
  ServerName host2.apache.org
  SSLEngine On
  JkMount /*.jsp ajp13
  JkMount /servlet/* ajp13
</VirtualHost>

Table 3 - Excerpt from Apaches httpd.conf showing JK directives.

Troubleshooting 과 F.A.Q.s

Q. mod_jk를 도대체 어디에서 찾을 수 있나요? 어딨어요?

A. Tomcat 의 소스 배포판을 받아서 직접 컴파일(build)해야 합니다. 자세한 내용은 이 섹션을 참고하세요

Q. 어떤 protocol 을 사용해야 합니까? Ajp12 or Ajp13?

A. Ajp13 은 새로운 프로토콜이고, 빠릅고, SSL과도 잘 동작합니다. You almost certainly want to use that. There is more information in the workers.properties howto document

Q. Tomcat 재시작할 때마다, Apache 가 죽습니다!

A. Ajp13 프로토콜은 Tomcat과 Apache 사이에서 오픈 소켓을 유지합니다. Tomcat을 재시작할 때 Apache도 역시재시작해줘야 합니다.

Q. 더 자세한 정보는?

A. The workers.properties howto 문서에는 여기보다 상당히 고급 수준의 정보가 있습니다. 한번볼만 합니다. 또는 "mod_jk" 메일링 리스트에 가입하거나 mod_jk 소스를 직접 분석하는 것이죠.

Credits

This document was created by Gal Shachor, and was revised by Mike Bremford with help from the countless many on the tomcat-dev and tomcat-user lists!

Copyright ©1999-2000 The Apache Software Foundation
Legal Stuff They Make Us Say
Contact Information





'Web > WAS' 카테고리의 다른 글

tomcat - root가 아닌 tomcat 계정으로 실행  (0) 2012.04.04
was - web.xml 설명  (0) 2012.02.12
Jakarta Project  (0) 2012.02.05
Apache Tomcat  (0) 2012.02.05
Tomcat 무분별하게 catalina.out 크기 커지는것 막기  (0) 2012.02.04
Posted by linuxism
,