[CentOS 7] mod_jk를 이용한 Apache-Wildfly 연동

2022. 6. 28. 11:24·🛠 DevOps & Tool/Linux

JDK와 Apache, Wildfly 각각 설치 완료하여 구동 테스트까지 완료한 이후의 과정입니다.


 

 

 

Web Server와 WAS를 연동하기 위한 방법 중의 하나인 mod_jk를 세팅해 보았다.

 

1. apxs(Apache Extension) 설치

 

$ yum install -y httpd-devel
$ which apxs
/usr/bin/apxs

 

2.tomcat-connector 설치
-설치
$ wget http://mirror.navercorp.com/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz
-압축 해제
$ tar xvzpf tomcat-connectors-1.2.48-src.tar.gz
-디렉토리 이동
$ cd tomcat-connectors-1.2.48-src/native/
-컴파일을 위한 설정
$ ./configure --with-apxs=/usr/bin/apxs
-컴파일
$ make
$ make install

 

./configure 설정 단계에서 에러가 발생했다면 이 포스팅을 참고

 

정상적으로 컴파일이 되었다면 mod_jk.so 파일이 Web Server(Apache) 경로/modules에 생겨있다.

없을 경우엔 아래 명령어로 직접 옮겨주면 된다.

 

- 나의 Apache 경로 = /etc/httpd
$ cp apache-2.0/mod_jk.so /etc/httpd/modules/

 

3. Apache config에 mod_jk 모듈에 대한 정보 입력 및 연동

 

3-1. httpd.conf 파일 열기 및 입력

$ vi /etc/httpd/conf/httpd.conf

 

하단에 아래 내용을 추가

(conf/mod-jk.conf라는 설정 파일을 따로 두어 관리를 용이하게 한다.)

# mod_jk Connector
LoadModule jk_module modules/mod_jk.so
Include conf/mod-jk.conf

 

 

3-2. mod-jk.conf 파일 생성 및 입력

$ vi /etc/httpd/conf/mod-jk.conf

아래 내용을 추가

( 아파치가 사용할 mod_jk 모듈의 위치가 mod_jk.so 파일이라는 것, 로그를 남길 위치 등등의 내용 )

<IfModule jk_module>

# Where to find workers.properties
JkWorkersFile conf/workers.properties

# the location of jk shared memory
JkShmFile run/mod_jk.shm

# Where to put jk logs
JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]
JkLogLevel info

# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

JkMountFile conf/uriworkermap.properties

</IfModule>

 

 

3-3.  workers.properties 파일 생성 및 입력

$ vi /etc/httpd/conf/workers.properties

아래 내용 추가 

(worker1라는 worker를 하나 만들고 정보 입력 host 에는 was ip 입력)

worker.list=worker1

worker.worker1.type=ajp13
worker.worker1.host=WAS IP 입력
worker.worker1.port=8009

 

 

3-4. uriworkermap.properties 파일 생성 및 입력

$ vi /etc/httpd/conf/uriworkermap.properties

아래 내용 추가

(아파치로 요청 오는 URI는 worker랑 매핑시키는 파일)

# Mount the Servlet context to the worker1 worker
/jmx-console=worker1
/jmx-console/*=worker1
/web-console=worker1
/web-console/*=worker1
# all url turn to ajp
/*=worker1

 

 

3-5. wildfly의 standalone.xml 파일에 AJP 프로토콜을 수신할 수 있도록 내용 추가

$ vi /opt/wildfly/standalone/configuration/standalone.xml

<!--추가--> 표시되어 있는 줄 내용 추가

2번째는 이미 추가되어 있을 수도 있다.

<subsystem xmlns="urn:jboss:domain:undertow:10.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other" statistics-enabled="${wildfly.undertow.statistics-enabled:${wildfly.statistics-enabled:false}}">
            <buffer-cache name="default"/>
            <server name="default-server">
                <ajp-listener name="ajp" socket-binding="ajp"/> <!--추가-->
                <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
                <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
                <host name="default-host" alias="localhost">
                    <location name="/" handler="welcome-content"/>
                    <http-invoker security-realm="ApplicationRealm"/>
                </host>
            </server>
            <servlet-container name="default">
                <jsp-config/>
                <websockets/>
            </servlet-container>
            <handlers>
                <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
            </handlers>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:webservices:2.0" statistics-enabled="${wildfly.webservices.statistics-enabled:${wildfly.statistics-enabled:false}}">
            <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
            <endpoint-config name="Standard-Endpoint-Config"/>
            <endpoint-config name="Recording-Endpoint-Config">
                <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
                    <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
                </pre-handler-chain>
            </endpoint-config>
            <client-config name="Standard-Client-Config"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:weld:4.0"/>
    </profile>
    <interfaces>
        <interface name="management">
                <any-address/>
           <!-- <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> -->
        </interface>
        <interface name="public">
                <any-address/>
           <!-- <inet-address value="${jboss.bind.address:127.0.0.1}"/> -->
        </interface>
    </interfaces>
    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/> <!--추가-->
        <socket-binding name="http" port="${jboss.http.port:8080}"/>
        <socket-binding name="https" port="${jboss.https.port:8443}"/>
        <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
        <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="localhost" port="25"/>
        </outbound-socket-binding>
    </socket-binding-group>

 

 

 

3-6. wildfly 재기동

# systemctl stop wildfly
# systemctl start wildfly
# systemctl status wildfly

구동 확인

 

 

 

3-7. 아파치 시작

# service httpd start
Redirecting to /bin/systemctl start httpd.service

 

나는 아파치 시작 과정에서 오류가 났었다.. 이 글을 참고

Job for httpd.service failed because the control process exited with error code.
See "systemctl status httpd.service" and "journalctl -xe" for details.

 

 

IP로 접속했을 때 wildfly 화면이 나오면 성공

고생하셨습니다. 

 

 

 

[참고]

https://offbyone.tistory.com/332

https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=hanajava&logNo=221589635317&parentCategoryNo=40&categoryNo=&viewDate=&isShowPopularPosts=false&from=postList 

https://has3ong.github.io/server/web-apacheconnectorwildfly/

 

Centos7 / Apache - Wildfly - JK Connector 연동하기

Wildfly Standalone 방식으로 설정하겠습니다.

has3ong.github.io

 

+

지금은 단순 개발환경 구축이지만 운영환경은 여러개의 WAS로 분산처리하는 로드밸런싱 등 설정이 까다롭기 때문에

그때는 아래와 같은 블로그를 참고해야할 것 같다.

더보기
worker.RANG1.reference=worker.template
worker.RANG1.host=rang.prd.was001
worker.RANG1.port=8009

worker.RANG2.reference=worker.template
worker.RANG2.host=rang.prd.was002
worker.RANG2.port=8009

worker.RANG3.reference=worker.template
worker.RANG3.host=rang.prd.was003
worker.RANG3.port=8009

worker.RANG4.reference=worker.template
worker.RANG4.host=1rang.prd.was004
worker.RANG4.port=8009

worker.rang_nwlb.type=lb
worker.rang_nwlb.retries=2
worker.rang_nwlb.method=Session
worker.rang_nwlb.sticky_session=True
worker.rang_nwlb.balance_workers=RANG1, RANG2, RANG3, RANG4
 

2. Apache의 부하분산 및 세션공유 설정 상세(mod_jk + mod_cluster)

(2). Apache의 부하분산 및 세션공유 설정 상세(mod_jk + mod_cluster) 1. Apache 설정 전체 플로우 2. 가상 호스트 설정(...

www.epari.net

 

저작자표시 비영리

'🛠 DevOps & Tool > Linux' 카테고리의 다른 글

Ansible - Failed to connect to the host via ssh(인프런 CI/CD 강의 에러)  (0) 2024.03.13
[CentOS 7] 아파치 시작 에러, Job for httpd.service failed because the control process exited with error code.  (1) 2022.06.29
[CentOS 7] configure: error: C compiler cannot create executables  (1) 2022.06.27
'🛠 DevOps & Tool/Linux' 카테고리의 다른 글
  • Ansible - Failed to connect to the host via ssh(인프런 CI/CD 강의 에러)
  • [CentOS 7] 아파치 시작 에러, Job for httpd.service failed because the control process exited with error code.
  • [CentOS 7] configure: error: C compiler cannot create executables
현주먹
현주먹
끄적끄적 개발.log
  • 현주먹
    현주먹의 개발로그
    현주먹
  • 전체
    오늘
    어제
    • 전체글 (162)
      • 👶🏻 CS (15)
        • Operating System (8)
        • Database (4)
        • Data Structure (2)
        • Software Engineering (1)
      • 💻 Dev (54)
        • Java & OOP (24)
        • Spring (4)
        • JPA (5)
        • Test Code (1)
        • Database (1)
        • JSP & Servlet (13)
        • Etc (6)
      • 💡 Algorithm (25)
        • 인프런 (9)
        • 백준 (16)
      • 🛠 DevOps & Tool (11)
        • Linux (4)
        • AWS (1)
        • Git (2)
        • Etc (4)
      • 📝 끄적끄적 (57)
        • 후기 및 회고 (5)
        • TDD, 클린 코드 with Java 17기 (3)
        • F-Lab (23)
        • 🖥️ 자바의 정석 (11)
        • 📖 Clean Code (3)
        • 항해99 코테 스터디 (11)
  • 블로그 메뉴

    • 🐈‍⬛ GitHub
    • TIL
  • 인기 글

  • 태그

    자바의정석
    오라클
    항해99
    til
    자바의신절판
    f-lab 후기
    99클럽
    에프랩
    코딩테스트준비
    로또 미션
    F-Lab
    백준10250
    오블완
    JPA
    객체지향
    jsp
    NextSTEP
    TDD 클린 코드 with Java
    개발자취업
    에프랩 후기
    인프런 단어뒤집기
    코테스터디
    ==와 equals()
    백준
    개발자멘토링
    PostGreSQL함수
    인프런 특정문자뒤집기
    C
    데브클럽
    티스토리챌린지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
현주먹
[CentOS 7] mod_jk를 이용한 Apache-Wildfly 연동
상단으로

티스토리툴바