2-tier-WEB) Apach2.4 ←→ Tomcat8 연동

Nari.·2021년 6월 7일
0

aws 공부

목록 보기
13/17

1. WEB Server Setting

perl install

# perl download :: https://www.perl.org/get.html
$ cd /usr/local/src
$ wget https://www.cpan.org/src/5.0/perl-5.34.0.tar.gz
$ tar xvfz perl-5.34.0.tar.gz
$ cd perl-5.34.0

$ ./Configure -des -Dprefix=/usr/local/perl
$ make && make install


## perl 버전 확인
$ perl -v


mod_jk compile install

$ cd tomcat-connectors-1.2.48-src/native

# 자신이 설치한 apxs 위치
$ ./configure \
--with-apxs=/usr/local/apache/bin/apxs

# php7.4 configure..
# --with-apxs2=/usr/local/apache/bin/apxs

configure 하다가 아래와 가팅 에러가 발생했다.
# Error ------------------
need to check for Perl first, apxs depends on it...
checking for perl... /sbin:/bin:/usr/sbin:/usr/bin
could not find /usr/local/apache/bin/apxs
configure: error: You must specify a valid --with-apxs path


# Solution
$ vi /usr/local/apache/bin/apxs

# 맨 첫 번째 문장 수정하기 두 번째 나와있는것처럼 #!/usr/bin/perl 로 수정
1 #!/replace/with/path/to/perl/interpreter -w
1 #!/usr/bin/perl
...

위와 같이 perl 의 위치를 수정했다면, 다시 컨피그를 해본다.
# 자신이 설치한 apxs 위치
$ ./configure \
--with-apxs=/usr/local/apache/bin/apxs


$ make && make install

# 잘 설치 되었는지 확인해보기
$ cd /usr/local/apache/modules
$ ls
# 파일들 중에서 mod_jk.so 파일이 있는지 확인하기

잘 설치 되었다면, 위의 처럼 mod_js.so 를 확인 할 수 있다.



연동 설정

$ vi /usr/local/apache/conf/httpd.conf

...
# LoadModule 구문 가장 아래에. 아래 문장을 추가. 약 153번 째 줄.
153 LoadModule jk_module modules/mod_jk.so

...
# 현재 문서(httpd.conf) 제일 아래에 아래 문장들을 추가
513 <IfModule jk_module>
514 	Include conf/mod_jk.conf
515 </IfModule>


mod_jk.conf 파일 생성

$ vi /usr/local/apache/conf/mod_jk.conf

<IfModule mod_jk.c>
	# workers.properties 파일 위치 지정
	# worker = 들어온 요청을 처리하기 위한 톰캣 인스턴스
	JkWorkersFile conf/workers.properties

	# mod_jk 로그파일 위치 지정
	JkLogFile logs/mod_jk.log

	# 로그 레벨 지정 [debug / error / info]
	JkLogLevel info

	# 로그에 출력되는 시간 포맷을 지정
	# %a :: 요일
	# %b :: 월
	# %d :: 일
	# %H :: 시간
	# %M :: 분
	# %S :: 초
	# %Y :: 연도
	JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "



출처: https://knight76.tistory.com/entry/modjk-샘플설명 [김용환 블로그(2004-2020)]

	# 아파치로부터 들어오는 요청에 대해 URL 패턴별로 workers.properties에
	# 정의한 worker에게 매핑시키는 설정을 지정
	JkMountFile conf/uriworkermap.properties
</IfModule>


workers.properties 파일 생성

$ vi /usr/local/apache/conf/workers.properties

# list는 mod_jk가 사용할 모든 작업자리스트 기술(콤마로 구분)
# type은 톰캣과 통신할 프로토콜을 정의(ajp12, ajp13, ajp14, jni, lb) 
#        ajp13프로토콜이 가장 많이 사용되며, lb는 로드밸런싱에 사용.
# host는 대상 톰캣의 IP
# port는 톰캣과 통신할 포트
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=10.4.0.73 //Tomcat IP
worker.worker1.port=8009


uriworkermap.properties

$ vi uriworkermap.properties


# /docs 경로가 들어오면 workers.properties에 정의한
# worker1 톰캣인스턴스로 매핑
# 설치된 톰캣의 도큐먼트 페이지로 이동
/*.jsp=worker1
/*.css=worker1
/*.svg=worker1
/*.png=worker1
/*.ico=worker1


2. WAS Server Setting

$ vi /usr/local/tomcat8/conf/server.xml

...
117 <--
118 <Connector protocol="AJP/1.3"
119            address="::1"
120            port="8009"
121            redirectPort="8443" />
122 -->
...

이 부분을 주석 해제 후 교체

117 
118 <Connector protocol="AJP/1.3"
119            address="0.0.0.0"
120            secretRequired="false"
121						 port="8009"
122            redirectPort="8443" />
123 
  • address : AJP Connect를 이용할 네트워크 IP대역 허용(0.0.0.0 = 모든 IP허용한다는 의미)
  • secretRequired : SSL 설정 안함


3. Test

# 1. 톰캣 실행
# 상태 확인
$ systemctl status tomcat8

# 에러날 경우, 포트 열려있는지 확인 아래 방화벽 확인에서 명령어 확인 가능
$ ps -ef | grep tomcat8
root     10057     1 30 16:00 ?        00:00:03 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64//bin/java -Djava.util.logging.config.file=/usr/local/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.security.egd=file:///dev/urandom -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Xms512M -Xmx1024M -server -XX:+UseParallelGC -Dignore.endorsed.dirs= -classpath /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat8 -Dcatalina.home=/usr/local/tomcat8 -Djava.io.tmpdir=/usr/local/tomcat8/temp org.apache.catalina.startup.Bootstrap start
root      7996  8784  0 14:55 pts/0    00:00:00 grep --color=auto tomcat8
-> 이렇게 길~~~게 떠야 정상


# 2. WEB apache 실행
$ systemctl restart apache
$ systemctl status apache

# https://[웹 서버 IP]/index.jsp 로 접속했을 때,
# 톰캣 화면. 고양이가 뜨면 잘 작동한 것임



참고)
1. https://blog.naver.com/PostView.nhn?blogId=tawoo0&logNo=221587063882&parentCategoryNo=&categoryNo=10&viewDate=&isShowPopularPosts=true&from=search
2. https://bamdule.tistory.com/130
3. https://www.lesstif.com/system-admin/apache-httpd-tomcat-connector-mod_jk-reverse-proxy-mod_proxy-12943367.html
4. JkLogStampFormat 설명

0개의 댓글