[목차]

1. 로드밸런싱 처리1 - tomcat 포트 설정

2. 로드밸런싱 처리2 - mod_jk 설정, workers.properties 설정


사전 준비사항

1) 아파치 설치(yum 설치 or 소스설치)

https://jparkk.tistory.com/39

2) 톰캣 연동

https://jparkk.tistory.com/15


1. 톰캣 설정파일에서(server.xml)에서 포트를 변경한다.

※ 포트가 겹치게 되면 정상적으로 작동하지 않음!!!!

- 여러개의 톰캣을 연동하기 위해서 포트를 변경해야 하고, 각 톰캣의 포트 번호를 아래와 같이 변경했다.

  HTTP 포트 셧다운 포트 AJP 포트
tomcat1 8180 8105 8109
tomcat2 8280 8205 8209

(기본적용 포트 번호 → ajp 8009, 셧다운포트 8005, 톰캣http포트 8080)

 

 

2. mod_jk 설정 넣기

vi mod_jk.conf

# mod_jk.so 로드
LoadModule jk_module modules/mod_jk.so

<ifModule jk_module>

		# 아파치가 받은 요청을 'balancer'로 넘긴다.
        JkMount /* balancer

		# workers.properties 파일의 경로를 지정
        JkWorkersFile conf/workers.properties

		# 연동 관련 로그파일 관련 설정
        JkShmFile logs/mod_jk.shm
        JkLogFile logs/mod_jk.log
		
        # 로그파일의 레벨 설정
        JkLogLevel error
        
        # 로그파일에 찍히는 타임스탬프의 포멧을 지정
        JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

        # (옵션) 아래 내용을 넣으면 어느 톰캣으로 넘기는지 알 수 있다.
        JkRequestLogFormat "%w %R %V %T %U %q"

</ifModule>

 

3. workers.properties 설정

vi workers.properties


# worker list
worker.list=balancer,tomcat1,tomcat2

# balancer
worker.balancer.type=lb
worker.balancer.balance_workers=tomcat1,tomcat2

# tomcat1
worker.tomcat1.port=8109		# 해당 tomcat의 ajp 포트번호
worker.tomcat1.host=localhost	
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1		# 가중치 설정

# tomcat2
worker.tomcat2.port=8209		# 해당  tomcat의 ajp 포트번호
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1		# 가중치 설정

 

※ 참고

- mod_jk 설정 내용 중, [JkRequestLogFormat "%w %R %V %T %U %q"]이 포함되어 있으면 아래와 같이 나온다.

사용한 OS : RHEL 7, RHEL 8

 

[목차]

1. 아파치 설치 전 패키지 설치(yum)

2. 아파치 2.4.57 설치

3. 설치 확인

 


1. 아파치 설치 전 패키지 설치(yum)

1-1. RHEL 7 에서 진행 할 때

1) C, C++ 컴파일러 설치

- 소스 컴파일 하려면 gcc compiler 필요함

yum install -y gcc gcc-c++

2) XML parcer 라이브러리 설치

- 아파치 2.4 설치 할 때 apr, apr-util, pcre 패키지가 필요하다.

- apr, apr-util, pcre 패키지를 설치하려면 XML parser 라이브러리 설치해야한다.

yum install -y expat expat-devel expat-static

3) PCRE 설치

- wget으로 파일을 받아서 진행

- https://sourceforge.net/projects/pcre/files/pcre/ 에서 받는다.

 

1-2. RHEL 8에서 진행 할 때

make 패키지 설치해준다.(yum)

1) C, C++ 컴파일러 설치

- 소스 컴파일 하려면 gcc compiler 필요함

yum install -y gcc gcc-c++ make

2) XML parcer 라이브러리 설치

- 아파치 2.4 설치 할 때 apr, apr-util, pcre 패키지가 필요하다.

- apr, apr-util, pcre 패키지를 설치하려면 XML parser 라이브러리 설치해야한다.

yum install -y expat expat-devel

3) PCRE 설치

- wget으로 파일을 받아서 진행

- https://sourceforge.net/projects/pcre/files/pcre/ 에서 받는다.

 


2. Apache 2.4.57 설치

 

1) 아파치 설치에 필요한 파일 다운로드 (다운로드 파일 경로 : /usr/local/src)

- http

https://dlcdn.apache.org/httpd/

- apr / apr-utils

https://apr.apache.org/download.cgi

- pcre

https://sourceforge.net/projects/pcre/files/pcre/8.45/

$ cd /usr/local/src

# 아파치 다운로드 & 압축해제
wget https://dlcdn.apache.org/httpd/httpd-2.4.58.tar.gz
tar zxvf httpd-2.4.58.tar.gz

# apr 다운로드 & 압축해제
wget https://dlcdn.apache.org/apr/apr-1.7.4.tar.gz
tar zxvf apr-1.7.4.tar.gz

# apr-util 다운로드 & 압축해제
wget https://dlcdn.apache.org/apr/apr-util-1.6.3.tar.gz
tar zxvf apr-util-1.6.3.tar.gz

# prce 다운로드 & 압축해제
wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz
tar zxvf pcre-8.45.tar.gz

 

2) 컴파일 설치 순서(의존성 문제 떄문에 아래와 같은 순서로 진행 필요함)

arp → arp-util → pcre → httpd

 

3)  apr설치

# arp 소스파일 있는 경로로 이동
cd /usr/local/src/apr-1.7.4

# apr makefile 생성
./configure --prefix=/usr/local/src/apr-1.7.4

# 설치
make && make install

 

4) apr-util 설치

# arp-util 소스파일 경로로 이동
cd /usr/local/src/apr-util-1.6.3

# arp-util makefile 생성 + 의존성 소스의 경로를 넣어준다.
./configure --prefix=/usr/local/src/apr-util-1.6.3 --with-apr=/usr/local/src/apr-1.7.4

# 설치
make && make install

 

5) pcre 설치

# pcre 경로로 이동
cd /usr/local/src/pcre-8.45

# makefile 생성 + apr / apr-util 의존소스 경로 넣어서 진행
./configure --prefix=/usr/local/src/pcre-8.45 --with-apr-util=/usr/local/src/apr-util-1.6.3  --with-apr=/usr/local/src/apr-1.7.4

# 설치
make && make install

 

6) Apache 설치 진행

# httpd 설치 경로로 이동
/usr/local/src/httpd-2.4.57

# makefile 생성 + 의존소스 파일 다 넣어주기
# pcre-config 파일의 경로를 넣어야 함 !!!!
./configure --prefix=/usr/local/src/httpd-2.4.57 --with-apr-util=/usr/local/src/apr-util-1.6.3  --with-apr=/usr/local/src/apr-1.7.4  --with-pcre=/usr/local/src/pcre-8.45/bin/pcre-config

# 설치
make && make install

# 설치 확인
$ /usr/local/src/httpd-2.4.57/bin/apachectl -V
Server version: Apache/2.4.57 (Unix)
Server built:   Oct 17 2023 15:10:06
Server's Module Magic Number: 20120211:127
Server loaded:  APR 1.7.4, APR-UTIL 1.6.3, PCRE 8.45 2021-06-15
Compiled using: APR 1.7.4, APR-UTIL 1.6.3, PCRE 8.45 2021-06-15
Architecture:   64-bit
Server MPM:     event
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_PROC_PTHREAD_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr/local/src/httpd-2.4.57"
 -D SUEXEC_BIN="/usr/local/src/httpd-2.4.57/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

 

7)  Apache start

/usr/local/src/httpd-2.4.57/conf/httpd.conf 에서 ServerName을 넣어주고 start한다.

 


3. 아파치 설치확인

 

1) 브라우저에서 확인

브라우저로 확인 할 때, 방화벽(firewalld)의 활성화 여부를 꼭 체크하자

 

2) curl 명령어로 확인

curl localhost:80
<html><body><h1>It works!</h1></body></html>

 

8) 기타 - httpd, apachectl 명령어를 /bin에 복사해두면 편하게 쓸 수 있다.

cd /usr/local/src/httpd-2.4.57/
cp -arpv httpd /bin/

/usr/local/src/httpd-2.4.57/httpd/bin
cp -arpv apachectl /bin/

 

★ 참고 URL

https://anggeum.tistory.com/entry/Apache-HTTP-Server-v24-%EC%84%A4%EC%B9%98-Source-Compile
https://velog.io/@dongli/Web-%EC%84%9C%EB%B2%84-%EC%86%8C%EC%8A%A4-%EC%84%A4%EC%B9%98

※ 사전 내용 ※

1. 프로그램(Program)

- OS 상에서 실행할 수 있는 파일

- 메모리에 올라가 있지 않고, 실행되기를 기다리는 정적 데이터의 묶음

- 프로그램을 실행하면, 메모리에 올라가게 되고 동적 상태가 된다.

 

2. 프로세스(Process)

- 메모리에 올라와 실행되고 있는 프로그램 인스턴스

- 각 프로세스는 OS에게 독립된 메모리 영역을 할당받는다. 각 프로세스의 메모리 영역은 타 프로세스가 접근할 수 없다.

- 각 프로세스는 Code / Data / Stack / Heap 로 구성된 독립적인 메모리 영역이다.

 

3. 쓰레드(Thread)

- 하나의 프로세스 내에서 실행되는 여러 흐름의 단위

- 쓰레드는 프로세스 내의 Stack을 할당받고 Heap, Code, Data는 쓰레드간에 공유한다.

 

4. 멀티 프로세스

- 하나의 프로그램을 처리할 때, 여러 프로세스를 사용하여 처리

- 여러 프로세스 중 하나의 프로세스가 죽어도 타 프로세스에 영향을 받지 않고 정상적으로 처리된다.

- 멀티 쓰레딩 방식에 비해서 리소스 사용량이 많다.

 

5. 멀티 쓰레딩(Multi-Threading)

- 멀티 쓰레딩은 하나의 프로세스를 여러 개의 쓰레드로 구성하여 처리

- 각 쓰레드는 서로 자원을 공유하고 효율적으로 처리하기 때문에,  빠른 처리속도와 효율적인 리소스 사용 효과가 있다.

 

참고 URL

https://goodmilktea.tistory.com/24

 

 

Apache MPM

 

1. Apache MPM이란?

- Apache가 받은 요청을 처리하기 위해서 자식 프로세스에게 분배하는 모듈

- 종류 : Prefork, Worker, Event

 

2. Prefork 방식

1) 특징

- 1개의 요청에 1개의 프로세스를 할당하여 처리한다.

- 1개 프로세스에 1개의 쓰레드를 갖는다.

- 자식 프로세스들을 "StartServers" 설정값만큼 미리 생성한다.(최대 1024개까지 생성 가능)

* 요청 : 프로세스 : 쓰레드 = 1 : 1: 1

→ 1개의 요청에 대해 1개의 프로세스 속에 있는 1개 쓰레드에서 처리

 

2) 장점

- 각 요청은 각 프로세스가 처리하기 때문에, 특정 프로세스에서 문제가 발생해도 타 프로세스에 영향이 없다.

- 쓰레드간 독립적으로 메모리를 사용하므로 안정적이다.

 

3) 단점

- 다량의 요청을 처리하기 위해서는 많은 수의 프로세스가 필요하기 때문에 리소스 사용량이 증가한다.

- 통신량이 많은 서버에서는 상대적으로 불리하다.

 

3. Worker 방식

1) 특징

- 여러 개의 요청에 대해 1개 프로세스 내에 여러 쓰레드를 생성 및 할당하여 처리하는 방식

- 1개 프로세스 내에 여러 쓰레드를 생성한다.

* 요청 : 프로세스 : 쓰레드 = 5 : 1 : 5

→ 5개의 요청에 대해서 1개 프로세스 내 5개의 쓰레드가 처리

 

2) 장점

- 1개 프로세스에 할당된 리소스를 여러 쓰레드가 공유하므로 리소스 사용량이 비교적 적고 효율적으로 쓸 수 있다.

- 통신량이 많은 서버에서 비교적 유리하다.

 

3) 단점

- 각 프로세스 내에 여러 쓰레드가 있으므로, 프로세스 오류 발생하면 해당 프로세스의 모든 쓰레드가 영향받는다.

 

4. Event 방식

1) 특징

- Worker 방식을 토대로 하며, Nginx에서 사용하는 방식

- 고정된 프로세스 개수를 생성하여 처리한다.

 

2) 장점

- 동시에 요청이 많더라도 프로세스와 쓰레드 생성에 대한 비용이 발생하지 않는다.

- Event-driven(비동기 방식)을 이용하여 처리하며, 요청이 순서대로 처리되기까지 대기/중단되는 현상이 감소할 수 있다.

 

3) 단점

- 특정 요청에 대한 처리 시간이 길어진다면, 다른 요청의 처리 시간도 길어지는 현상이 발생할 수 있다.

 

5. MPM 지시어

1) Prefork

 

<IfModule mpm_prefork_module>

  StartServers                 64
  MinSpareServers         128
  MaxSpareServers         256
  ServerLimit                   2048
  MaxClients                   2048
  MaxRequestsPerChild     512

</IfModule>
StartServers Apache start시 자식 프로세스 개수
MinSpareServers Apache가 유지할 최소 자식 프로세스 개수
MaxSpareServers Apache가 유지할 최대 자식 프로세스 개수
ServerLimit Apache가 생성 가능한 최대 자식 프로세스 개수
(설정 값 이상 자식 프로세스를 생성 불가)
MaxClients 동시에 접속 할 수 있는 Client의 최대 값
MaxRequestsPerChild 1개의 자식 프로세스가 받을 수 있는 최대 요청 개수

 

2) Worker방식

 

<IfModule mpm_worker_module>
  StartServers                 3
  MinSpareThreads        256
  MaxSpareThreads        512
  ThreadLimit               4096
  ThreadsPerChild        128
  ServerLimit                32
  MaxClients               4096
  MaxRequestsPerChild  10000
</IfModule>
StartServers Apache start시 자식 프로세스 개수
MinSpareThreads Request spike를 처리할 최소한의 idle 쓰레드 개수
MaxSpareThreads idle 쓰레드 최대 개수
ThreadLimit 자식 프로세스 1개에 구성할 수 있는 최대 값
ThreadsPerChild 자식 프로세스가 생성할 쓰레드 개수
ServerLimit 생성 가능한 자식 프로세스의 개수
MaxClients
(=MaxRequestWorker)
동시에 처리될 커넥션 최대 개수
MaxRequestsPerChild
(=MaxConnectionsPerChild)
자식 프로세스가 처리할 request/커넥션 개수

 

 

참고 URL1

https://m.blog.naver.com/viaweb/222190352925

 

참고 URL2

https://sangchul.kr/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%95%84%ED%8C%8C%EC%B9%98-%EC%9B%B9%EC%84%9C%EB%B2%84-MPMprefork-worker-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95

[실행환경]

CentOS Linux release 7.9.2009 (Core)

openjdk version "11.0.19" 2023-04-18 LTS

Apache 2.4.6

Tomcat 10.1.11

 

앞서 진행한, 아파치-톰캣 연동 진행 내용에 이어지는 내용이다.

https://jparkk.tistory.com/15

 

아파치와 톰캣 연동

[실행환경] CentOS Linux release 7.9.2009 (Core) openjdk version "11.0.19" 2023-04-18 LTS Apache 2.4.6 Tomcat 10.1.11 1. 톰캣 홈페이지에서 다운로드 링크를 복사하고, 원하는 위치에 wget으로 다운로드 한다. 다운 받은 후

jparkk.tistory.com

 

1. 톰캣 설정파일에서(server.xml)에서 포트를 변경한다.

여러개의 톰캣을 연동하기 위해서 포트를 변경해야 하고, 각 톰캣의 포트 번호를 아래와 같이 변경했다.

(기본적용 포트 번호 → ajp 8009, 셧다운포트 8005, 톰캣http포트 8080)

tomcat-test1 http 포트 8180, 셧다운 포트 8105, ajp 포트 8109

tomcat-test2 http포트 8280, 셧다운 포트 8205, ajp 포트 8209

* 포트가 겹치게 되면 정상적으로 작동하지 않음

 

2. mod_jk.so 모듈 사용할 수 있도록 설정하기

1) conf.d 아래에 mod_jk.conf 만들기

LoadModule jk_module modules/mod_jk.so

<ifModule jk_module>
        JkWorkersFile conf.d/workers.properties

        JkShmFile logs/mod_jk.shm
        JkLogFile logs/mod_jk.log

        JkLogLevel error
        JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</ifModule>

 

2) workers.properties

→ balancer가 node1, node2에게 분배하는 방식

####################################################
# worker list
####################################################
worker.list=node1,node2,balancer

####################################################
# balancer
####################################################
worker.balancer.type=lb
worker.balancer.balance_workers=node1,node2

####################################################
# tomcat-test1
####################################################
worker.node1.reference=worker.template
worker.node1.host=localhost
worker.node1.port=8109

####################################################
# tomcat-test2
####################################################
worker.node2.reference=worker.template
worker.node2.host=localhost
worker.node2.port=8209

####################################################
# Worker Setting
####################################################
worker.template.type=ajp13
worker.template.socket_connect_timeout=7000
worker.template.socket_keepalive=true
worker.template.ping_mode=A
worker.template.ping_timeout=10000
worker.template.connection_pool_minsize=0
worker.template.connection_pool_timeout=600
worker.template.reply_timeout=300000
worker.template.recovery_options=3

ex2)

#worker_list
worker.list=balancer

#balancer
worker.balancer.type=lb
worker.balancer.balance_workers=tomcat1,tomcat2

worker.tomcat1.type=ajp13
worker.tomcat1.port=8109
worker.tomcat1.host=localhost

worker.tomcat2.type=ajp13
worker.tomcat2.port=8209
worker.tomcat2.host=localhost

 

3. 가상호스트에서 특정 도메인으로 접근시, 톰캣 인스턴스에게 분배되게 설정 하기

/etc/httpd/conf.d/vhosts.conf에서 아래 내용 추가

 

ex1)

<VirtualHost *:80>
       ServerName vhost3.hello.com
       DocumentRoot /var/www/html_vhost2
       ErrorLog "logs/vhost3.hello.com_error_logs"
       CustomLog "logs/vhost3.hello.com_access_logs" combined
       JkMount	/* balancer  >>>>>>>>>>>>> 이 부분이 두 톰캣 인스턴스에 분배 되게 하는 설정임
</VirtualHost>

ex2)

<VirtualHost *:80>
	ServerName www1.test.com

	CustomLog	"|/usr/bin/rotatelogs /usr/local/src/httpd-2.4.58/logs/www1.test.com.log 3600 " combined env=!VLOG
	ErrorLog	"|/usr/bin/rotatelogs /usr/local/src/httpd-2.4.58/logs/www1.test.com.error 3600 "

	JkMount		/* balancer
</VirtualHost>

 

 

[실행환경]

CentOS Linux release 7.9.2009 (Core)

openjdk version "11.0.19" 2023-04-18 LTS

Apache 2.4.6

Tomcat 10.1.15


1. 톰캣 홈페이지에서 다운로드 링크를 복사하고, 원하는 위치에 wget으로 다운로드 한다.

다운 받은 후, 압축을 풀고 원하는 수량 만큼 인스턴스를 압축해제 한다.

wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.15/bin/apache-tomcat-10.1.15.tar.gz

 

2. 필요한 패키지 다운로드

※ apache 소스설치를 했다면,  httpd-devel(=apxs)를 빼고 yum설치를 해야한다.

# 아파치를 yum 설치했을 때
yum install java-11-openjdk.x86_64 autoconf libtool httpd-devel

# 아파치를 소스설치 했을 때
yum install java-11-openjdk.x86_64 autoconf libtool

* 톰캣 10.1버전은 지원되는 자바 버전이 11이상이다. → 톰캣 홈페이지 참고(https://tomcat.apache.org/whichversion.html)

 

3. 톰캣 홈페이지에서 커넥터 다운로드, 다운 받은 파일 압축해제 & mod_jk 컴파일 설치를 진행한다.

wget https://dlcdn.apache.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.49-src.tar.gz
# 톰캣 connector 디렉토리로 이동
cd tomcat-connectors-1.2.49-src

# native 디렉토리로 이동
cd native

# 컴파일 설치 진행
# apxs 경로를 알 수 없다고 나올 경우, whereis apxs로 확인 필요
# 아파치를 소스설치 한 경우, apxs 경로 확인 필요!!!!!
# apxs 경로 예시) /usr/local/src/httpd-2.4.57/bin/apxs
./configure --with-apxs=/usr/bin/apxs

make && make install

# mod_jk.so 파일이 정상적으로 설치 된 것인지 확인한다.
# find 명령어로 검색되지 않으면 제대로 설치 되지 않은 것
find / -name "mod_jk.so"

# apache를 소스설치 한 경우, mod_jk.so 파일을 소스설치 경로로 복사해준다.
cp -arp mod_jk.so /usr/local/src/httpd-2.4.57/modules

make install 진행 후, /usr/lib64/httpd/modules경로에 mod_jk.so가 있으면 정상적으로 진행 된 것이다.

 

※  configure: error: You must specify a valid --with-apxs path → 에러 발생시 처리방법(RHEL 8 에서 발생)

- 아파치 소스설치한 경로로 이동

- apxs 파일을 열어서 1번 줄 문장을 아래와 같이 수정해주면 해결된다.

vi /usr/local/src/httpd-2.4.57/bin/apxs

# apxs 파일의 1번줄 기존 내용
#!/replace/with/path/to/perl/interpreter -w

# apxs 파일의 1번줄 내용을 아래와 같이 바꿔준다.
#!/usr/bin/perl

 

4. 아파치 - 톰캣 연동 진행

 

1) Apache conf 파일에서 내용 추가한다.

LoadModule jk_module modules/mod_jk.so

<VirtualHost *:80>	
	JkMount /* balancer
</VirtualHost>
 
<ifModule jk_module>
        JkWorkersFile conf/workers.properties

        JkShmFile logs/mod_jk.shm
        JkLogFile logs/mod_jk.log

        JkLogLevel error

        JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</ifModule>

 

2) workers.properties 내용을 아래와 같이 추가한다.

vi workers.properties

# worker list
worker.list=balancer

# balancer
worker.balancer.type=lb
worker.balancer.balance_workers=tomcat1

# tomcat1
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13

 

3) 톰캣 server.xml 파일에서 AJP 포트 활성화

address="0.0.0.0"  secretRequired="false" 를 넣지 않으면 정상작동 하지 않으니 주의!!!

(중략)
    <Connector protocol="AJP/1.3"
               address="0.0.0.0"
               secretRequired="false"
               port="8009"
               redirectPort="8443"
               maxParameterCount="1000"
               />
(중략)

 

1) 톰캣을 start한다.

/home/tomcat-test1/bin/startup.sh

* 톰캣 중지는 bin/shutdown.sh 이다.

 

 

2) 톰캣 포트가 올라왔는지 확인한다.(디폴트 상태라면 8080포트가 LISTEN상태다.)

 

3) 브라우저로 80포트 접근시 톰캣 그림 출력 된다면, 정상적으로 아파치-톰캣 연동 완료

실행 환경 : Centos7

 

1, 아파치(httpd 2.4) 설치

$ yum install httpd

 

2.  httpd start + 설치된 것 확인

$ systemctl start httpd

$ httpd -V

3. httpd.conf에서 www.hello.com으로 ServerName 지정

ServerName  www.hello.com  

 

4. DocumentRoot에 hello.com에 대한 html 파일 넣고 확인

 

5. 이름 기반 가상호스트 2개 적용해보기

* 이름 기반 가상호스트는 1대의 서버에 여러 도메인을 사용할 때 유용하다.

/etc/httpd/conf.d/vhost.conf를 생성하여 아래와 같이 적용

각 DocumentRoot에 다른 내용의 index.html을 넣어주었다.

해당 도메인들을 PC hosts 파일에 추가하였다.

<VirtualHost *:80>
          ServerName vhost1.hello.com   → 가상호스트1
          DocumentRoot /var/www/html_vhost1
          ErrorLog "logs/vhost1.hello.com_error_logs" 
          CustomLog "logs/vhost1.hello.com_access_logs" combined
</VirtualHost>

<VirtualHost *:80>
          ServerName vhost2.hello.com   → 가상호스트2
          DocumentRoot /var/www/html_vhost2
          ErrorLog "logs/vhost2.hello.com_error_logs" 
          CustomLog "logs/vhost2.hello.com_access_logs" combined
</VirtualHost>

 

+ Recent posts