閱讀931 返回首頁    go 微軟 go windows


powerdns 安裝部署備忘

PowerDNS

一種 DNS 服務器, 優點, 支持 PHP 網頁管理, 支持直接在數據庫中添加 DNS 地址記錄, 比較靈活, 方便

 

參見信息

主機名 PDNS 中記錄的主機名 本機 ip 地址 浮動 IP 地址 操作係統版本 備注 1 備注2   
gd02-qa-plxt2-nodomain.ddns.vclound.com pdnsweb.vclound.com 10.0.3.105 192.168.86.172 centOS 5.8 網頁服務器(nginx, php)  NULL
gd02-qa-plx2-ddns-web-99.vclound.com pdnsdb.vclound.com 10.0.3.99 null centOS 6.5 pdns 服務器+mysql5.5 NULL

 

下載 ddns 軟件包


https://downloads.powerdns.com/releases/pdns-3.3.1.tar.gz

下載網頁管理頁麵


wget https://github.com/downloads/poweradmin/poweradmin/poweradmin-2.1.6.tgz

解壓至 /apps/dat/web 目錄下


[root@gd02-qa-plxt2-nodomain web]# cd /apps/dat/web
[root@gd02-qa-plxt2-nodomain web]# tar xf poweradmin-2.1.6.tgz 
[root@gd02-qa-plxt2-nodomain web]# mv poweradmin-2.1.6 pdns


 

注明: 當前編譯方法隻適合於我的生產環境, 各位可參考並進行自行調整

參見 下麵 ddns-3.3.1.spec 文件, 該 rpm 包整合了 pdns (程序) 與 poweradmin (網頁管理) 的自動安裝

 

程序名稱 安裝路徑 作用
poweradmin /apps/dat/web/pdns/ 網頁管理
pdns /apps/sh/pdns 啟動進程
NULL /apps/conf/pdns/pdns.sql 數據庫自動添加表腳本
NULL /apps/conf/pdns/pdns.conf 配置文件
pdns_server /apps/lib/pdns-3.3.1/sbin/pdns_server 服務端程序

 

ddns-3.3.1.spec 文件


Name: pdns
Version: 3.3.1
Release:    20140129.vipclound.centos65
Summary:    use for monitor openstack VM.

Group:          Applications/System
License:        GPL
URL:            https://downloads.powerdns.com/releases/pdns-3.3.1.tar.gz
Source0:        pdns-3.3.1.tar.bz2
BuildRoot:      %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

#BuildRequires:
#Requires:

%define _prefix                 /apps/svr/pdns-3.3.1
%define _exec-prefix            /apps/svr/pdns-3.3.1
%define _bindir                 /apps/svr/pdns-3.3.1/bin
%define _sbindir                /apps/svr/pdns-3.3.1/sbin
%define _sysconfdir             /apps/lib/pdns-3.3.1
%define _includedir             /apps/lib/pdns-3.3.1
%define _libexecdir             /apps/lib/pdns-3.3.1
%define _infodir                /apps/lib/pdns-3.3.1
%define _oldincludedir          /apps/lib/pdns-3.3.1
%define _libdir                 /apps/lib/pdns-3.3.1
%define _defaultdocdir          /apps/lib/pdns-3.3.1
%define _docdir                 /apps/lib/pdns-3.3.1
%define _mandir                 /apps/lib/pdns-3.3.1
%define _datadir                /apps/lib/pdns-3.3.1
%define _sharedstatedir         /apps/lib/pdns-3.3.1
%define _localstatedir          /apps/lib/pdns-3.3.1
%define _datarootdir            /apps/lib/pdns-3.3.1
%define _infodir                /apps/lib/pdns-3.3.1
%define _localedir              /apps/lib/pdns-3.3.1
%define _htmldir                /apps/lib/pdns-3.3.1
%define _dvidir                 /apps/lib/pdns-3.3.1
%define _pdfdir                 /apps/lib/pdns-3.3.1
%define _psdir                  /apps/lib/pdns-3.3.1

%description
use for dns server.

%prep
%setup -q

%build
%configure --enable-pdns_server --enable-tools --with-lua --with-boost=/usr  --enable-pdns_server --enable-tools --with-dynmodules="gmysql" --with-mysql=/apps/svr/mysql
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool

make %{?_smp_mflags}

%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}

mkdir %{buildroot}/apps/dat/web/pdns -p
mkdir %{buildroot}/apps/sh -p
mkdir %{buildroot}/apps/conf/pdns -p
mkdir %{buildroot}/apps/run/zabbix -p

cp -rp $RPM_BUILD_DIR/pdns-3.3.1/padmin/*  %{buildroot}/apps/dat/web/pdns/.
cp -rp $RPM_BUILD_DIR/pdns-3.3.1/conf/pdns.conf  %{buildroot}/apps/conf/pdns/pdns.conf
cp -rp $RPM_BUILD_DIR/pdns-3.3.1/sh/pdns  %{buildroot}/apps/sh/pdns
cp -rp $RPM_BUILD_DIR/pdns-3.3.1/conf/pdns.sql  %{buildroot}/apps/conf/pdns/pdns.sql

%clean
rm -rf %{buildroot}

%files
%defattr(-,root,root,-)
%doc
%config /apps/dat/web/pdns/*
%config /apps/conf/pdns/pdns.conf
%config /apps/sh/pdns
%config /apps/conf/pdns/pdns.sql

%{_libdir}/*
%{_mandir}/man8/*
%{_bindir}/*
%{_sbindir}/*

%changelog
* Wed Jan 29 2014 terrytsang  <signmem@hotmail.com>
-- use for vipclound.com ddns service


注:
lnmp 架構編譯(忽略描述)
所有的軟件, 庫文件都安裝到 /apps 與 /apps/lib 目錄中
當前使用 mysql-5.5 版本

 

1. 安裝依賴包


yum install -y lua-devel.x86_64 boost-devel


2. rpm 方法安裝 pdns (注意使用 --nodeps 參數)


[root@gd02-qa-plx2-ddns-web-99 ~]# rpm -ivh  --nodeps pdns-3.3.1-20140128.vipclound.centos65.x86_64.rpm
Preparing...                ########################################### [100%]
   1:pdns                   ########################################### [100%]

3.  參見下麵編譯時的 $SOURCE/sh/pdns 文件


#!/bin/sh
# chkconfig: - 80 75
# description: PDNS is a versatile high performance authoritative nameserver

### BEGIN INIT INFO
# Provides:          pdns
# Required-Start:    $remote_fs $network $syslog
# Required-Stop:     $remote_fs $network $syslog
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: PowerDNS authoritative server
# Description:       PowerDNS authoritative server
### END INIT INFO

set -e

configdir=/apps/conf/pdns
prefix=/apps/svr/pdns-3.3.1
exec_prefix=${prefix}
BINARYPATH=${exec_prefix}/bin
SBINARYPATH=${exec_prefix}/sbin
SOCKETPATH=/apps/run/pdns/

[ -f "$SBINARYPATH/pdns_server" ] || exit 0

[ -r /etc/default/pdns ] && . /etc/default/pdns

cd $SOCKETPATH
suffix=$(basename $0 | cut -d- -f2- -s)
if [ -n "$suffix" ]
then
        EXTRAOPTS=--config-name=$suffix
        PROGNAME=pdns-$suffix
else
        PROGNAME=pdns
fi

pdns_server="$SBINARYPATH/pdns_server $EXTRAOPTS" 

doPC()
{
        ret=$($BINARYPATH/pdns_control $EXTRAOPTS $1 $2 2> /dev/null)
}

NOTRUNNING=0
doPC ping || NOTRUNNING=$?

case "$1" in
        status)
                if test "$NOTRUNNING" = "0" 
                then
                        doPC status
                        echo $ret
                else
                        echo "not running" 
                        exit 3
                fi
        ;;

        stop)
                echo -n "Stopping PowerDNS authoritative nameserver: " 
                if test "$NOTRUNNING" = "0" 
                then
                        doPC quit
                        echo $ret
                else
                        echo "not running" 
                fi
        ;;

        force-stop)
                echo -n "Stopping PowerDNS authoritative nameserver: " 
                killall -v -9 pdns_server
                echo "killed" 
        ;;

        start)
                echo -n "Starting PowerDNS authoritative nameserver: " 
                if test "$NOTRUNNING" = "0" 
                then
                        echo "already running" 
                else
                        if $pdns_server --daemon --guardian=yes --config-dir=$configdir
                        then
                                echo "started" 
                        else
                                echo "starting failed" 
                                exit 1
                        fi
                fi
        ;;

        force-reload | restart)
                echo -n "Restarting PowerDNS authoritative nameserver: " 
                if test "$NOTRUNNING" = "1" 
                then
                        echo "not running, starting" 
                else

                        echo -n stopping and waiting..
                        doPC quit
                        sleep 3
                        echo done
                fi
                $0 start
        ;;

        reload)
                echo -n "Reloading PowerDNS authoritative nameserver: " 
                if test "$NOTRUNNING" = "0" 
                then
                        doPC cycle
                        echo requested reload
                else
                        echo not running yet
                        $0 start
                fi
        ;;

        monitor)
                if test "$NOTRUNNING" = "0" 
                then
                        echo "already running" 
                else
                        $pdns_server --daemon=no --guardian=no --control-console --loglevel=9
                fi
        ;;

        dump)
                if test "$NOTRUNNING" = "0" 
                then
                        doPC list
                        echo $ret
                else
                        echo "not running" 
                fi
        ;;

        show)
                if [ $# -lt 2 ]
                then
                        echo Insufficient parameters
                        exit
                fi
                if test "$NOTRUNNING" = "0" 
                then
                        echo -n "$2=" 
                        doPC show $2 ; echo $ret
                else
                        echo "not running" 
                fi
        ;;

        mrtg)
                if [ $# -lt 2 ]
                then
                        echo Insufficient parameters
                        exit
                fi
                if test "$NOTRUNNING" = "0" 
                then
                        doPC show $2 ; echo $ret
                        if [ "$3x" != "x" ]
                        then
                                doPC show $3 ; echo $ret
                        else
                                echo 0
                        fi
                        doPC uptime ; echo $ret
                        echo PowerDNS daemon
                else
                        echo "not running" 
                fi

        ;;

        cricket)
                if [ $# -lt 2 ]
                then
                        echo Insufficient parameters
                        exit
                fi
                if test "$NOTRUNNING" = "0" 
                then
                        doPC show $2 ; echo $ret
                else
                        echo "not running" 
                fi

        ;;

        *)
        echo pdns [start\|stop\|force-reload\|reload\|restart\|status\|dump\|show\|mrtg\|cricket\|monitor]

        ;;
esac

文件已修複之前上一版本不可以正常啟動 PDNS 問題

安裝後啟動方法


/apps/sh/pdns start


關閉


/apps/sh/pdns stop

4. 確保係統中使用到 mysqlclient.18.0 庫文件, 數據庫授權並導入 sql 腳本

*授權 pdns 用戶能夠訪問 pdns 數據庫


mysql> create database pdns;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on pdns.* to 'pdns'@'localhost' identified by 'pdns';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on pdns.* to 'pdns'@'127.0.0.1' identified by 'pdns';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on pdns.* to 'pdns'@'0.0.0.0' identified by 'pdns';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

2. 確保係統中使用到 mysqlclient.18.0 庫文件, 數據庫授權並導入 sql 腳本

*授權 pdns 用戶能夠訪問 pdns 數據庫


mysql> create database pdns;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on pdns.* to 'pdns'@'localhost' identified by 'pdns';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on pdns.* to 'pdns'@'127.0.0.1' identified by 'pdns';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on pdns.* to 'pdns'@'0.0.0.0' identified by 'pdns';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 

導入 pdns 所需要的 sql


[root@station140 mysql5]# /apps/svr/mysql5/bin/mysql -u pdns -ppdns pdns <  /apps/conf/pdns/pdns.sql

5. 配置 pdns 服務器
/apps/conf/pdns/pdns.conf


daemon=yes
recursor=192.168.86.37
launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=pdns
gmysql-dbname=pdns
gmysql-password=pdns

6. 啟動 pdns 服務器

/apps/sh/pdns start

 

7. 測試方法


 a. 檢測端口 53/tcp 是否使用中
 b. 檢測防火牆關閉, selinux 關閉
 c. /etc/resolv.conf 是否指向自己
 d. nslookup localhost 是否能夠返回 127.0.0.1

8. nginx 啟動配置忽略, 但需要吧 webroot 指向 /app/dat/web 下

 

9. 配置  php
隻修改下麵 /apps/conf/php5/php.ini 兩部分


session.save_path = "/tmp/session" 
date.timezone Asia/Chongqing

 

執行命令


mkdir /tmp/session
chown apps:apps /tmp/session


10. 啟動 nginx,  (啟動 php 略)


[root@gd02-qa-plxt2-nodomain /]# lsof -i:80
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   3105 root    7u  IPv4  42727      0t0  TCP *:http (LISTEN)
nginx   3106 apps    7u  IPv4  42727      0t0  TCP *:http (LISTEN)

可通過界麵方法進行配置管理





 








上述抓圖用於 POWERADMIN 對 PDNS 安裝

安裝完成後可看見這個管理頁麵

 


添加主域

 



添加反向域

 


添加主機記錄方法






調用 ADD RECORD 按鈕可以添加多個域名

 

完成數據添加後可馬上調用 nslookup 進行驗證. 非常方便

最後更新:2017-04-03 12:54:51

  上一篇:go Tomcat的設置2——設置虛擬子目錄和歡迎頁
  下一篇:go Tomcat的設置1——設置根目錄