1. Apache 2.4 설치

2020/08/24 - [IT/Linux] - [Linux] CentOS 7 - Apache2.4 다운로드 및 컴파일

 

2. Tomcat 8 설치

2020/02/19 - [IT/Linux] - [Tomcat] CentOS 7에 Tomcat8 설치 및 설정

3. mod_jk.so 설치 및 컴파일

mod_jk.so는 AJP(Apache Jserv Protocol) 프로토콜을 이용해서 Apache와 Tomcat을 연동해주는 모듈입니다.

아파치 설치 경로 : /usr/local/apache2
설치 경로가 다르다면 아파치 경로를 입력할 때, 자신이 설치한 경로로 변경해 기입해줍니다.
# cd /usr/local

# 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

# ./configure --with-apxs=/usr/local/apache2/bin/apxs
# make
# make install

컴파일이 완료되었다면 /usr/local/apache2/modules/에 mod_jk.so파일이 있는지 확인합니다.

configure: error: Invalid location for apxs: '/usr/local/apache2/bin/apxs' 에러가 발생했을 경우 아래와 같이 설정을 변경해줍니다.

# vi /usr/local/apache2/bin/apxs

맨위에 #!/replace/with/path/to/perl/interpreter -w 를  #!/usr/bin/perl -w 로 변경합니다.

perl이 설치되지 않았다면 다음 명령어를 실행합니다.
yum install perl 
/usr/local/tomcat8/conf/server.xml
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
AJP Connect port가 8009로 되어있는지 확인합니다.

4. apache & tomcat 연동 설정

1) workers.properties

apache와 연동할 worker(tomcat)들을 설정합니다.
# cd /usr/local/apache2/conf
# vi workers.properties

worker.list=tomcat01 // apache와 연동할 tomcat을 입력합니다.
 
worker.tomcat01.port=8009      // AJP 포트
worker.tomcat01.host=localhost // tomcat host
worker.tomcat01.type=ajp13     // ajp1.3 사용 

2) httpd.conf

# vi /usr/local/apache2/conf/httpd.conf

# mod_jk.so 모듈의 위치
LoadModule jk_module /usr/local/apache2/modules/mod_jk.so

# workers.properties 설정 파일 위치
JkWorkersFile /usr/local/apache2/conf/workers.properties

# mod_jk log 위치
JkLogFile /usr/local/apache2/logs/mod_jk.log

# Load balancing workers will not function properly 오류 대응
JkShmFile /usr/local/apache2/logs/mod_jk.shm

# /* 요청을 모두 tomcat01으로 넘긴다
JkMount /* tomcat01
httpd.conf 파일 맨 아래에 위와 같은 코드를 추가해줍니다.

mod_jk.so모듈을 로드하고 연동할 톰캣 정보가 담긴 workers.properties파일을 로드합니다.
그리고 mod_jk.log 위치와 mod_jk.shm 위치를 설정해줍니다.

 

5. apache 재시작 및 테스트

/usr/local/apache2/bin/apachectl restart

브라우저에서 tomcat URL을 80포트로 접근했을 때, 접근이 되어야합니다.
tomcat manager를 통해 테스트를 진행해보겠습니다.

http://192.168.139.130/manager
포트를 따로 입력하지않으면 80포트로 접근 합니다.

위와 같이 접근이 된다면 연동 성공입니다.

 

CentOS 7에 Apache2.4 설치 및 컴파일 그리고 httpd Service 등록하는 방법에 대한 정리 글입니다.

 

1. 필수 툴 설치

# yum install gcc gcc-c++ expat-devel.x86_64 pcre-devel

 

2. pcre 다운로드 및 컴파일

# mkdir /usr/local/download
# cd /usr/local/download

# wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.44.tar.gz
# tar zxvf pcre-8.44.tar.gz
# cd pcre-8.44

# ./configure --prefix=/usr/local
# make
# make install

 

3. apr-util, apr, httpd 다운로드 및 컴파일

# cd /usr/local/download
# wget http://mirror.apache-kr.org/httpd/httpd-2.4.46.tar.gz
# wget http://mirror.apache-kr.org/apr/apr-1.7.0.tar.gz
# wget http://mirror.apache-kr.org/apr/apr-util-1.6.1.tar.gz

# tar zxvf apr-1.7.0.tar.gz
# tar zxvf apr-util-1.6.1.tar.gz
# tar zxvf httpd-2.4.46.tar.gz

# mv apr-1.7.0 ./httpd-2.4.46/srclib/apr
# mv apr-util-1.6.1 ./httpd-2.4.46/srclib/apr-util

# cd /usr/local/download/httpd-2.4.46
# ./configure
# make
# make install

 

4. httpd.conf의 ServerName 수정

# vi /usr/local/apache2/conf/httpd.conf
파일의 193번째 라인


ServerName localhost:80

 

5. apache 실행 및 확인

# cd /usr/local/apache2/bin
# ./apachectl start

#ps -ef|grep httpd

 

6. apache 테스트

1) 내부 작동 테스트

# wget http://127.0.0.1

/usr/local/apache2/htdocs 경로에 위치한 index.html이 다운로드 된다.

2) 외부 접근 테스트

방화벽이 실행되고 있고, 80포트에 대한 허가가 없다면 외부에서 접근할 수 없다.

2-1) 방화벽 80포트 허용하기

# 방화벽 실행 확인
# firewall-cmd --state
running

# 현재 사용중인 Zone 확인
# firewall-cmd --get-default-zone
public

# 80포트 허용
# firewall-cmd --permanent --zone=public --add-port=80/tcp
success

# 방화벽 재시작
# firewall-cmd --reload
success

# 방화벽 적용 확인
# firewall-cmd --zone=public --list-all
외부에서 접근이 되는지 테스트해보려면 브라우저에 IP 또는 도메인을 입력하면 된다. 

index.html 페이지 접근

7. httpd service 등록 ( init.d, systemctl )
둘 중 한가지 선택해주시면 됩니다.

1) /etc/init.d (CentOS 6에서 주로 쓰임)

# cd /etc/init.d
# cp /usr/local/apache2/bin/apachectl ./httpd
# vi httpd
맨 위에 다음과 같이 입력한다.

#!/bin/sh 

# httpd Startup script for the Apache HTTP Server 
# chkconfig: 345 85 15 
# description: Apache is a World Wide Web server. It is used to serve 
# processname: httpd 
# pidfile: /usr/local/apache2/logs/httpd.pid

...

저장 후에 서비스에 등록한다.

# chkconfig --add httpd
# chkconfig --level 345 httpd on
# chkconfig --list

# service 명령어 테스트
# service httpd stop
# service httpd start

 

2) systemctl (CentOS 7에서 주로 쓰임)

# cd /usr/lib/systemd/system
# vi apache.service
[Unit] Description=apache2 Service 
After=syslog.target 
After=network.target 

[Service] 
Type=forking 
ExecStart=/usr/local/apache2/bin/apachectl start 
ExecStop=/usr/local/apache2/bin/apachectl graceful-stop 
ExecReload=/usr/local/apache2/bin/apachectl graceful 

User=root
Group=root

[Install] 
WantedBy=multi-user.target
//데몬 재시작
# systemctl daemon-reload

//linux 재시작 시 apache 자동 실행 등록
# systemctl enable apache

+ Recent posts