빈쿵바라기
좌충우돌 개발자의 기록
빈쿵바라기
전체 방문자
오늘
어제
  • 분류 전체보기 (53)
    • Programming (25)
      • JAVA (12)
      • Spring Boot (6)
      • JPA (7)
      • Python (0)
    • Database (12)
      • RDBMS (4)
      • NoSQL (7)
    • Server (11)
    • Elasticsearch (3)
    • ETC (2)

블로그 메뉴

    공지사항

    인기 글

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    빈쿵바라기

    좌충우돌 개발자의 기록

    Server

    [CentOS] Apache 설치 및 Tomcat 연동(mod_jk)

    2022. 12. 10. 23:05

    Apache 설치

    1.  설치 및 설치 확인

    $ sudo yum install -y httpd
    $ httpd -v
    Server version: Apache/2.4.6 (CentOS)
    Server built:   Mar 24 2022 14:57:57

     

    2. Apache 시작 및 서비스 등록

    $ sudo systemctl start httpd
    $ sudo systemctl status httpd
    $ sudo systemctl enable httpd

     

    3. 방화벽 설정

    $ sudo firewall-cmd --permanent --add-service=http
    $ sudo firewall-cmd --permanent --add-port=80/tcp
    $ sudo firewall-cmd --reload

     

    4. 서비스 및 포트 상태 확인

    $ netstat - tlnp | grep httpd

     

     

    Apach + Tomcat 연동 (mod_jk 사용)

    1. Connector 컴파일 및 구성에 필요한 OS 라이브러리 설치

    $ sudo yum install -y httpd-devel gcc gcc-c++

     

    2. Tomcat Connector 설치 및 압축해제

    $ cd /tmp
    $ sudo wget https://dlcdn.apache.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz
    $ sudo tar -xvzf tomcat-connectors-1.2.48-src.tar.gz

     

    3. Tomcat Connector 소스 트리 구성 및 소스 설치

    $ cd tomcat-connectors-1.2.48-src/native
    $ sudo ./configure --with-apxs=/usr/bin/apxs
    $ sudo make
    $ sudo make install

    apxs는 httpd-devel 을 통해 설치 되는데 일반적으로 /usr/bin 디렉토리 이하에 설치됩니다.

    설치가 완료 되면 Apache 모듈 디렉토리에 mod_jk.so 파일이 생성되는데, 해당 파일이 생성되었는지 확인합니다.

    $ ls /etc/httpd/modules/ | grep mod_jk
    mod_jk.so

     

    4. Apache 설정 파일 수정 및 추가

    4-1. workers.properties 파일 생성

    $ cd /etc/httpd/conf
    $ vi workers.properties
    # workers.properties 파일에 아래 내용을 추가합니다.
    
    worker.list=tomcat01
    worker.tomcat01.port=8009 
    worker.tomcat01.host=localhost 
    worker.tomcat01.type=ajp13
    • worker.list: 사용할 톰캣 이름 목록
    • worker.톰캣이름.port: 톰캣의 ajp 포트 번호(기본 값은 8009)
    • worker.톰캣이름.host: 톰캣이 위치하고 있는 IP 주소(아파치와 톰캣이 한 서버에 있다면 localhost)
    • worker.톰캣이름.type: 톰캣과 연결할 때 사용할 타입

     

    4-2. httpd.conf 파일 수정

    $ vi httpd.conf
    # httpd.conf 하단에 아래 내용을 추가합니다.
    
    # mod_jk.so 모듈의 위치
    LoadModule jk_module modules/mod_jk.so
    # workers.properties 설정
    JkWorkersFile conf/workers.properties
    # mod_jk log 위치
    JkLogFile logs/mod_jk.log
    # Load balancing worekrs will not function properly 오류 대응
    JkShmFile run/mod_jk.shm
    # /* 요청을 모두 tomcat01으로 전송
    JkMount /* tomcat01

     

    4-3. Apache 재시작

    $ sudo systemctl restart httpd

    * Apache 재시작 후 Apache 오류가 아래와 같이 뜬다면 해결 방법

    $ vi /etc/httpd/logs/erro_log
    
    [Mon Feb 08 12:25:05.869376 2022] [core:notice] [pid 20292:tid 1405548072179904] SELinus policy enabled; httpd running as context system_u:system_r:httpd_t:s0
    [Mon Feb 08 12:25:05.870217 2022] [suexec:notice] [pid 20292:tid 1405548072179904] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 
    [Mon Feb 08 12:25:05.870287 2022] [core:emerg] [pid 20292:tid 1405548072179904] (13)Permission denied: AH0023: Couldn't create the proxy mutex
    [Mon Feb 08 12:25:05.870299 2022] [proxy:crit] [pid 20292:tid 1405548072179904] (13)Permission denied: AH2478: faild to create proxy mutex
    $ sudo chcon -u system_u -r object_r -t httpd_modules_t /etc/httpd/modules/mod_jk.so
    $ sudo setenforce 0
    $ sudo systemctl restart httpd

     

    5. Tomcat AJP 설정

    톰캣 경로 안의 conf/server.xml 파일에 아래 코드의 주석을 해제하고 secretRequired 옵션을 추가합니다.

    $ vi /opt/tomcat/latest/conf/server.xml
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector protocol="AJP/1.3"
    			address="0.0.0.0"
                port="8009"
                redirectPort="8443"
                secretRequired="false" />

    만약 secretRequired="false"를 제외하고 실행하게 된다면 Secret Key가 없기 때문에 AJP 연동시 정상 작동이 되지 않습니다. Secret Key가 없을 경우는 false를 설정해야 되는데 당연히 보안적으로 좋지 않습니다.

    본문에서는 secretRequired 옵션을 false로 사용하지만 Tomcat 문서에서는 신뢰할 수 있는 네트워크에서만 사용해야 된다고 언급이 되고 있습니다.

    보안 취약 부분일 수도 있기 때문에 운영 서버에는 필수로 Secret key를 생성하고  secretRequired 옵션을 true로 사용하기 바랍니다. 

    AJP 프로토콜 설정 구문에 secretRequired="false"를 입력합니다.

     

    6. 아파치 80 접속 확인

    $ suto systemctl restart tomcat
    •  8080 포트 없이 접속되는지 확인합니다.
    •  연동 전에는 포트 번호를 붙여야 하지만, 이후에는 포트 번호 없이 접속이 가능합니다.

     

    저작자표시

    'Server' 카테고리의 다른 글

    [CentOS] Jenkins 설치방법  (0) 2022.12.13
    [CentOS] Apache Maven 설치 방법  (0) 2022.12.12
    [CentOS] Tomcat9 설치 방법  (0) 2022.12.09
    [CentOS] Java OpenJDK 11 설치 및 환경변수 설정  (0) 2022.12.08
    [CentOS] PostgreSQL 설치 및 설정  (0) 2022.10.07
      'Server' 카테고리의 다른 글
      • [CentOS] Jenkins 설치방법
      • [CentOS] Apache Maven 설치 방법
      • [CentOS] Tomcat9 설치 방법
      • [CentOS] Java OpenJDK 11 설치 및 환경변수 설정
      빈쿵바라기
      빈쿵바라기
      삽질하는 개발자의 좌충우돌 개발기

      티스토리툴바