Tomcat은 단독으로 서비스를 할 수 있다.
그러나 Apache와 연동하여 사용하는 경우가 많다.
연동할 방법은 3가지 방법이 존재한다.
1. mod_jk
2. mod_proxy
3. mod_prox_ajp
난 가장 많이 사용하는 방법이고 연동하기 쉬운 mod_jk를 설치했다.
mod_jk.so는 AJP(Apache Jserv Protocol) 프로토콜을 이용해서 Apache 와 Tomcat을 연동해주는 모듈이다.
tomcat 기본 port인 8080없이 80번 port로 접속가능해진다.
원하는 경로에다가 mod_jk.so 설치 파일을 다운하면 되는데 보통 경로는 /usr/local 디렉토리에 넣는 것 같다.
cd /usr/local/lib
wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz
tar -zxvf tomcat-connectors-1.2.48-src.tar.gz
cd tomcat-connectors-1.2.48-src/native
apxs 파일의 위치를 찾아야한다.
find -name apxs
./configur --with-apxs=/usr/bin/apxs
make
make install
configure: error: Invalid location for apxs: 'usr/bin/apxs' 에러가 발생했을 경우 아래와 같이 설정을 변경한다.
vi /usr/bin/apxs
맨위에 #!/replace/with/path/to/perl/interpreter -w 를 #!/usr/bin/perl -w 로 변경한다.
perl이 설치되지 않았다면 패키지를 설치한다.yum install perl
mod_jk.so 파일이 있는지 확인
cd /etc/httpd/modules
ls
tomcat의 server.xml파일 AJP Connector 설정 변경
vi /tomcat8/conf/server.xml
<Connector port="8009
protocol="AJP/1.3"
redirectPort="8443"
address="127.0.0.1"
secretRequired="false" />
apache와 연동할 worker(tomcat)들을 설정한다.
vi /etc/httpd/conf/workers.properties
worker.list=tomcat01 // apache와 연동할 tocmat을 입력한다.
worker.tomcat01.port=8009 // AJP 포트
worker.tomcat01.host=127.0.0.1 // tomcat host, AJP Connector 설정의 address와 일치하도록 설정
worker.tomcat01.type=ajp13 // ajp 1.3 사용
vi /etc/httpd/conf/httpd.conf
#mod_jk.so 모듈의 위치
LoadMoule jk_module /etc/httpd/modules/mod_jk.so
#workers.properties 설정 파일 위치
JkWorkersFile /etc/httpd/conf/workers.properties
#mod_jk log 위치
JkLogFile /etc/httpd/logs/mod_jk.log
#Load balancing workers will not function properly 오류 대응
JkShmFile /etc/httpd/logs/mod_jk.shm
# /* 요청을 모두 tomcat01으로 넘긴다.
JkMount /* tomcat01
나처럼 모든 요청을 tomcat으로 넘기지 말아라...
css 경로를 apache가 인식 하지못헤 어쩔수 없이...
무조건 경로를 잡아둘거임
JkMount /*.do tomcat01 JkMount /*.jsp tomcat01 JkMount /*.json tomcat01 JkMount /*.xml tomcat01
보통 이렇게 사용한다.
systemctl restart httpd
난 서비스 등록을 해놓았다.
2. Tomcat 설치 링크를 보면댄다.
systemctl restart tomcat
서비스 등록 하지 않았을 시
/tomcat8/bin/startup.sh
8080포트가 아닌 80포트로 접속
브라우저 주소에 http://내 ip 를 입력하면 tomcat 시작페이지가 출력 되면 설정완료
ssl 인증서 받은 사이트에 보면 적용 매뉴얼이 있다. 잘 찾아보시길
yum install openssl
vhost.conf 파일을 따로 만들어 설정하였기 때문에 httpd.conf 파일에서 아래의 설정 입력 확인
vi /etc/httpd/conf/httpd.conf
...
IncludeOptional conf.d/*.conf
vhost.conf 설정
vi /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
ServerName localhost.com
#http(80)으로 접근을해도 https(443)으로 접근 되도록 설정
RewriteEngine on
RewriteCond ${HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301, L]
</VirtualHost>
<VirtualHost *:443>
ServerName localhost.com
#SSL설정
#자신이 SSL발급 받은 사이트에 대부분 매뉴얼이 나와있다.
#SSL파일의 경로 입력
SSLEngine on
SSLCertificateFile /etc/httpd/conf/cert/_wilidcard_test.crt
SSLCertificateKeyFile /etc/httpd/conf/cert/_wildcard_test.key
SSLCertivicateChainFile /etc/httpd/conf/cert/test.pem
SSLCACertificateFile /etc/httpd/conf/cert/test.crt
</VirtualHost>
Apache HTTPS/HTTP 리다이렉트(Redirect/Rewrite)하는 방법 참고
RewriteCond %{HTTPS} on/off 설정을 이용하여 프로토콜 별로 처리할 수 있다.
Rewrite를 추가하는 부분에서 SSL 인증서를 사용하고 있다면
[P] 옵션을 사용하기 때문에 (P=Proxy)
SSLProxyEngine On
설정을 추가해줘야 한다.
Proxy를 사용하지 않아도 될 경우에는 [P,R,L] -> [R=301,L] 사용
- HTTP를 HTTPS로 리다이렉트
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [P,R,L] </IfModule>
- HTTPS를 HTTP로 리다이렉트
SSLProxyEngine On => SSL 인증서를 이용하고 있다면 넣어줘야 한다.<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} on RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [P,R,L] </IfModule>
- HTTP/HTTPS를 고려하여, 받은 URL 그대로 리다이렉트.
SSLProxyEngine On => SSL 인증서를 이용하고 있다면 넣어줘야 한다.<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} on RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [P,R,L] RewriteCond %{HTTPS} off RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [P,R,L] </IfModule>
SSL 적용 후 https로 접속 시 tomcat페이지가 아닌 apache페이지가 출력 될때가 있다.
이것 때매 시간 많이 썻다...
openssl 설치를 하면 /etc/httpd/conf.d 디렉토리에 ssl.conf 파일이 생성이 된다.
ssl.conf 파일안에 VirtualHost가 설정이 되어있을 경우가 있다.
vhost.conf에 VirtualHost를 설정 해두었지만 ssl.conf 파일을 뒤에 읽어서 브라우저에 화면을 출력하지 못했나 싶다.(내생각)
<VirtualHost _default_:443> ... </VirtualHost>
위에 나와있는 설정을 주석처리하고 다시 접속해 보면 될 것이다.