■ CentOS 7 64bit [제가포스팅한 설치이후 환경에서 작업]

■ kernel 4.9 [저는 최신 커널에서 작업합니다. 기존커널에서 작업하셔도 됩니다]

■ APM [Apache 2.4.x 이상 버전이 설치된 환경입니다. 버전은 달라도 작동방식은 거의 대부분 비슷합니다]

■ 일부 설정이나 경로가 다를수 있습니다. 실서버가 아닌 VMware 환경에서 작업이 이루어집니다.


가상호스트 (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에서만 확인 가능한방법입니다. [혹은 공유기가 연결된 같은 사설(내부)네트워크]


렇게 가상호스트설정을 적절하게 잘 이용한다면 한서버에 여러개의 홈페이지를 셋팅하여 이용할수 있으며 호스팅 비용을 절약할수 있는 효과를 볼수 있습니다. 그리고 한서버에 업로드를 하기때문에 관리차원에서도 편합니다.


이렇게 가상호스트에 대해서 알아보았는데요. 최대한 쉽게 전달하기위해 모든 테스트 화면을 직접 보여드리지만 이마저도 어렵게 느껴지는 분들이 있을수 있습니다. 책이나 매뉴얼을 만드는 저자분들은 대단하다고 생각이 듭니다.


※ 출처 : http://aeac.tistory.com/23

'프로그래밍 > linux' 카테고리의 다른 글

RHEL/CentOS 7 에서 방화벽(firewalld) 설정하기  (0) 2018.03.08
CentOS SELinux 설정 및 해제하기  (0) 2018.03.08
CentOS 7 웹서버 구축 [APM] - YUM설치  (0) 2018.03.08
SVN 명령어  (0) 2018.03.02
용량확인  (0) 2018.03.02

+ Recent posts