가상 호스트 (virtual host)란?
기본적으로 웹서버에 존재하는 주 호스트 즉 예로 (aaa.com)이라는 도메인을 등록하여 사용하고 있지만 추가적으로 한 서버에 (bbb.com) / (ccc.com) 등 여러 도 메인을 등록하여 사용한다는 의미입니다. 가상 호스트에도 여러 종류의 방면으로 운용을 할 수 있지만 일반적으로 하나의 컴퓨터(서버)나 IP로 여러 이름의 도메인으로 각각 운용할 수 있다는 부분입니다.
일반적인 웹서버 (서버 3대) |
가상호스트 웹서버 (서버 1대) |
aaa.com (IP : 111.111.111.111) |
aaa.com (IP : 111.111.111.111) |
bbb.com (IP : 222.222.222.222) |
bbb.com (IP : 111.111.111.111) |
ccc.com (IP : 333.333.333.333) |
ccc.com (IP : 111.111.111.111) |
이러한 가상 호스트 서버를 이용하여 제한된 공간 안에서 여러 개의 홈페이지를 제공해주는 서비스가 (웹, 메일 등) 호스팅 서비스입니다.
그럼 지금부터 서버한대에 여러 도메인을 등록하는 방법을 알아보겠습니다.
■ Apache - 가상호스트(httpd.conf) 설정
1. httpd.conf 파일을 열어 추가 수정
BASH
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf
.
. (맨 아래라인에 추가 / 이미 있다면 # 주석 제거)
356 NameVirtualHost *:80 ( 추가 / Apache 2.4.x 이상이므로 해당 버전에서는 추가 안 해도 됩니다. ) 357 358 include /etc/httpd/conf/vhost.conf (추가)
359 360 <Directory "/home"> (추가) 361 AllowOverride None 362 Require all granted 363 </Directory>
:wq (저장)
[참고]
■ NameVirtualHost *:80
이름 기반의 가상 호스트(도메인별) 사용하겠다는 뜻입니다.
추가 내용(2017-02-27)
Apache 2.4.x 이상 버전에서 [NameVirtualHost *:80] 옵션을 넣을 시 아래와 같은 문구가 발생하는데요.
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf/httpd.conf:356
문제는 없습니다. 다만 이상 버전에서는 사용 선언을 안 해도 적용되게끔 변경이 된 건데... 어쩐지 처음 httpd.conf 설정 파일에 없었던 이유가 있었네요.
다음 릴리즈에서는 해당 오류 메시지를 없앤다고 하니 무시하셔도 되는 로그입니다. 신경이 쓰인다면 지우는 것을 권고합니다.
Apache 2.4.x 이하 버전에서는 꼭 해주시기 바랍니다.
■ include /etc/httpd/conf/vhost.conf
httpd.conf 안에 바로 설정하여도 되지만 여러 개의 도메인을 등록하여 관리를 하시려고 하신다면 별도의 파일을 만들어 관리하시는 게 좋습니다.
(Yum으로 설치한 아파치는 샘플 파일이 없기 때문에 직접 생성하여 등록을 진행해야 합니다.)
Source 직접 설치하였다면 일반적인 경로는../apache/conf/extra/httpd-vhosts.conf 혹은 vhost.conf 샘플 파일이 있습니다.
■ <Directory "경로" , Require all granted> 추가
/home 경로에 도메인을 소스 업로드 및 홈페이지 테스트 불러올 수 있게 디렉터리 접근 권한을 허용해야 합니다.
만약 하지 않으면 다음과 같이 페이지 접근할 수 없다는 에러 페이지가 뜨실 겁니다.
[Thu Feb 23 15:48:06.717299 2017] [authz_core:error] [pid 4172] [client 192.168.223.1:55533] AH01630: client denied by server configuration
Apache 2.4 버전 이상일 경우 |
Apache 2.4 버전 이하일 경우 |
<Directory "/디렉터리 경로"> AllowOverride None Require all granted </Directory> |
<Directory "/디렉토리 경로"> AllowOverride None Order allow, deny Allow from all </Directory> |
와 같이 세팅하시면 됩니다.
2. vhost.conf 파일 생성 및 설정
BASH
[root@localhost ~]# vi /etc/httpd/conf/vhost.conf
############### webtest11.com Start ############### <VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com DocumentRoot /home/test ServerName webtest11.com ServerAlias www.webtest11.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> ############### webtest11.com End ################# ############### webtest22.com Start ############### <VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com DocumentRoot /home/test2 ServerName webtest22.com ServerAlias www.webtest22.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> ############### webtest11.com End #################
:wq (저장)
[참고]
■ 잘모르겠다면 그대로 전체 복사하여 저장 및 진행하시면 됩니다.
■ 각 설정 의미 (아래 호스트 하나가 한 세트입니다 / # 주석처리는 선택사항입니다, 없어도 됩니다. )
<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com ← 서버 관리자(임의로 설정)
DocumentRoot /home/test ← 홈 디렉터리
ServerName webtest11.com ← 연결할 도메인(DNS 설정이랑 같게 해야 함)
ServerAlias www.webtest11.com ← 연결할 도메인(다른 도메인, DNS 설정이랑 같게 해야 함)
# ErrorLog logs/dummy-host.example.com-error_log ← 에러 로그(선택사항)
# CustomLog logs/dummy-host.example.com-access_log common ← 접속 로그(선택사항)
</VirtualHost>
3. 홈페이지 경로(DocumentRoot) 및 테스트 페이지 생성
BASH
[root@localhost ~]# mkdir /home/test (DocumentRoot 경로 생성) [root@localhost ~]# mkdir /home/test2 (DocumentRoot 경로 생성)
BASH
[root@localhost ~]# vi /home/test/index.html (test 할 페이지 생성)
webtest11.com Test page! <br/> If you see this screen, it is good setting!
:wq (저장)
BASH
[root@localhost ~]# vi /home/test2/index.html (test2할 페이지 생성)
webtest22.com Test page! <br/> If you see this screen, it is good setting!
:wq (저장)
BASH
[root@localhost ~]# chmod -R 755 test (읽기 쓰기 권한 부여)
[root@localhost ~]# chmod -R 755 test2 (읽기 쓰기 권한 부여)
[root@localhost ~]# ls -al /home (권한 변경 및 생성 확인)
.
.
drwxr-xr-x (권한 확인) 2 root root 4096 2?? 23 16:36 test drwxr-xr-x (권한 확인) 2 root root 4096 2??23 16:38 test2
4. 아파치(Apache) 재시작 적용
BASH
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# ps -ef | grep httpd
root 4517 1 0 16:45? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 4519 4517 0 16:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 4520 4517 0 16:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 4521 4517 0 16:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 4522 4517 0 16:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 4523 4517 0 16:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND root 4525 2195 0 16:45 pts/0 00:00:00 grep --color=auto httpd
■ 실전테스트(웹 페이지 연결)
원래는 홈페이지를 연결하기 위해서는 실제 도메인을 네임서버에 A레코드를 연결해야 하지만 현재는 도메인이 존재하지 않기 때문에 본인 PC 에서 강제로 호스트를 지정하여 홈페이지를 연결하는 방법을 알려드리도록 하겠습니다. 해당 방법을 알고 있다면 굳이 호스팅 업체에 맡길 필요 없이 홈페이지 소스를 업로드하여 페이지가 정상적으로 뜨는지를 확인 및 테스트할 수 있습니다.
1. 개인 PC (hosts 파일 수정)
경로 : C:\Windows\System32\drivers\etc
(경로는 Windows 7, Windows 8.1, Windows 10 버전 동일합니다.)
[다음]
[만약 저장 시 권한이 없다고 뜬다면 백신 프로그램에 의해 보호받고 있는지 확인 OFF 진행]
2. 연결 테스트
명령 프롬프트를 통해 PING 테스트를 확인합니다.
최종적으로 실제 브라우저를 통해 홈페이지가 정상적으로 연결이 되는지 확인해 봅니다.
위와 같이 페이지가 보인다면 정상적으로 가상 호스트 설정이 완료가 되었습니다.
※ 이는 자기 PC에서만 확인 가능한 방법입니다. [혹은 공유기가 연결된 같은 사설(내부) 네트워크]
이렇게 가상 호스트 설정을 적절하게 잘 이용한다면 한 서버에 여러개의 홈페이지를 셋팅하여 이용할수 있으며 호스팅 비용을 절약할수 있는 효과를 볼수 있습니다. 그리고 한서버에 업로드를 하기 때문에 관리 차원에서도 편합니다.
이렇게 가상 호스트에 대해서 알아보았는데요. 최대한 쉽게 전달하기 위해 모든 테스트 화면을 직접 보여드리지만 이마저도 어렵게 느껴지는 분들이 있을 수 있습니다. 책이나 매뉴얼을 만드는 저자분들은 대단하다고 생각이 듭니다.
앞으로도 좀 더 쉽게 전달할 수 있도록 최대한 자세하게 포스팅할 수 있도록 하겠습니다.
지적 및 오타 정보공유 감사합니다.
'linux > CentOS' 카테고리의 다른 글
[CentOS7] 리눅스 DNS 서버 구축 (0) | 2021.01.05 |
---|---|
vsftpd 설치 (0) | 2020.06.16 |
[CentOS7 APM 설치] (0) | 2020.06.16 |
CentOS 7 firewall 방화벽 설정 (0) | 2020.04.01 |
CentOS7 - APM 웹서버 구축 (0) | 2020.04.01 |