본문 바로가기

BackEnd/Aws

ec2 우분투에 아파치와 톰캣 연동

반응형

1. 연동 커넥터 mod_jk 설치

 

톰캣과의 연동을 위해 mod_jk를 설치한다

 

 sudo apt-get install libapache2-mod-jk

 

 

2. workers.properties 파일 생성

 

다음으로 /etc/apache2/ 경로에 properties 파일을 생성한다. 

(아래 명령어 입력시 workers.properties 파일 생성됨)

 

1) sudo nano /etc/apache2/workers.properties

 

생성한 workers.properties에 아래의 내용을 입력한다.

 

workers.tomcat_home=톰캣 설치경로

 

workers.tomcat_home=/usr/share/tomcat9

workers.java_home=jdk 설치경로

workers.java_home=/usr/lib/jvm/java-8-openjdk-amd64

 

# Define 1 real worker ajp13

worker.list=임의의 이름

 

# Set properties for tomcat1 (ajp13)

worker.임의의 이름.port = 포트      # tomat server.xml 파일 AJP/1.3 Connector의 Port 입력

worker.임의의 이름.host = 톰캣서버 아이피 주소

worker.임의의 이름.type = ajp13     # apache + tomcat 통신 프로토콜

worker.임의의 이름.lbfactor = 1

 

 

2) 완성예시

 

workers.tomcat_home=/usr/share/tomcat9

 

workers.java_home=/usr/lib/jvm/java-8-openjdk-amd64

 

# Define 1 real worker ajp13

 

worker.list=tomcat1

 

# Set properties for tomcat1 (ajp13)

 

worker.tomcat1.port = 8009

 

worker.tomcat1.host = 13.209.67.208

 

worker.tomcat1.type = ajp13

 

worker.tomcat1.lbfactor = 1

 

 

3.  jk.conf  파일 수정

 

명령어를 실행하여 jk.conf 파일을 연다.

 

1) sudo nano /etc/apache2/mods-available/jk.conf 

 

2) jk.conf 파일에서 

JkWorkersFile /etc/libapache2-mod-jk/workers.properties 으로 표시된 부분을 찾아준다.

 

그 부분을 주석(#)으로 막아주고 바로 아래 내용을 입력한다. 

 

JkWorkersFile /etc/apache2/workers.properties

 

이렇게 하는 것은 /etc/apache2/ 경로에 생성한 workers.properties로부터 설정 정보를 가져오기 

 

위한 것이다.

 

 

4.  000-default.conf 파일 수정

 

 

1) 명령어를 실행하여 000-default.conf 파일을 연다

 

sudo nano /etc/apache2/sites-available/000-default.conf

 

000-default.conf 파일을 보면 DocumentRoot /var/www 라고 적힌 부분이 있다. 

 

이 부분에 #을 적어 주석으로 변경한다. 

 

그리고 아래에 톰캣의 webapps 아래 실행할 웹프로젝트가 있는 경로를 적어준다.

 

위에서는 DocumentRoot /var/lib/tomcat8/webapps/

 

JkMount /* tomcat1 부분은 모든 URL ( /* )을 톰캣에게 바인딩 하는 부분이다. 

 

tomcat1은 workers.properties에 입력한 연동할 톰캣의 이름이다. 

 

만약 톰캣에 배포된 프로젝트가 여러 개이고 특정 프로젝트만 URL을 바인딩 해야 한다면 

 

/* 부분을 수정해 주면 된다. 

 

예를 들어  배포된 프로젝트가 project1, project2 이렇게 있는데 

 

project1만 바인딩 하려면 JkMount /project1/* tomcat1 이렇게 수정하면 된다.

 

아래와 같이 설정하면

JkMount /*.do tomcat1 

 

url중 .do로오는 request만 tomcat에서 처리한다.

 

 

2) 완성예시

 

아래는 모든 URL을 톰캣이 처리한다고 하고, 

 

톰캣이 처리하지 말아야할 정적 파일들을 지정하였다.

 

즉 80포트로 처리할지,  8080으로 처리할지를 구분한것이다. 

 

이 부분은 웹서버 아파치와 WAS 톰캣의 역할에 대해 자세히 알아보면 왜 이렇게 구성하였는지 알수 있을 것이다. https://cg-developer.tistory.com/348

 

1
2
3
4
5
6
7
8
9
10
11
12
     ServerAdmin webmaster@localhost
        #DocumentRoot /var/www/html
        DocumentRoot /var/lib/tomcat9/webapps/
 
        JkMount /* tomcat1
        SetEnvIf Request_URI "/*.css" no-jk
        SetEnvIf Request_URI "/*.jpg" no-jk
        SetEnvIf Request_URI "/*.gif" no-jk
        SetEnvIf Request_URI "/*.png" no-jk
        SetEnvIf Request_URI "/*.html" no-jk
        SetEnvIf Request_URI "/*.js" no-jk
 
 
cs

 

현재 ROOT 라는 이름으로 프로젝트 배포하기 때문에

 

 아래와 같이 경로 변경했음 

 

DocumentRoot /var/lib/tomcat9/webapps/ROOT/

 

 

5. apache <Directory > 설정에서 막아 둔 폴더 접근 허용하기

 

sudo nano /etc/apache2/apache2.conf
기본적으로 자신의 웹서버 디렉토리의 접근 권한이 막혀있기 때문에 이 부분을 아래와 같이 허용해줘야 한다.

 

1
2
3
4
5
<Directory /var/lib/tomcat9/webapps/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>
cs

 

5. 톰캣의 server.xml 파일 수정

 

다음으로 톰캣의 server.xml 파일을 수정해야 한다. 

 

아래 명령어를 실행하여 server.xml 파일을 연다.

 

sudo nano /etc/tomcat9/server.xml

 

방향키를 이용해 xml에서 내려가다보면 아래와같이 나오는데 이 코드의 주석을 없애주자

 

 

<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> --!>

 

 

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

 

 

6. ajp 모듈 활성화

 

sudo a2enmod proxy_ajp

 

 

7. 아파치와 톰캣 재시작

 

sudo service apache2 restart

 

sudo service tomcat9 restart

 

8. aws 보안그룹 인바운드 규칙 편집하기 

 

8009번 포트를 추가해서 열어준다.

 

 

그러면

http://서버아이피:8080 접속되고

http://서버아이피:80  도 접속된다.

 

참고사이트: 

https://joont.tistory.com/55

https://mytory.net/archives/3143

https://all-record.tistory.com/188?category=733055

http://jkkang.net/java/mod_jk/mod_jk_install.html

https://kkamagistory.tistory.com/37

https://deftkang.tistory.com/65

https://jdm.kr/blog/93

반응형