DNSZi와 IPTIME DDNS를 사용하여 두 개의 도메인으로 워드프레스 띄우기

그동안 iptime에서 제공하는 DDNS 도메인 주소만 사용하다가 최근 별도의 개인 도메인 주소가 필요함을 느꼈다. 다만, 주소를 옮기게 되면 기존에 방문하던 사람들이 혼란을 겪을 수 있기 때문에 최대한 혼란을 줄이고 도메인 주소를 변경하기 위해 두 개의 도메인 주소를 동시에 사용 가능한 방법을 찾았다. 즉, vlee.kr와 vlee.kr 두 주소로 워드프레스 블로그에 접근이 가능하도록 하는 것이다.

해당 포스트에는 iptime DDNS 설정은 제외 하고 DNSZi를 이용하여 유료로 구입한 도메인 주소를 연결하는 방법들을 나열하겠다.

1. 도메인 업체의 네임서버 변경

우선 유료로 구매한 도메인의 네임서버 설정을 DNSZi에서 제공하는 네임서버로 변경해야 한다. 본 포스트에서는 호스팅케이알을 기준으로 설명한다.

http://hosting.kr 에 접속하여 [도메인] > [정보 변경] > [네임서버 주소변경] 으로 이동하면 네임서버 주소변경 페이지를 확인할 수 있다.

변경 페이지를 열면 아래와 같이 네임서버 주소와 IP 정보를 입력할 수 있다.

2. DNSZi에서 도메인 설정 하기

다음으로는 DNSZi(https://www.dnszi.com/)에 접속하여 도메인을 추가한다.

그리고 도메인 목록을 보면 앞서 추가했던 도메인 이름이 보인다. 해당 이름을 클릭하면 아래와 같은 설정 페이지를 확인 할 수 있다.

도메인 관리 페이지에서 ‘호스트IP 관리(A레코드)’를 클릭하면 위와 같이 IP 주소와 DDNS 옵션을 설정할 수 있다. IP 주소는 iptime 공유기에 설정된 외부 IP 주소를 적어 주면 된다.

공유기 관리 페이지에서 ‘인터넷 설정 정보’를 확인하면 위와 같이 ‘외부 IP 주소’를 확인 가능하다. 해당 정보를 DNSZi에 설정해주면 된다.

 

3. crontab 설정

공유기에 설정된 ‘외부 IP 주소’는 거의 변경되지 않지만 인터넷 업체(KT, SKB, LGU+ 등)가 설정을 변경하는 경우 신규 주소로 변경 될 수 있다. 이런 경우 앞서 DNSZi에서 설정 했던 ‘외부 IP 주소’를 직접 변경할 수도 있지만 번거롭기 때문에 자동으로 설정할 필요가 있다. DNSZi에서는 스크립트를 동작시켜 자동으로 해당 설정을 변경할 수 있도록 기능을 제공하기 때문에 해당 기능으로 주기적으로 설정 할 수 있도록 한다.

먼저 DNSZi에서 자동으로 주소 설정을 하기 위한 명령을 획득한다. 아래와 같이 ‘고급관리’ 탭에서 ‘인증키 설정’으로 인증키 생성을 하고 그 아래에 있는 ‘리눅스용 DDNS 자동 업데이트 방법’을 클릭하여 crontab에서 동작 시킬 명령을 획득한다.

다음으로 서버에 접속하여 crontab에 위 명령을 추가한다.

$ sudo vi /etc/crontab

아래와 같이 설정 한다.

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
*/5 * * * * root /usr/local/bin/curl -s 'http://ddns.dnszi.com/set.html?user=[USERID]&auth=[KEY]&domain=vlee.kr&record='

설정 후 다음 명령으로 cron 서비스를 재시작 해주자.

$ sudo service cron restart

 

4. nginx 설정

$ sudo vi /etc/nginx/sites-available/default

default 파일을 열면 아래와 같은 설정을 확인할 수 있다. 현재 설정한 내용을 보여준다. 보는 바와 같이 root 디렉토리는 /var/www 로 설정하였다. wordpress의 경우 /var/www/wordpress 디렉토리로 존재 한다. 참고로 /var/www  디렉토리로 html request가 오면 redirect하여 /var/www/wordpress/ 디렉토리로 이동하도록 해두었다. 해당 설정이 vlee.kr로 요청이 오는 경우이다.

그리고 밑에 설정을 보면 vlee.kr 로 요청이 오는 경우 바로 /var/www/wordpress를 root 디렉토리로 하여 index.php를 열도록 설정했다. 이렇게 까지 하면 우선 블로그의 메인페이지까지는 잘 열린다. 하지만, 콘텐츠에 대한 주소들은 여전히 vlee.kr로 설정되어 있기 때문에 워드프레스에서 Multi Domain 설정이 필요하다.

        root /var/www;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.php index.nginx-debian.html;
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        location /wordpress/ {
                try_files $uri $uri/ /wordpress/index.php?$args;
        }
}


server {
        listen 80;
        listen [::]:80;

        server_name vlee.kr;

        root /var/www/wordpress;
        index index.php;

        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;

                # With php7.0-cgi alone:
                #fastcgi_pass 127.0.0.1:9000;
                # With php7.0-fpm:
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

nginx도 마찬가지로 서비스를 재시작 해준다.

$ sudo service nginx restart

 

5. 워드프레스 Multi Domain 플러그인 설정

앞서 설명했듯이 nginx 설정만으로는 워드프레스의 콘텐츠 주소들이 일괄적으로 변경되지 않는다. vlee.kr/2218 로 페이지가 열려야 하는데 해당 페이지는 없음으로 표시되고 vlee.kr/2188로만 접속이 가능한 상태다. 이를 해결하기 위해 워드프레스의 MultiDomain 플러그인을 설치한다.

해당 플러그인을 설치 하고 서버에서 수정 작업을 해준다.

$ sudo vi /var/www/wordpress/wp-content/plugins/multidomain/config.php

위와 같이 config.php 파일을 열고 아래와 같이 설정한다.

 $domains = array(
   array(
     'domain' => 'vlee.kr',
     'siteurl' => 'http://vlee.kr',
     'home' => 'http://vlee.kr'
   )
 );

 

여기까지 설정하면 vlee.kr으로 접속하는 경우 모든 콘텐츠 주소들이 vlee.kr을 기준으로 변경 된다.

Leave a Reply