这一篇开始直接是PowerDNS教程,连续四篇。DNS的相关背景知识我就不介绍了,有需要的话看看
http://baike.baidu.com/link?url=QcthFpAb2QydMqcMJr9qnxjfAKKkncDG1IL6IJkfwK85N8OXXC2u2hzbuGQlRDxLU-LwzPy967ODIoL37zoqcTL8_yJEyt_2hRJIhc5oBjC 
或自行百度。
 
目录:
 
现在开始第一篇。
之前写过PowerDNS的安装,不过那篇是有问题的,安装完之后还是不能正常使用。后来经过多方探索,各种重装机、装虚拟机、做快照和克隆,终于把PowerDNS装好了——实际上是特别简单的,因为系统是Ubuntu,有apt神器。
以下是参考这两篇网页安装的(后面一篇是 PowerDNS官网的安装,可以看到,使用 centos的话用yum 也是一样简便的):
http://www.unixmen.com/how-to-install-powerdns-on-ubuntu-14-04
https://doc.powerdns.com/md/authoritative/installation/
鉴于我还是对 Ubuntu比较熟悉,所以还是写一下 Ubuntu下的安装方法。安装过程如下:
()安装 mysql:
sudo apt-get -y install mysql-client mysql-server
中间要输入 root用户密码(两次)
设置 mysql:
sudo vim /etc/mysql/my.cnf
找到 bind-address          = 127.0.0.1 这行,把这行注释掉
sudo service mysql restart
 
()安装 powerdns:
sudo apt-get -y install pdns-server pdns-backend-mysql
中间要输入 pdns-backend-mysql密码(要输三次,第一次是 mysql的root 用户的密码,后两次是用作 pdns后端的密码)
设置 powerdns:
cd /etc/powerdns
保留 pdns.conf文件及pdns.d 目录,删掉其他文件,包括 pdns.d目录中的所有文件(保留空目录),然后 sudo vim pdns.conf修改配置,里面找到对应的参数位置:
launch=gmysql    # pdns 后端

gmysql-host=localhost
gmysql-user=pdns
gmysql-password=(这里是刚才安装 backend时候后两次输入的密码)
gmysql-dbname=pdns
gmysql-port=3306 # 如果对 mysql进行了设置,就把这里的端口也改掉 query-logging=yes
webserver=yes # 开启 powerdns的web 状态监控
webserver-address=127.0.0.1
webserver-password=(这个我也不知道是干嘛的,就写了个 pdns)
webserver-port=8081
有两点需要说明一下:
①几个gmysql-* 的参数原来配置文件里是没有的,要自己加上。其实这几个参数是原来的 pdns.d目录下的pdns.local.gmysql.conf 文件里面的,不过配置文件可以写在一起,写多了乱,所以就放在这里好啦。
②网上介绍的powerdns 安装的博客通常有 use-logfile和日志文件存放位置的参数,实际上是不能使用的,后面启动会报错参数不存在。但是诡异的是 pdns.conf文件里面本身还有这两个参数,不是后加的。不知为何。反正 log的作用不是很大,不用也罢。
 
就这么简单?老子辛辛苦苦折腾了两个多礼拜才装上,还不好使,你丫才装了十几分钟,就特么这么简单?没错,就这么简单。
 
()建立 mysql数据库表:
mysql -updns -p 输入密码进入mysql,然后 use pdns;进入pdns 数据库中建立表及相关索引:
CREATE TABLE domains (
id INT AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
master VARCHAR(128) DEFAULT NULL,
last_check INT DEFAULT NULL,
type VARCHAR(6) NOT NULL,
notified_serial INT DEFAULT NULL,
account VARCHAR(40) DEFAULT NULL,
PRIMARY KEY (id)
) Engine=InnoDB; CREATE UNIQUE INDEX name_index ON domains(name); CREATE TABLE records (
id INT AUTO_INCREMENT,
domain_id INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
type VARCHAR(10) DEFAULT NULL,
content VARCHAR(64000) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
disabled TINYINT(1) DEFAULT 0,
ordername VARCHAR(255) BINARY DEFAULT NULL,
auth TINYINT(1) DEFAULT 1,
PRIMARY KEY (id)
) Engine=InnoDB; CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX recordorder ON records (domain_id, ordername); CREATE TABLE supermasters (
ip VARCHAR(64) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) NOT NULL,
PRIMARY KEY (ip, nameserver)
) Engine=InnoDB; CREATE TABLE comments (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
type VARCHAR(10) NOT NULL,
modified_at INT NOT NULL,
account VARCHAR(40) NOT NULL,
comment VARCHAR(64000) NOT NULL,
PRIMARY KEY (id)
) Engine=InnoDB; CREATE INDEX comments_domain_id_idx ON comments (domain_id);
CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at); CREATE TABLE domainmetadata (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
kind VARCHAR(32),
content TEXT,
PRIMARY KEY (id)
) Engine=InnoDB; CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind); CREATE TABLE cryptokeys (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
flags INT NOT NULL,
active BOOL,
content TEXT,
PRIMARY KEY(id)
) Engine=InnoDB; CREATE INDEX domainidindex ON cryptokeys(domain_id); CREATE TABLE tsigkeys (
id INT AUTO_INCREMENT,
name VARCHAR(255),
algorithm VARCHAR(50),
secret VARCHAR(255),
PRIMARY KEY (id)
) Engine=InnoDB; CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
其实最重要的还是 domains和records 这两个表,尤其是 records,pdns 在查找域名的时候,会到这个表里来找。如果没有这个表的话无法查询。
可以先装模作样的往数据库里面灌点数据,便于测试:
mysql> INSERT INTO domains (name, type) values ('example.com', 'NATIVE');
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES (1,'example.com','localhost ahu@ds9a.nl 1','SOA',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES (1,'example.com','dns-us1.powerdns.net','NS',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES (1,'example.com','dns-eu1.powerdns.net','NS',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES (1,'www.example.com','192.0.2.10','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES (1,'mail.example.com','192.0.2.12','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES (1,'localhost.example.com','127.0.0.1','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio)
VALUES (1,'example.com','mail.example.com','MX',120,25);
 
至此, PowerDNS就算安装完成了,使用

sudo service pdns restart

重启一下服务,就可以运行了。下一节将介绍PowerDNS的主要功能。

PowerDNS简单教程(1):安装篇的更多相关文章

  1. PowerDNS简单教程(4):优化篇

    目录: PowerDNS简单教程(1):安装篇 http://www.cnblogs.com/anpengapple/p/5205130.html PowerDNS简单教程(2):功能篇 http:/ ...

  2. PowerDNS简单教程(2):功能篇

    目录: PowerDNS简单教程(1):安装篇 http://www.cnblogs.com/anpengapple/p/5205130.html PowerDNS简单教程(2):功能篇(本篇) Po ...

  3. PowerDNS简单教程(3):管理篇

    目录: PowerDNS简单教程(1):安装篇 http://www.cnblogs.com/anpengapple/p/5205130.html PowerDNS简单教程(2):功能篇 http:/ ...

  4. mysql安装简单教程(自动安装/配置安装)

    mysql安装简单教程(自动安装/配置安装) 1.1前言: 由于特殊原因,在最近2-3个月里mysql真是安装了无数遍,每次安装都要上网找教程,每个教程基本都不一样,因此还是自己写下来比较好,毕竟自己 ...

  5. Thrift 基础教程(一)安装篇

    1.Thrift简单介绍 Thrift是一款由Fackbook开发的可伸缩.跨语言的服务开发框架,该框架已经开源而且增加的Apache项目.Thrift主要功能是:通过自己定义的Interface D ...

  6. (一)Redis初学教程之安装篇

    1.下载windows下Redis服务安装程序(有32位的和64位的,识操作系统安装) 下载地址:https://github.com/dmajkic/redis/downloads 2.安装教程(详 ...

  7. Docker基础教程(安装篇)

    Linux安装: 1.yum -y install docker-io 2.service docker start 3.chkconfig docker on Window安装: Docker 引擎 ...

  8. Flow简易教程——安装篇

    .mydoc_h1{ margin: 0 0 1em; } .mydoc_h1_a{ color: #2c3e50; text-decoration: none; font-size: 2em; } ...

  9. TortoiseGit安装使用简单教程

    一.简介 TortoiseGit是Tortoise基于git的可视化管理工具.本文即将介绍这个工具的安装和简单使用教程(本文均是基于Windows 64位操作系统). git的管理工具有很多.Tort ...

随机推荐

  1. Java中final修饰参数的作用

    在方法参数前面加final关键字就是为了防止数据在方法体中被修改. 主要分两种情况:第一,用final修饰基本数据类型:第二,用final修饰引用类型. 第一种情况,修饰基本类型(非引用类型).这时参 ...

  2. tomcat绑定域名绑定端口及更换ROOT目录

    一.更换ROOT目录 tomcat默认网站目录为 webapps/ROOT ,那么我们如何改为自己的网站目录呢? 1.打开并编辑tomcat目录下的 conf/server.xml 大约在148行的位 ...

  3. java 并发(五)---AbstractQueuedSynchronizer(3)

           文章代码分析和部分图片来自参考文章 问题 : CountDownLatch  和 CyclicBarrier 的区别 认识 CountDownLatch 分析这个类,首先了解一下它所可以 ...

  4. Java基础(三)选择和循环结构

    一.选择结构,条件判断 1.if 语句 一个 if 语句包含一个布尔表达式和一条或多条语句.如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码. impor ...

  5. 初进JAVA职场面试小技巧:一个老学长的吐血之作!

    看着一批批小白的遭遇,有些无奈,又跟我年轻时有些类似.今天正好有点时间,给你几个建议. 1.在结业之前一定要把自己参与过的项目仔细审视一下,一点要特别熟悉项目的流程功能,另外也要重视自己做过的模块,看 ...

  6. Maven+MyBatis 初试

    工作中一直使用的都是Hibernate,总是听见有人拿Mybatis和Hibernate做比较,今天尝试来看看. 一.用Maven建立web项目 此处参见 http://www.cnblogs.com ...

  7. CSS 3动画

    CSS 3在原来的基础上新增了变形和动画相关的属性,通过这些属性可以实现以前需要大段JavaScript才能实现的功能.css 3的变形功能可以对HTML元素执行位移.旋转.缩放.倾斜4种几何变换,借 ...

  8. Python-正则表达式实现计算器功能

    需求: 用户输入运算表达式,终端显示计算结果 源代码: # !/usr/bin/env/ python3 # -*- coding: utf-8 -*- """用户输入计 ...

  9. Windows操作系统下给文件夹右键命令菜单添加启动命令行的选项

    在命令行中或按下[WIN]+[R]键启动运行对话框的情况下,输入regedit命令启动注册表编辑器,在HKEY_CLASSES_ROOT\Folder\shell下增加一个“CMD”(此处名字可以随便 ...

  10. Android MediaPlayer播放音乐并实现进度条

    提前工作,往sd卡里放音乐文件 1.布局文件main.xml <?xml version="1.0" encoding="utf-8"?> < ...