하위 DNS 추가 및 Apache 가상 호스트 생성

OS/Linux 2019. 3. 18. 23:12 posted by TechNote.kr


1차 도메인 : kr

2차 도메인 : technote.kr

3차 도메인 : forum.technote.kr


DNS 는 가비아나 후이즈와 같은 대행 업체를 통해 구매가 가능하고, 기본적인 설정이 가능하다. 


하나의 서버에 여러개의 DNS 주소를 연결하고자 할 때에는 DNS 설정만으로는 불가능하다. 서버 내 가상 호스트를 생성하여 들어 오는 DNS 요청에 따라 적합한 웹으로 연결 시켜 주어야 한다. 




전체적인 순서는 다음과 같다. 


  1. DNS 설정을 통해 연결하기 원하는 주소를 등록(e.g> forum.technote.kr) 하고 해당 주소를 IP 에 mapping 시켜 준다. 
  2. 해당 IP 주소를 가지는 서버에 웹 서버를 구동하고, 여러개의 DNS 주소를 연결하고자 한다면 웹서버에 가상 호스트를 생성해준다.





1. 가비아나 후이즈 등 DNS 등록/관리 사이트에서 구매 도메인의 하위 도메인을 설정한다. 



가비아의 경우 DNS 설정에서 레코드 추가를 통해 추가를 원하는 하위 DNS 와 이에 대한 IP 주소를 입력해 준다.



이렇게 DNS 설정을 하게 되면 요청하는 DNS가 올 경우 해당 IP 의 서버로 요청이 온다.



2. 아파치 웹서버를 구동하고, 여러개의 추가 DNS 등록이 필요하다면 아래와 같이 가상 호스트를 생성한다. 


[/etc/apache2/sites-available/000-default.conf] 기본 template을 원하는 이름으로 복사 한다. 


~$ cp 000-default.conf forum.conf


복사 후 아래와 같이 신규 DNS 에 맞게 원하는 값들을 바꾸어 준다. 



    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    ServerName http://forum.technote.kr/

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html_forum

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error_forum.log
    CustomLog ${APACHE_LOG_DIR}/access_forum.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
    ErrorDocument 403 /index.php
    ErrorDocument 404 /index.php


# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

ServerName : 실제 추가 하고자 하는 DNS 주소

DocumentRoot : 서버 내 웹페이지 경로


ErrorLog, Custom Log : 실시간으로 쌓일 로그 파일 이름


위와 같이 추가할 DNS 의 설정을 추가한 후 해당 설정을 활성화해야 한다. 

ln 명령으로 manual 하게 할 수도 있지만 스크립트를 제공함으로 아래와 같이 a2ensite 명령을 통해 진행하면 된다.


~# a2ensite forum

a2ensite 명령어를 통해 enable한 후 아래와 같이 apache를 재구동해주면 추가된 주소로 서버에 접근이 가능해진다.


root@server:~# service apache2 restart
 * Restarting web server apache2                                         [ OK ]
root@server:~#


여담으로 a2ensite 를 확인해 보면 아래와 같다. a2ensite는 a2enmod 의 symbolic link 이고, a2enmod는 perl script 로 해당 파일을 열어 보면 어떤 역할을 하는지 확인해 볼 수 있다.  

ubuntu@server:~$ which a2ensite
/usr/sbin/a2ensite
ubuntu@server:~$ file /usr/sbin/a2ensite
/usr/sbin/a2ensite: symbolic link to `a2enmod'
ubuntu@server:~$ which a2enmod
/usr/sbin/a2enmod
ubuntu@server:~$ file /usr/sbin/a2enmod
/usr/sbin/a2enmod: Perl script, ASCII text executable