작성 이유
기존에 Springboot + Thymeleaf 구조로 프론트가 서버사이드 언어였기때문에 크게 분리를 할 필요를 못느꼈었다.
그러나 큰 규모의 프로젝트에서는 보안을 위하여 web(외부), was(내부) 구분을 하도록 되어있다.
나또한 이런 환경 구성을 할 일이 생겨서 작업했던 내용을 기억하기 위하여 작성한다.
리눅스 버전을 확인하고싶으면 아래 글로 가시면 됩니다.
2024.01.30 - [infra/기타] - WEB/WAS 분리 셋팅
WEB/WAS 분리 셋팅
작업 환경 - java8, tomcat8, springboot, thymleaf Apache 설치 1. gcc, c++ 설치 $ yum install -y gcc gcc-c++ mod_ssl 2. tomcat-connector.tar 업로드 및 압축 해제 3. Apache 설치 $ yum insatll -y httpd $ yum install -y httpd-devl $ yum install
tistory.slowtuttle.co.kr
적용 환경
우선 로컬에서 테스트해보기 위하여 window 버전으로 설치
혹시 모르니 파일은 업로드 해놓음!
(tomcat은 무거워서 7zip으로 분할압축...)
여기서 유의해야될점은 jdk 버전에 따라서 tomcat 버전이 달라짐 (사용자마다 다르니 확인 요망)
폴더 구조
apacheTomcatSeparation ㅡ httpd-2.4.61-240703-win64-VS17 (Apache)
ㄴ apache-tomcat-10.1.25 (Tomcat)
ㄴ tomcat-connectors-1.2.49-src (Connector)
ㄴ mod_jk-1.2.49-win64-VS17 (modjk)
작업을 하면서 폴더 이름들이 길기때문에 Apache, Tomcat, Connector, modjk 로 작성할 예정!
Tomcat 설정
1. webapps 내용 삭제
경로 : tomcat/webapps
webapps 하위에 있는 내용들은 필요없기때문에 전부 삭제
(tomcat 의 deploy 경로는 일반적으로 ./webapps/ROOT.war 파일)
2. server.xml 파일 수정
경로 : tomcat/conf/server.xml
- tomcat 버전마다 다르겠지만 AJP로 작성되어있는 부분 주석 해제
- 현재 한대의 pc 에서 돌리기때문에 address 는 127.0.0.1로 작성
- secretRequired는 기본적으로 존재하지 않았는데, 없으면 true로 판단하는듯함. false로 작성 필요

3. 기존 8080 소스 주석
- 내부망에 위치하게되면 일반적으로 막히게 되어서 큰 문제는 없지만, 의미없는 포트를 열어놓는 경우라 주석처리

추가적으로 콘솔에서 한글이 깨지는 모습을 보기 싫으니 아래와같이 수정하자
2024.01.16 - [BE/Tomcat] - Tomcat 한글 깨짐
Tomcat 한글 깨짐
Tomcat을 처음 기동하면 catalina.out에 나오는 로그의 한글이 깨짐..... 그게 문제는 안되지만 불편해서 수정하기로함!!! tomcat/conf/logging.application 파일에 URF-8 을 EUC-KR로 변경 # Licensed to the Apache Software
tistory.slowtuttle.co.kr
Apache 설정
1. mod_jk.so 파일 복사
- mod_jk.so 파일을 /module 안에 붙여넣기

2. workers.properties 셋팅
경로 : Apache/conf/workers.properties
workers는 apache에서 어떤 tomcat 설정으로 정보를 연동할지 셋팅해주는 역할
- 아래 설정 항목을 생성
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009

3. httpd.conf 수정
경로 : Apache/conf/httpd-conf
- 1번에서 등록해놓은 worker 정보를 사용하기위하여 아래 설정 추가
#mod_jk 모듈 설정
LoadModule jk_module modules/mod_jk.so
JkworkersFile conf/workers.properties
JkMount /* worker1
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkRequestLogFormat "%w %V %T"

4. httpd-vhosts.conf 파일 수정
경로 : Apache/conf/extra/httpd-vhosts.conf
- 앞에서 트레픽을 받아서 분기해줄 가상 호스트 파일 추가
<VirtualHost *:8009>
ServerAdmin admin
# tomcat 설치 경로 (절대경로로 쓰는게 안전할듯)
DocumentRoot "C:/dev/test/apacheTomcatSeparation/apache-tomcat-9.0.90/webapps/ROOT.war"
ErrorLog "logs/example-project-error.log"
CustomLog "logs/example-project-access.log"
</VirtualHost>
실행하기
1. Apache 기동
a. 아파치를 설치한 경로로 이동
- C:\dev\test\apacheTomcatSeparation\httpd-2.4.61-240703-win64-VS17\Apache24\bin
b. 상단에서 cmd 입력
c. httpd.exe 입력 후 엔터

2. Tomcat 기동
a. 톰켓을 설치한 경로로 이동
- C:\dev\test\apacheTomcatSeparation\apache-tomcat-9.0.90\bin
b. startup.bat 파일 실행
3. 서비스 접속 확인
캡쳐를 할 수는 없지만 정상적으로 응답 완료!!!!!!
에러들
1. ServerRoot must be a valid directory
이 문제는 httpd.conf 파일에서 설치경로와 실행경로가 일치하지 않아서 발생하는 에러이다
파일을 다운로드하면 "pc > 다운로드" 폴더에 위치하게된다. 나는 파일 위치를 "C:\dev\test\apacheTomcatSeparation" 아래로 옮겼기때문에 httpd.conf 파일을 수정해줘야한다
(경로는 각자에 맞게 설정)
Define SRVROOT "C:\dev\test\apacheTomcatSeparation\httpd-2.4.61-240703-win64-VS17\Apache24"

마치며
일전에 linux 기반으로 Apache, Tomcat을 분리한적이 있다.
지금은 윈도우에서 단순 테스트 용도로 셋팅을 한 것일 뿐이라 설정이 매우 간단하다.
실제로는 serverName, Mount 경로, page별 처리, 서버사이드언어인 경우 정적,동적 분리 등.... 이런 작업들을 해야한다.
일단 간단하게 접속까지는 문제없이 되었기때문에 이상태로 두고 여러가지 테스트를 진행 할 예정이다.
(기존 프레임워크 기반으로 context 설정 후 화면에서 FileZila처럼 작업할 수 있도록 셋팅하려는 목적으로 분리를 시도한것임)
refs
참조 사이트 : https://heydoit.tistory.com/14
windows 10에 설치한 Apache와 Tomcat 연동
톰캣 8.5 버전을 사용하겠습니다. 톰캣 설치 위치는 C:/project 아래 입니다. 구동하려는 프로젝트 WAR 파일은 톰캣 폴더 내 webapps 폴더 안에 넣어줍니다. 구동시키는 프로젝트가 한 개라면, webapps 안
heydoit.tistory.com
jdk 에 따른 tomcat 버전 : https://programdev.tistory.com/49
아파치 톰캣 버전별 jdk 버전
https://tomcat.apache.org/whichversion.html Apache Tomcat® - Which Version Do I Want? Apache Tomcat® is an open source software implementation of a subset of the Jakarta EE (formally Java EE) technologies. Different versions of Apache Tomcat are availabl
programdev.tistory.com
'infra > 기타' 카테고리의 다른 글
| letsencrypt SSL 인증서 발급받기 (1) | 2024.07.12 |
|---|---|
| SSL/TLS 인증서란? (0) | 2024.07.12 |
| 리눅스 날짜 및 언어 설정 (1) | 2024.07.04 |
| VScode + EC2 SSH, SFTP 연결 (0) | 2024.06.27 |
| WEB/WAS 분리 셋팅 (0) | 2024.01.30 |