CentOS7 - Apache + Tomcat + Tomcat Connector 설치

Apache

# yum install httpd

Tomcat

yum 명령으로 설치하게 되면 여러개의 tomcat 설치가 불가능하므로

https://tomcat.apache.org/ 사이트에서 원하는 버전을 다운받아서 서버에 올리거나

서버에서 wget으로 직접내려 받아 설치한다.

wget이 없다면 설치해야 한다.

# yum install wget

설치하는 위치는 여기선 /usr/local/ 아래에 설치한다.

wget으로 리눅스답게 tar.gz 파일을 받는다.  다운받을 파일의 링크를 복사하면 쉽다.

압축을 푼다.

# cd /usr/local
# wget http://mirror.navercorp.com/apache/tomcat/tomcat-8/v8.0.47/bin/apache-tomcat-8.0.47.tar.gz
# tar zxvf apache-tomcat-8.0.47.tar.gz

압축을 풀면 apache-tomcat-8.0.47-src 라는 디렉토리가 생겨 있다.

같은 서버에 톰캣을 2개 이상 설치할 계획이니 디렉토리 이름을 바꾸는게 좋을듯 하다.

Tomcat Connector

가장 많이 쓰이는 mod_jk를 사용해서 apache와 tomcat 연동을 한다.

임의의 디렉토리에 mod_jk를 다운받는다.

https://tomcat.apache.org/download-connectors.cgi

# wget http://mirror.navercorp.com/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz

제공하는게 소스라 컴파일을 해야 한다.

컴파일을 하려면 gcc, gcc-c++, httpd-devel 패키지가 설치되어 있어야 한다.

# yum install gcc gcc-c++ httpd-devel
# tar zxvf tomcat-connectors-1.2.42-src.tar.gz
# cd tomcat-connectors-1.2.42-src/native
# ./configure --with-apxs=/usr/bin/apxs
# make
# make install

 

Configuration

yum 명령으로 apache를 설치하게 되면 /etc/httpd/ 아래 conf, conf.d, conf.modules.d 세개의 디렉토리가 있다.

conf.modules.d에 있는 파일들과 어울리게 그럴싸한 이름(00-jk.conf)으로 파일을 하나 만든다.

# vi 00-jk.conf
LoadModule jk_module modules/mod_jk.so

conf.d에도 설정파일을 몇개 만들어야 한다. 파일명은 확장자가 conf면 된다.

# vi mod_jk.conf

jk_module

위와 같이 작성한다. 내용에서 보면 workers.properties와 uriworkermap.properties을 더 만들어야 한다.

JkMountFile인 uriworkermap.properties가 주석으로 처리 되어 있는 이유는 Apache에서 VirtualHost를 사용하기에 여기서 매핑을 처리하기 때문이다.

# vi workers.properties
worker.list=work1, work2
worker.work1.port=8009
worker.work1.host=localhost
worker.work1.type=ajp13
worker.work1.lbfactor=1

worker.work2.port=8109
worker.work2.host=localhost
worker.work2.type=ajp13
worker.work2.lbfactor=1

어떤 url 요청과 매핑하여 tomcat과 연계할지 정한다. (VirtualHost를 사용하면 안해도 됨)

# vi uriworkermap.properties
/*=worker1
/*=worker2

conf/httpd.conf 파일에 VirtualHost를 설정한다. 보통 80포트만 사용하지만 여기선 8000포트도 사용하게 설정했다.

ServerName, Port 등의 조건에 따라 VirtualHost 설정이 적용된다.

JkMount /* work1 이부분이 JkMountFile 역할을 대신하게 되어 모든 url 요청을 work1에서 담당하게 된다.

JkMount /*.do work1 이러면 *.do 요청만 tomcat이 처리하는것이다.

httpd.conf
httpd.conf

이제, Tomcat 디렉토리 아래 conf/server.xml 을 열고 각각의 Tomcat끼리 포트 충돌이 나지 않게 포트를 바꿔준다. (Tomcat 기본포트인 8005. 8080, 8009 이거 적혀 있는 부분...)
ajp 포트는 workers.properties에서 적어 준 값과 서로 맞아야 한다.
URIEncoding="UTF-8" 이런것도 같이 좀 적어준다.
/bin/catalina.sh 에도 환경변수 몇개를 수정해준다. 해당 tomcat이 사용하는 java home 같은거...

catalina.sh

root계정이 아닌 다른계정으로 관리를 한다면 Tomcat 디렉토리에 권한을 주어야 한다.

# chown tomcatuser:tomcatuser /usr/local/tomcat7_1 -R

80과 8000포트를 사용하겠다고 했으니 포트를 열어주어야 한다.

# firewall-cmd --permanent --add-service=http
# firewall-cmd --permanent --add-port=8000/tcp
# firewall-cmd --reload

apache 와 tomcat 을 한 서버에서 구동할 경우 8009 이외의 port 에 tomcat 을 구동했다면 SELinux 정책에 의해 apache 는 tomcat 을 연결할 수가 없어서 에러가 발생한다
기본포트(ajp 8009)가 아닌 포트를 사용하려면 다음 명령으로 포트를 추가하던지

# semanage port -a -t http_port_t -p tcp 8109

다음과 같이 SELinux를 disabled로 바꾸고 재부팅!

# vi /etc/selinux/config

selinux

서비스를 시작하면 기나긴 여정이 끝이 난다. (Deploy가 기다리고 있지만....)

# systemctl start httpd
# su tomcatuser
$ cd /usr/local/tomcat7_1/bin
$ sh startup.sh

 

Apache CentOS System Tomcat Tomcat Connector

MariaDB/MySQL 재귀쿼리로 달력 만들기

Coding MariaDB MySQL SQL

CentOS7 - Oracle Database XE 18c 설치

CentOS Oracle System

Wi-Fi 6E Card 설치기

Hardware

마우스 수리기

Hardware

나도 10년 만에 PC 업그레이드 이야기 2020-12

Hardware

티베로 데이터베이스 추가 (CentOS Linux 환경)

CentOS System Tibero