Apache 설치
1. 설치 및 설치 확인
$ sudo yum install -y httpd
$ httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Mar 24 2022 14:57:57
2. Apache 시작 및 서비스 등록
$ sudo systemctl start httpd
$ sudo systemctl status httpd
$ sudo systemctl enable httpd
3. 방화벽 설정
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-port=80/tcp
$ sudo firewall-cmd --reload
4. 서비스 및 포트 상태 확인
$ netstat - tlnp | grep httpd
Apach + Tomcat 연동 (mod_jk 사용)
1. Connector 컴파일 및 구성에 필요한 OS 라이브러리 설치
$ sudo yum install -y httpd-devel gcc gcc-c++
2. Tomcat Connector 설치 및 압축해제
$ cd /tmp
$ sudo wget https://dlcdn.apache.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz
$ sudo tar -xvzf tomcat-connectors-1.2.48-src.tar.gz
3. Tomcat Connector 소스 트리 구성 및 소스 설치
$ cd tomcat-connectors-1.2.48-src/native
$ sudo ./configure --with-apxs=/usr/bin/apxs
$ sudo make
$ sudo make install
apxs는 httpd-devel
을 통해 설치 되는데 일반적으로 /usr/bin
디렉토리 이하에 설치됩니다.
설치가 완료 되면 Apache 모듈 디렉토리에 mod_jk.so 파일이 생성되는데, 해당 파일이 생성되었는지 확인합니다.
$ ls /etc/httpd/modules/ | grep mod_jk
mod_jk.so
4. Apache 설정 파일 수정 및 추가
4-1. workers.properties 파일 생성
$ cd /etc/httpd/conf
$ vi workers.properties
# workers.properties 파일에 아래 내용을 추가합니다.
worker.list=tomcat01
worker.tomcat01.port=8009
worker.tomcat01.host=localhost
worker.tomcat01.type=ajp13
- worker.list: 사용할 톰캣 이름 목록
- worker.톰캣이름.port: 톰캣의 ajp 포트 번호(기본 값은 8009)
- worker.톰캣이름.host: 톰캣이 위치하고 있는 IP 주소(아파치와 톰캣이 한 서버에 있다면 localhost)
- worker.톰캣이름.type: 톰캣과 연결할 때 사용할 타입
4-2. httpd.conf 파일 수정
$ vi httpd.conf
# httpd.conf 하단에 아래 내용을 추가합니다.
# mod_jk.so 모듈의 위치
LoadModule jk_module modules/mod_jk.so
# workers.properties 설정
JkWorkersFile conf/workers.properties
# mod_jk log 위치
JkLogFile logs/mod_jk.log
# Load balancing worekrs will not function properly 오류 대응
JkShmFile run/mod_jk.shm
# /* 요청을 모두 tomcat01으로 전송
JkMount /* tomcat01
4-3. Apache 재시작
$ sudo systemctl restart httpd
* Apache 재시작 후 Apache 오류가 아래와 같이 뜬다면 해결 방법
$ vi /etc/httpd/logs/erro_log
[Mon Feb 08 12:25:05.869376 2022] [core:notice] [pid 20292:tid 1405548072179904] SELinus policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Mon Feb 08 12:25:05.870217 2022] [suexec:notice] [pid 20292:tid 1405548072179904] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Feb 08 12:25:05.870287 2022] [core:emerg] [pid 20292:tid 1405548072179904] (13)Permission denied: AH0023: Couldn't create the proxy mutex
[Mon Feb 08 12:25:05.870299 2022] [proxy:crit] [pid 20292:tid 1405548072179904] (13)Permission denied: AH2478: faild to create proxy mutex
$ sudo chcon -u system_u -r object_r -t httpd_modules_t /etc/httpd/modules/mod_jk.so
$ sudo setenforce 0
$ sudo systemctl restart httpd
5. Tomcat AJP 설정
톰캣 경로 안의 conf/server.xml
파일에 아래 코드의 주석을 해제하고 secretRequired
옵션을 추가합니다.
$ vi /opt/tomcat/latest/conf/server.xml
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3"
address="0.0.0.0"
port="8009"
redirectPort="8443"
secretRequired="false" />
만약 secretRequired="false"
를 제외하고 실행하게 된다면 Secret Key가 없기 때문에 AJP 연동시 정상 작동이 되지 않습니다. Secret Key가 없을 경우는 false를 설정해야 되는데 당연히 보안적으로 좋지 않습니다.
본문에서는 secretRequired 옵션을 false로 사용하지만 Tomcat 문서에서는 신뢰할 수 있는 네트워크에서만 사용해야 된다고 언급이 되고 있습니다.
보안 취약 부분일 수도 있기 때문에 운영 서버에는 필수로 Secret key를 생성하고 secretRequired 옵션을 true로 사용하기 바랍니다.
AJP 프로토콜 설정 구문에 secretRequired="false"를 입력합니다.
6. 아파치 80 접속 확인
$ suto systemctl restart tomcat
- 8080 포트 없이 접속되는지 확인합니다.
- 연동 전에는 포트 번호를 붙여야 하지만, 이후에는 포트 번호 없이 접속이 가능합니다.
'Server' 카테고리의 다른 글
[CentOS] Jenkins 설치방법 (0) | 2022.12.13 |
---|---|
[CentOS] Apache Maven 설치 방법 (0) | 2022.12.12 |
[CentOS] Tomcat9 설치 방법 (0) | 2022.12.09 |
[CentOS] Java OpenJDK 11 설치 및 환경변수 설정 (0) | 2022.12.08 |
[CentOS] PostgreSQL 설치 및 설정 (0) | 2022.10.07 |