이 글에서는 설치해서 사용했던 명령어들과 트러블슈팅에 대해서만 적혀있다.
tomcat설치와 mod_jk에 대한 상세한 내용은 다음을 참고하면 된다.
https://velog.io/@moonoop3038/Centos7-tomecat-install
https://velog.io/@moonoop3038/modjk-connect-설정
sudo yum -y update
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
sudo yum -y install wget java-11-openjdk nan
openjdk 버전 확인
alternatives --config java
tomcat 유저, 그룹, 디렉토리 생성
sudo groupadd tomcat
sudo mkdir /tomcat
sudo useradd -s /bin/nologin -g tomcat -d /tomcat tomcat
Tomcat유저 권한 확인
sudo cat /etc/passwd | grep tomcat
Tomcat install
sudo wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.7/bin/apache-tomcat-10.1.7.tar.gz
sudo tar -zxvf apache-tomcat-10.1.7.tar.gz -C /tomcat --strip-components=1
sudo chown -R tomcat: /tomcat
sudo sh -c 'chmod +x /tomcat/bin/*.sh'
Tomcat 작동 테스트
sudo /tomcat/bin/startup.sh
sudo /tomcat/bin/shutdown.sh
sudo tail -f /tomcat/logs/catalina.out
tomcat http port 변경 및 ajp 포트 변경
sudo vi /tomcat/conf/server.xml
기존 8080이던 포트를 임의의 포트로 변경
AJP 프로토콜 사용
주석제거
<!-- -->
내용 수정
<Connector protocol="AJP/1.3"
address="0.0.0.0"
secretRequired="false"
port="65000"
redirectPort="8443" />
톰캣 작동
sudo /tomcat/bin/startup.sh
포트 확인
netstat -nlp | grep -i java
aws 보안 설정
65000번에 접속하는 ip는 web서버에 한정하고 나머지는 모두 닫아준다.
정상적으로 확인하기 위한 http port역시 잠시 오픈하고 확인한후 다시 닫기를 추천
sudo yum -y update
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
sudo yum -y install gcc gcc-c++ httpd-devel pcre-devel wget httpd mod_jk mod_ssl
ssl 인증서 발급
sudo certbot certonly --standalone --apache -d www.securehosting.site
필자의 경우 haproxy를 통한 환경이였기 때문에 이 설정은 스킵하였다.
sudo vi /etc/httpd/conf/httpd.conf
LoadModule jk_module modules/mod_jk.so
LoadModule ssl_module modules/mod_ssl.so
<IfModule mod_jk.c>
JkWorkersFile conf/workers.properties
JkShmFile run/mod_jk.shm
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%y %m %d %H:%M:%S] "
</IfModule>
<VirtualHost _default_:443>
ServerName www.securehosting.site
SSLEngine on
SSLCertificateFile /etc/httpd/conf/www.securehosting.site/cert.pem
SSLCertificateKeyFile /etc/httpd/conf/www.securehosting.site/privkey.pem
SSLCertificateChainFile /etc/httpd/conf/www.securehosting.site/chain.pem
SSLCACertificateFile /etc/httpd/conf/www.securehosting.site/fullchain.pem
JkMount /* tomcat
</VirtualHost>
vi /etc/httpd/conf/workers.properties
worker.list=tomcat
worker.tomcat.port=65000
worker.tomcat.host=
worker.tomcat.type=ajp13
worker.tomcat.lbfactor=1
아파치 서버를 실행했지만 실행되지 않는 문제가 생겼다. 그리하여 구문에 문제가 있나 싶어 하나씩 처리해보니 다음 줄이 문제였다.
LoadModule jk_module modules/mod_jk.so
문제가 될만한 문제가 아닌데 왜 문제가 생길까? 했는데 log를 살펴보니 아... 하게 된 로그였다.
mod_jk가 공유 메모리에 접근할수가 없어 실행할 수 없다는 것이였다.
그리하여 구글링하여 해결 방법을 찾아 보았다.
vi /etc/selinux/targeted/contexts/files/file_contexts.local
/var/log/httpd(/.*)? system_u:object_r:httpd_log_t:s0
/var/run/mod_jk\.shm system_u:object_r:httpd_log_t:s0
sudo touch /etc/httpd/logs/mod_jk.shm
sudo chown apache:apache /etc/httpd/logs/mod_jk.shm
sudo chmod 666 /etc/httpd/logs/mod_jk.shm
sudo touch /run/mod_jk.shm
sudo chown apache:apache /run/mod_jk.shm
sudo restorecon -R /var/log/httpd /var/run/mod_jk.shm
sudo setsebool -P httpd_read_user_content 1
sudo setsebool -P httpd_can_network_connect 1
sudo systemctl restart httpd
그 결과는 ? 해결되었다.
443포트로 정상적으로 접근되는지 확인 하였다.
정상적으로 접근이 된다.