이번에 맥미니 홈서버 돌리면서 터득한 내용을 적어본다.
기존은 dnsever 에서 도메인별명명(CNAME)만 사용했다.
www.susemi99.kr -> susemi99.iptime.org 처럼만 해놨기 때문에, 그냥 susemi99.kr 은 ping을 때려도 서버ip를 찾을 수 없었다.
그래서 dnsever의 다이나믹 DNS관리에 내 공유기가 갖고 있는 공인ip를 등록하고, 매 5분마다 홈서버에서 dnsever로 내 홈서버의 공인ip를 보내는 방법을 적용했다.
다이나믹DNS
먼저 다이나믹DNS에 가서 서브도메인없이 호스트를 등록하고, 현재 접속ip를 그냥 넣어준다.(아마 자동으로 들어가있을 것이다)
도메인 별명(CNAME)
그런다음 도메인 별명(CNAME)으로 가서 내가 사용할 서브도메인만 등록해놓는다.
www는 안하고 싶었는데, 뒤에 나올 apache의 virtual host를 잘 몰라서 그냥 같이 등록해놨다.
VirtualHost
MAMP – conf – apache – httpd.conf 를 열어서 ‘virtual’로 검색하면
# Virtual hosts Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
이런거 나오는데, Include 앞에 #을 빼준다.
그런다음 httpd-vhosts.conf를 열어서
<VirtualHost *:8880> ServerAdmin asdf@asdf.com DocumentRoot "/Applications/MAMP/htdocs/webhard" ServerName webhard.susemi99.kr ServerAlias webhard.susemi99.kr ErrorLog "logs/webhard.susemi99.kr-error_log" CustomLog "logs/webhard.susemi99.kr-access_log" common </VirtualHost> <VirtualHost *:8880> ServerAdmin asdf@asdf.com DocumentRoot "/Applications/MAMP/htdocs/wp" ServerName susemi99.kr ServerAlias susemi99.kr *.susemi99.kr susemi99.iptime.org ErrorLog "logs/susemi99.kr-error_log" CustomLog "logs/susemi99.kr-access_log" common </VirtualHost>
이런 식으로 추가해준다.
내 홈서버는 plex때문에 80을 못 쓰고 있어서 8880으로 쓰고 있다.
DocumentRoot 에는 절대 경로를 적어준다.
ServerName이랑 ServerAlias 는 뭔지 잘 모르까 그냥 내가 하려하는 url을 적어준다.
ftp는 apache랑 무관하니까 패스하고, webhard를 먼저 적어주고, 그 외의 것들은 그냥 다 블로그가 뜨게 해놨다.
virtual host에 *.susemi99.kr을 적어놔더 dnsever에 www를 안해주니까 안들어오더라.
그리고 혹시나 예전 주소인 susemi99.iptime.org로 들어오게 되는 경우도 있으니 추가해줬다.
Update server IP
이걸 dnsever에 내 서버 ip를 보내줘야 다이나믹DNS에 제대로 된 ip가 들어간다.
$ curl -u susemi99:****** 'http://dyna.dnsever.com/update.php?host\[susemi99.kr\]'
이렇게 입력하는 식인데, 저 별표는 첫 번째 그림에 있는 dnsever의 authcode가 들어가면 된다.
터미널에서 입력하면 뭔가 결과가 오는데,
<?xml version="1.0" encoding="utf-8" ?> <dnsever> <result type="update" code="702" numOfSuccess="0" numOfFailure="1" msg="Some DDNS Update failed"> <host name="susemi99.kr" code="721" msg="Already Updated"></host> </result> </dnsever>
이렇게 오면 정상이다.
이걸 ~/dnsever.sh 로 저장한다.
Crontab
이젠 이걸 자동으로 5분마다 보내는 걸 등록한다.
$ crontab -e
이라고 입력하면 vi가 뜨는데,
5 * * * * /Users/susemi99/dnsever.sh
이라고 입력하고 저장하고 나오면
crontab: no crontab for susemi99 - using an empty one crontab: temp file must be edited in place
이라고 나옴 ㅠ
그러니 ~/crontab.txt 라는 파일을 먼저 만들고 dnsever.sh를 실행하는 코드를 넣어준다음에
$ crontab ~/crontab.txt
이라고 입력하면 된다.
$ crontab -l 5 * * * * /Users/susemi99/dnsever.sh
이라고 했을 때, dnsever.sh가 코드가 나오면 된다.