# 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
$ 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
# 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
...
# 자신이 설치한 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>
$ 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>
$ 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
$ vi uriworkermap.properties
# /docs 경로가 들어오면 workers.properties에 정의한
# worker1 톰캣인스턴스로 매핑
# 설치된 톰캣의 도큐먼트 페이지로 이동
/*.jsp=worker1
/*.css=worker1
/*.svg=worker1
/*.png=worker1
/*.ico=worker1
$ 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
# 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 설명