현재 운영중인 Web Service의 유지 보수를 위해, 개인 PC에 APM(Apache Php Mysql)을 이용하여 개발환경을 구축하게 되었다. 또한 그 과정 중 Apache Virtual Host를 사용하게 되었다.

여기서는 전체 개발 환경 구축 과정 중 처음 경험하게된 Apache Virtual Host에 대해 포스팅 할 것이며, Apache Virtual Host가 무엇이고 어떻게 설정 및 사용하는지 알아볼 것이다.



Apache Virtual Host란?

  Web Server에는 기본적으로 존재하는 Host가 있으며, 이를 Main Host라고 한다. 하나의 Web Server에는 Main Host 외에 별도의 디렉토리를 가진 여러개의 Host를 설정하여 사용할수 있다.

  이 중 Main Host 외에 나머지 Host를 모두 Virtual Host라고하며, 이를 이용하여 하나의 컴퓨터에서 여러개의 Web Site(예를 들어 Embian1.com, Embian2.com)를 서비스할수 있다. Apache에서는 Name-based Virtual Host  IP-based Virtual Host 두 가지 방식을 제공한다. 글쓴이는 Apache가 제공하는 두 가지 방식 중 Name-based Virtual Host 방식을 이용하여 Virtual Host를 설정하고 적용해 보았다.

아래에서 간단하게 설명하겠지만, 자세한 설명이 필요하다면 링크를 걸어두었으니 참고하길 바란다.


1. Name-based Virtual Host 

  일명 이름 기반의 가상호스트라고 한다. 이것은 하나의 IP Address당 여러 이름을 가지는 방식이며, 가장 보편적인 방법이다. 


2. IP-based Virtual Host

  일명 IP Address 기반의 가상호스트라고 하며, 각 웹 사이트마다 다른 IP Address 또는 Port를 가지는 방식이다. IP Address를 다르게 하는 방법도 있지만, 동일한 Ip Address를 주고 Port를 다르게 하는 방법도 있다.

  (1) IP Address를 다르게 하는 방법


 (2) Port를 다르게 하는 방법



Apache Virtual Host 설정

Apache Virtual Host가 무엇인지는 간단하게 파악했으니, 설정 방법에 대해 알아보자. 다시 한번 말하지만, 글쓴이는 Apache가 제공하는 두 가지 방식 중 Name-based Virtual Host 방식을 이용하여 Virtual Host를 설정하였다.


1. Test용 Web Site 디렉토리 및 Sample Page 생성

  (1) Test용 Web Site 디렉토리 생성 : mkdir -p /var/www/example

  (2) 결과 확인을 위한 Sample Page 생성 : vi /var/www/example/index.html

  

  글쓴이는 Sample Page로 간단하게 아래와 같이 만들었다.

  


2. Test용 Virtual Host 설정

  (1) Apache에서 제공하는 Main Host 파일 복사 :  

  cp /etc/apache2/sites-available/000-default.conf  /etc/apache2/sites-available/example.conf

  (2) 복사한 파일 열기 : vi /etc/apache2/sites-available/example.conf

  (3) 복사한 파일 수정 : 'example.conf'를 아래와 같이 수정한 후 저장한다.

 ServerName

  사용할 도메인명 입력

  글쓴이 설정 : embian.example.com

 ServerAdmin

  에러 발생시 에러 정보가 전송될 이메일 등록

   글쓴이 설정 : 기본 설정

 DocumentRoot

  사용할 도메인으로 접속했을때 처음 접속되는 디렉토리 경로 (Index 파일이 위치한)

   글쓴이 설정 : /var/www/example

 ErrorLog

  Error Log 경로 및 파일 이름

   글쓴이 설정 : 기본 설정 (/var/log/apache2)

 CustomLog

  Custom Log 경로 및 파일이름

   글쓴이 설정 : 기본 설정 (/var/log/apache2)

기타 다른 설정에 대해서는 여기를 참조하길 바란다.



Apache Virtual Host 적용

  설정한 Virtual Host를 적용한다. 적용하기 위해서는 먼저 앞서 만든 '/etc/apache2/sites-available' 디렉토리에 있는 'example.conf '파일을 '/etc/apache2/sites-enabled'에 등록 시킨 후, Apache Service를 Reload 해주어야 한다.

(* 참고 : 'sites-available'은 호스팅 되지 않은 설정이 저장되며, 'sites-enabled'에는 호스팅 되는 설정이 저장 된다.)


  (1) 'sites-enabled'에 등록 : a2ensite example.conf

(*참고 : 'a2ensite'은 해당 파일을 'sites-available'에서  'sites-enabled'으로 등록시켜주는 명령어이다.)

  (2) Apache Reload : service apache2 reload

  



결과 확인

  앞서 생성한 'index.html' 파일과 같은 결과가 나오는지 웹 사이트에 들어가 확인하기 위해, 먼저 도메인이 DNS에 등록되어 있어야 하지만 글쓴이는 Local에서 구동할 것이므로 간단히 로컬에서 테스트하는 방법을 설명하겠다. 

  도메인 입력시 Network Process가 가장 먼저 들리는 파일은 Hosts 파일이다.  따라서 이 파일에 사용할 도메인 명과 IP Address를 입력한다. 

  (1) /etc/hosts 파일 수정 : 사용할 도메인 명 및 IP Address를 추가한다.

글쓴이는 Local에서 실행하므로 'localhost'옆에 적어주었다.

  


  (2) Web Site

  


여기까지 Apache Virtual Host 무엇이며, 설정 및 결과 확인에 대해 알아보았다.

Virtual Host를 설정해보기 전까지만 해도 어찌 해야할지 막막하기만 했는데,  막상 하고 보니 '별거 아니네'하는 생각이든다. 간단한 만큼 겁먹지말고 한번쯤 직접 해보고, 유용하게 사용하길 바란다.


Posted by minji7

댓글을 달아 주세요