본문 바로가기

Cloud/Middleware

[Apache Tomcat] 설치 방법, WEB/WAS 시스템 연계

Apache

클라이언트(웹 브라우저)로부터 HTTP 요청을 처리하는 웹 서버 S/W


Apache Tomcat

Java 기반의 Web Application을 위해 주로 Apache와 함께 쓰이는 S/W


둘 다 오픈소스 S/W 그룹인 Apache 소프트웨어 재단에서 만들고 관리하고 있습니다.

 

확장성이 좋고 다양한 운영체제에서 구동 가능하여

중소규모부터 대규모까지 널리 사용되는 미들웨어 제품이라고 보시면 됩니다.

 

 

 

최근 윈도우 환경에 Apache/Tomcat 구성 요청을 받은 김에, 정리 삼아 포스팅 해봅니다 !

 


1. Apache 설치

 

 

Apache 다운로드 URL : https://www.apachelounge.com/download/

 

Apache 다운로드 홈페이지에서

Windows용 설치 파일, 그리고 아래 위치한 mod_jk 모듈 설치 파일을 다운 받아야 합니다.

 

Apache와 Tomcat은 각 WEB/WAS 시스템으로 구성하는게 일반적인데,

저 mod_jk가 Apache의 Tomcat 커넥터 역할을 해주는 모듈입니다.

 

 

 

다운 받은 Apache와 mod_jk 설치 파일은 WEB 서버에 압축 해제해주면 됩니다.

당연히 운영 환경에서는 Apache용 WEB 서버 / Tomcat용 WAS 가 나뉘어 있어야 합니다 !

 

 

 

 

conf/httpd.conf

Apache의 핵심 기능인 HTTP의 주요 설정 파일

 

 

설치 대상에 Apache 설치파일을 압축 해제하면 다양한 설정 파일이 보이는데요.

그중 conf 경로에 가면 httpd.conf 파일이 있습니다.

 

이 파일을 열고 설정을 잡아줘야 해요

 

 

 


Define SRVROOT "D:\Apache24"    // Apache의 root 참조용 디렉토리 설정(실제 경로)
Listen 80    // Apache의 클라이언트 요청 처리 포트
ServerName localhost    // Apache 서버의 호스트 이름 지정
ServerTokens Prod    // Apache HTTP 응답 헤더 반환 값의 범위를 정함
ServerSignature Off    // Apache 버전 정보 웹 브라우저 노출 여부

 

초기 설정은 위와 같이 5개로 확인하면 되는데,

저중에 상단 3개 옵션은 가장 기본적인 구성 옵션입니다.

 

주석으로 간단하게 설명을 달았지만,

ServereTokens, ServerSignature에 대한 상세 설명은 아래 URL로 참고하세요.

https://smallrich.tistory.com/85

 

 

 

 

 

 


> httpd -k install    // 설치
> httpd -k start    // 시작
> httpd -k stop    // 중지
> httpd -k restart    // 재실행

 

기본 설정을 마쳤다면

이제 Apache를 실제 설치하는 작업 진행하면 됩니다.

 

CMD(관리자 권한 실행) 창에서 Apache24 폴더가 있는 위치로 이동 후 아래 명령어 수행

httpd -k install

 

 

설치가 완료되면 아래처럼 Windows 서비스가 생성되어 있을 겁니다.

 

 

 

이제 Apache가 설치된 서버 안에서

웹 브라우저로 아래 링크를 들어가면 기본 문구(It works!)를 볼 수 있습니다ㅎㅎ

 

http://localhost:80

 

다른 PC나 서버에서 접근하게 하려면 웹 서버로 방화벽이 허용되어 있어야 해요.

운영 환경은 HTTPS/443 도 구성해야 하지만, 그건 다음에 포스팅 해볼게요.

 

 

 


2. Apache Tomcat 설치

 

 

Apache Tomcat 다운로드 URL : https://tomcat.apache.org/

 

이번엔 Apache Tomcat 설치를 해보겠습니다.

 

원하는 버전의 Download 버튼을 클릭하면 되는데,

각 버전마다 지원하는 서블렛이나 JSP 환경이 다르니 미리 꼭 확인해보세요 !

 

 

 

 

Tomcat은 서버에 Java를 함께 설치해줘야 합니다.

 

Java는 openJDK를 직접 검색해서 찾아도 좋고,

저같은 경우는 개발에 사용할 Java 파일을 개발자에게 전달 받았습니다.

 

우선, Tomcat과 Java 설치 파일을 대상 서버의 각 데이터 경로에 압축 해제 해주시면 됩니다.

 

 

 

 

시스템 변수 등록(Java, Tomcat)

 

ㅋㅋㅋ 학부 때 자주했던 JAVA 변수 등록하기

 

Java 파일을 설치했다면

시스템 변수에 아래 내용을 추가해줍니다.

 

 


 

내 PC 속성 → 고급 시스템 설정 → 시스템 속성 → [고급] 탭 → 환경 변수

사용자 변수가 아닌, 시스템 변수에서 아래대로 추가/편집 진행 !

 

01. JAVA_HOME 변수 추가

변수 이름 : JAVA_HOME

변수 값 : D:\openlogic-openjdk-8u432-b06-windows-x64

 

 

02. CLASSPATH 변수 추가

변수 이름 : CLASSPATH

변수 값 : D:\openlogic-openjdk-8u432-b06-windows-x64\lib

 

※ 위 변수 값들은 Java가 설치된 실제 경로이므로 환경마다 다릅니다.

 

 

03. Path 편집

변수 이름 : Path

변수 값만 추가 : %JAVA_HOME%\bin

 


 

시스템 변수 작업은 아래에서 한 번 더 할거예요 ㅋㅋ

 

 

 

 

conf/server.xml

Tomcat 서버 구성 파일

 

 

이번엔 Apache와 마찬가지로 Tomcat의 설정 파일도 구성해줘야 합니다.

server.xml에서 <Connector Port 부분을 찾아 사진처럼 구성되어 있는지 봐주세요 !

 

커넥터로서 8080 포트 통해 Tomcat을 서비스하겠다는 의미입니다.

 

 

 

 

Tomcat은 WEB 서버로부터 AJP 프로토콜을 통해 8009 포트로 요청 받도록 설정됩니다.

이건 처음에 주석처리 되어 있을텐데, WEB 서버와 통신을 위해 해제해야 합니다.
주로 8009 포트를 쓰지만, 사용자 구성에 따라 변경 가능합니다.

 

*

AJP WEB 서버와 서블릿 컨테이너 간의 바이너리 프로토콜

 

설정을 마쳤다면, 이제 Tomcat도 시스템 변수에 등록을 해줘야 합니다.

 

 

 

 


 

내 PC 속성 → 고급 시스템 설정 → 시스템 속성 → [고급] 탭 → 환경 변수

사용자 변수가 아닌, 시스템 변수에서 아래대로 추가/편집 진행 !

 

01. CATALINA_HOME 변수 추가

변수 이름 : CATALINA_HOME

변수 값 : D:\apache-tomcat-9.0.98

 

※ 변수 값은 Java 설치된 실제 경로이므로 환경마다 다릅니다.

 

 

02. Path 편집

변수 이름 : Path

변수 값만 추가 : %CATALINA_HOME%\bin

 


 

 

 

 

 

 

이제 마찬가지로 Tomcat 설치하는 작업 진행하면 됩니다.

 

CMD(관리자 권한 실행) 창에서 Tomcat의 bin 폴더가 있는 위치로 이동 후,

service.bat install

 

 

 

 

 

그럼 사진과 같이 Windows 서비스에 Tomcat이 생성되고,

웹 브라우저에서 아래 링크로 접속했을 때 Tomcat 구동된걸 확인할 수 있어요 !

http://localhost:8080

 

 

 


 

3. Apache 및 Tomcat 연계

 

 

이제 각각 설치한 Apache와 Tomcat을 서로 연동하도록 구성해야 합니다.

맨 처음 Apache 설치 시, mod_jk도 같이 다운 받도록 말씀 드렸었죠.

 

일반적으로 Apache Tomcat 구성 시,
AJP 프로토콜을 통한 mod_jk 모듈을 구동하여 Apache <-> Tomcat 간 연동하는 방식이예요.

 

*

mod_jk Apache HTTP Server와 Tomcat 간의 연결을 관리하는 Apache 모듈

 

 

 

따라서 Apache 설정에서 mod_jk 모듈을 로드해줘야 합니다.

 

httpd.conf에서 직접 mod_jk 모듈을 로드해도 되고,

저처럼 별도의 httpd-jk.conf 파일을 따로 만들어서 httpd.conf 안에 Include로 선언해줘도 됩니다.

 

 

 

 

conf/extra/httpd-jk.conf

 


LoadModule jk_module modules/mod_jk.so    // mod_jk 라이브러리가 위치한 경로를 JK 모듈로서 로드

<IfModule jk_module>
JkworkersFile conf/extra/workers.properties     // Tomcat의 Worker 설정 정보를 담은 파일

JkMount /* worker1     // 모든 URL 요청에 대해 worker1을 사용하겠다는 의미

JkLogFile logs/mod_jk.log     // JK 커넥터의 로그가 기록될 파일 경로
JkLogLevel info    // JK 커넥터의 로그 레벨 설정. debug, info, warn, error
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "     // 로그에 기록될 타임스탬프 형식
JkRequestLogFormat "%w %V %T"     // 요청 로그 출력 포맷 지정
JkShmFile logs/mod_jk.shm     // 공유 메모리(shm) 파일 경로
JkWatchdogInterval 60     // JK 커넥터의 워치독 시간(초), Tomcat 연결 상태를 주기적으로 체크
</IfModule>

 

 

 

jk_module JK Connector가 Apache 웹 서버와 Tomcat 사이 통신을 담당하는 모듈
JK Connector Apache 웹 서버와 WAS가 함께 동작하도록 도와주는 브릿지 역할의 S/W

 

 

위 설정은 모든 URL 요청을 worker1 로 사용하지만,

특정 웹 리소스에 접근하도록 요구사항이 있다면

대상 경로는 JkUnMount 로 예외해두면 됩니다.

 

예시)

JkUnMount   /path/*  worker1

 

 

 

 

conf/extra/workers.properties

 


worker.list=worker1     // Tomcat 워커의 이름을 'worker1'로 정의

worker.worker1.type=ajp13     // APJ 프로토콜 버전 1.3 사용
worker.worker1.host=[Tomcat IP]     // Apache가 바라볼 WAS의 IP. 각진 괄호는 제외하고 작성
worker.worker1.port=8009     // AJP가 요청받을 포트. 즉, Apache는 Tomcat에게 8009 포트로 통신
worker.worker1.connection_ping_interval=10000     // Tomcat 워커와 JK 커넥터 간의 Keep-Alive 체크(밀리 초)
worker.worker1.socket_keepalive=true     // 소켓 연결의 유효성 주기적 체크 허용
worker.worker1.connect_timeout=10000     // Tomcat 워커의 연결이 시도된 후 대기하는 시간(밀리 초)

 

 

위에서 Tomcat이 8009 포트로 수신을 받도록 설정했었죠,

위와 같이 Apache에서도 Tomcat 워커에게 8009 포트로 요청하도록 설정해준다고 보면 됩니다.

 

 

 

 

여기까지 WEB/WAS 간의 연계까지 초기 마무리 되어

개발자가 개발할 수 있는 기본적인 환경은 만들어졌습니다.

 

다음 번엔 Apache HTTPS/443 구성이나 인증서 관련된 내용도 한 번 포스팅 해보겠습니다:)