AWS RHEL9 apache, tomcat install

배찌 (배찌)·2023년 3월 7일
0

설치 기록

목록 보기
10/12

이 글에서는 설치해서 사용했던 명령어들과 트러블슈팅에 대해서만 적혀있다.
tomcat설치와 mod_jk에 대한 상세한 내용은 다음을 참고하면 된다.
https://velog.io/@moonoop3038/Centos7-tomecat-install
https://velog.io/@moonoop3038/modjk-connect-설정

Tomcat server

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역시 잠시 오픈하고 확인한후 다시 닫기를 추천

Apache 설치

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

Troubleshooting mod_jk

아파치 서버를 실행했지만 실행되지 않는 문제가 생겼다. 그리하여 구문에 문제가 있나 싶어 하나씩 처리해보니 다음 줄이 문제였다.

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포트로 정상적으로 접근되는지 확인 하였다.

정상적으로 접근이 된다.

profile
Never give up Impossible is nothing

0개의 댓글