• 가상호스트 VirtualHost 설정 -Port- :: 마이구미
    리눅스 2016. 11. 22. 20:51

    이번 글은 가상호스트에 대하여 다룰 것이다.

    하나의 서버에는 기본적으로 주호스트가 존재한다.

    그렇다면 가상호스트란 무엇인가?

    웹호스팅을 예로 들어보겠다.

    대부분 cafe24의 웹호스팅을 많이 사용하거나 사용해봤을 것이다.

    만약 웹호스팅을 사용하고 있다면 그것이 바로 가상호스트이다.


    무슨 말인가?

    웹호스팅이 무엇인지 먼저 살펴보자.

    웹호스팅은 하나의 서버를 일정공간을 임대하여 사용하는 서비스이다.



    그림과 같이 웹호스팅 서비스는 하나의 서버에서 다수가 사용하고 있다.

    이 경우를 아파치의 가상호스트 설정을 통해 할 수 있는 것이다.


    반대로 얘기해보자.

    서버호스팅은 단독 서버이기에 본인만 사용하는 서버이다.

    그렇다는건 본인 또한 가상호스트를 이용하여 웹호스팅처럼 다수의 공간을 만들 수 있다는 것이다.

    이 말은 즉, 하나의 서버에서 다수의 페이지를 관리할 수 있다는 점이다.

    웹호스팅을 10개 사겠느냐? 서버호스팅 1개 사서 가상호스트를 10개 만들겠느냐?

    관리와 비용 및 모든 측면에서 가상호스트를 이용하는 것이 효율적이다.


    본인은 위와 같이 하나의 서버에서 다수의 홈페이지를 관리할 수 있는 작업을 다룰 것이다.


    가상호스트에도 종류가 있다.


     이름기반의 가상호스트(Name-based virtual host)

    ● 주소기반의 가상호스트(IP-based virtual host)

    ● 포트기반의 가상호스트(Port-based virtual host)

    ● 기본 가상호스트(Default virtual host) 


    각 종류에는 본인 스타일에 맞게 사용하면 되지만 거의 비슷한 목적으로 사용한다.

    이번 글에서의 본인은 포트기반의 가상호스트를 중점으로 다룰 것이다.

    본인은 포트기반의 가상호스트를 이용하여 개발서버에 활용한다.


    본격적으로 설정을 해보겠다.

    os 종류에 따라 살짝 다르지만 기본적인 리눅스 명령어만 숙지하고 있다면 크게 어렵지 않다.

    centos를 기반으로 진행하겠다. 

    처음 아파치를 설치한다면 기본적인 홈디렉토리는 /var/www/html로 설정되어 있다.

    이번 글은 홈디렉토리를 /home 으로 설정하여 home 디렉토리 안에서 다수의 페이지를 관리할 것이다.


    먼저 httpd.conf 파일을 찾자.

    find / -name httpd.conf

    httpd.conf 파일을 열어보자.

    Listen 80

    ...............

    #<VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com # DocumentRoot /www/docs/dummy-host.example.com # ServerName dummy-host.example.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common #</VirtualHost>

    다른건 놔두고 위와 같은 코드들을 보자.

    Listen을 통해 포트를 열 수 있다.

    Listen 8080 을 추가한다면 8080 포트가 열릴 것이다.
    VirtualHost를 이용하여 각 페이지들을 요청 경로를 설정하면 된다.


    한번 예를 들어보겠다.

    Listen 80

    Listen 8080

    ...............

    <VirtualHost *:80> ServerAdmin 'id'@gmail.com DocumentRoot "/home/test1/public_html" <Directory "/home/test1/public_html"> AllowOverride All </Directory> <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule> ServerName "domain" ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> <VirtualHost *:8080> ServerAdmin 'id'@gmail.com DocumentRoot "/home/test2/public_html" <Directory "/home/test2/public_html"> AllowOverride All </Directory> ServerName "domain" ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common </VirtualHost>


    httpd.conf 파일을 수정한다면 꼭 웹서버를 재시작해주어야한다.

    재시작 후 포트가 열린지 명령어를 통해 확인하면된다.

    service httpd restart // 재시작

    netstat -an | grep "LISTEN " // 포트 확인

    위와 같이 설정한다면 domain:80 를 접속했을 시 /home/test1/public_html 경로에 있는 index.php 를 열게 된다.

    그리고 domain:8080 를 접속했을 시는 /home/test2/public_html 경로에 있는 index.php 를 열게 되는 것이다.


    DocumentRoot "/home/test2/public_html" // 요청 경로

    ServerName "domain" // IP or Domain

    <Directory "/home/test2/public_html"> AllowOverride All </Directory>

    아파치의 보안문제로 인해 디렉토리가 막혀있을 수 있기에 위의 코드를 VirtualHost 설정부분에서 추가하여야한다.


    이런 식으로 포트만 바꿔 개발서버를 통해 페이지들을 관리할 수 있다.

    댓글 0

Designed by Tistory.