PDNS Manager

  • PHP로 제작된 PowerDNS Web 프론트엔드 (PHP 7.1 이상 버전 설치가 필요)
  • PowerDNS의 백엔드가 MySQL로 구성되어 있어야 사용이 가능하다.
  • Apache 2.0 라이선스를 사용
  • 공식사이트 : PDNS Manager

  • PowerDNS에서 공개한 Web 프론트엔드의 목록은 아래의 링크에서 확인할 수 있다. https://github.com/PowerDNS/pdns/wiki/WebFrontends

  • PowerAdmin과 비교하여 PDNS Manager의 특징은 UI가 깔끔하단 점이다. 다만 PowerAdmin과 달리 PowerDNS의 마스터/슬레이브 기능을 설정할 수 없지만 앞서 설명했던 것처럼 백엔드를 MySQL을 사용하는 시점에선 사용할 일 없는 기능이다.

  • 인터넷 익스플로러에서는 사이트가 정상적으로 동작하지 않는 점에 주의한다.

테스트 환경

PHP 모듈 설치

  • PDNS Manager 설치를 위해 아래의 모듈을 추가로 설치한다.
    • apcu
    • pdo_mysql

APCU 설치

apcu를 설치하지 않으면 PDNS Manager 설치 시 아래와 같은 에러 메시지가 나타난다.



apcu 모듈 설치는 다음과 같이 진행한다.

[root@localhost work]# wget http://pecl.php.net/get/apcu-5.1.16.tgz
[root@localhost work]# tar zxvf apcu-5.1.16.tgz 
[root@localhost work]# cd apcu-5.1.16/
[root@localhost apcu-5.1.16]# /usr/local/php/bin/phpize	
[root@localhost apcu-5.1.16]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@localhost apcu-5.1.16]# make
[root@localhost apcu-5.1.16]# make install

[root@localhost apcu-5.1.16]# vi /usr/local/php/lib/php.ini 
~
[apcu]
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20180731/apcu.so
-> 내용 추가
	
[root@localhost apcu-5.1.16]# /usr/local/apache2/bin/httpd -t
Syntax OK
[root@localhost apcu-5.1.16]# systemctl restart httpd.service 
	
[root@localhost apcu-5.1.16]# /usr/local/php/bin/php -m | grep apcu
apcu

pdo_mysql 설치

pdo_mysql를 설치하지 않으면 PDNS Manager 설치 시 아래와 같은 에러 메시지가 나타난다.



pdo_mysql 모듈 설치는 다음과 같이 진행한다.

[root@localhost ~]# cd /home/work/php-7.3.27/ext/pdo_mysql
[root@localhost pdo_mysql]# /usr/local/php/bin/phpize
[root@localhost pdo_mysql]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql/bin/mysql_config
[root@localhost pdo_mysql]# make
[root@localhost pdo_mysql]# make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20180731/

[root@localhost pdo_mysql]# ls -al /usr/local/php/lib/php/extensions/no-debug-zts-20180731/pdo_mysql.so 
-rwxr-xr-x 1 root root 174000  4월 12 12:21 /usr/local/php/lib/php/extensions/no-debug-zts-20180731/pdo_mysql.so

[root@localhost pdo_mysql]# vi /usr/local/php/lib/php.ini 
~
[pdo_mysql]
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20180731/pdo_mysql.so
위의 내용 추가 후 저장

[root@localhost pdo_mysql]# /usr/local/apache2/bin/httpd -t
Syntax OK
[root@localhost pdo_mysql]# /usr/local/apache2/bin/apachectl restart

[root@localhost pdo_mysql]# /usr/local/php/bin/php -m | grep pdo_mysql
pdo_mysql

PDNS Manager 설치

다운로드

[root@localhost ~]# cd /home/work/
[root@localhost work]# wget https://dl.pdnsmanager.org/pdnsmanager-2.0.1.tar.gz
[root@localhost work]# tar zxvf pdnsmanager-2.0.1.tar.gz 
	
[root@localhost work]# mv pdnsmanager-2.0.1 /home/httpd/pdnsmanager

[root@localhost work]# chown -R root:daemon /home/httpd/pdnsmanager

아파치 설정

[root@localhost work]# vi /usr/local/apache2/conf/httpd.conf
~
LoadModule rewrite_module modules/mod_rewrite.so  (주석제거)
~
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf  (주석제거)
[root@localhost work]# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 
<VirtualHost *:80>
  ServerName domain.30test.com
	DocumentRoot /home/httpd/pdnsmanager/frontend
	
	RewriteEngine On
	RewriteRule ^index\.html$ - [L]
	RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
	RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
	RewriteRule !^/api/\.* /index.html [L]
	
	ErrorLog "|/usr/local/apache2/bin/rotatelogs /var/log/apachelog/domain.30test.com-error_log.%Y%m%d 1000M"
	CustomLog "|/usr/local/apache2/bin/rotatelogs /var/log/apachelog/domain.30test.com-access_log.%Y%m%d 1000M" common env=!IMAGE
	
	Alias /api /home/httpd/pdnsmanager/backend/public
	<Directory /home/httpd/pdnsmanager/backend/public>
	  RewriteEngine On
	  RewriteCond %{REQUEST_FILENAME} !-f
	  RewriteCond %{REQUEST_FILENAME} !-d
	  RewriteRule ^ index.php [QSA,L]
	</Directory>
	<Directory /home/httpd/pdnsmanager>
	  Require all granted
	</Directory>

</VirtualHost>
[root@localhost work]# /usr/local/apache2/bin/httpd -t
Syntax OK
[root@localhost work]# systemctl restart httpd.service 

설치

http://도메인주소/setup 으로 접속

Database 접속 정보와 사용할 admin 계정 입력 후 “Setup” 버튼을 클릭하면 설치가 완료된다.

Host에 ‘localhost’를 입력할 경우 아래와 같이 소켓 오류가 발생할 수 있다. ‘127.0.0.1’로 설정하면 정상적으로 로컬 DB와 연결이 된다.



PDNS Manager 설치 시 PowerDNS에서 사용하는 데이터베이스 안의 내용이 비어있어야 정상 설치된다.

이는 /home/httpd/pdnsmanager/backend/sql/setup.sql 을 실행하여 pdns 데이터베이스 안의 테이블을 생성하기 때문이다.

setup.sql에는 PowerDNS에서 사용하는 테이블들도 같이 저장되어 있다. 혹시나 버전에 따라 테이블 구조가 달라질 수 있기 때문에 각 PowerDNS 버전에 맞는 구조인지 확인할 필요가 있다.

기존에 PowerDNS에서 사용하는 데이터베이스에 내용이 있을 경우 아래와 같이 오류가 발생한다.



DNS Zone 설정 테스트

http://도메인주소 으로 접속하고 로그인 진행



도메인 영역 생성



레코드 생성



nslookup으로 도메인 정보 확인



참고 자료

Tags:

Categories:

Published:

Updated: