公司要使用PowerDNS,作为内网域名解析的工具。让我和另一组的同事学一下如何配置及调优。所以先找了两台服务器试着安装一下。这一装就是一个礼拜,经历了大大小小的坑,记下来以后可能需要参考。安装过程如下:
 
1、安装mysql:
尽量使用源码安装,不要使用apt-get,安装的版本不完全,缺少相关的库,会导致后面缺少mysql.h、mysql_config等等文件。我手里这台机器已经装好了mysql,这步就直接略过了。
 
2、安装php:
在php官网http://www.php.net/ 中下载的5.6.16包,解压后配置如下:
sudo ./configure --prefix=/usr/local/php-5.6.16 --enable-exif --with-gd --enable-gd-native-ttf --enable-gd-jis-conv --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-mbstring --with-mysql=/usr --with-mysql-sock=/tmp/mysql.socket  --enable-sqlite-utf8 --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-zip --with-pcre-dir --enable-maintainer-zts --enable-zend-multibyte --with-config-file-path=/usr/local/php-5.6.16/etc/ --with-mysqli=/usr/bin/mysql_config --with-gettext --with-mcrypt
配置问题:
(1)configure: error: jpeglib.h not found
缺少libjpeg库。到 http://www.ijg.org/ 去下载。tar解压,./configure配置,make编译,make install安装。后面三步都需要sudo。记得要下最新版的库安装。
(2)configure: error: png.h not found.
缺少 libpng包。
sudo apt-get -y install libpng12-dev
(3)configure: error: libjpeg.(a|so) not found.
装好了libjpeg包,可能还会找不到libjpeg.so文件,这时候可以先
sudo find / -name libjpeg.so
然后增加一条链接到/usr/lib:
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/libjpeg.so

(我的 libjpeg.so 在/usr/lib/x86_64-linux-gnu/ 目录下,64位Ubuntu/Debian还有可能在/usr/lib64下)

jpeg换成png解决方法类似
(4)configure: error: mcrypt.h not found. Please reinstall libmcrypt.
缺少libmcrypt库。到 http://mcrypt.hellug.gr/lib/ 下载。tar解压,./configure配置,make编译,make install安装。后面三步都需要sudo。记得要下最新版的库安装。
也可以

sudo apt-get -y install libmcrypt-dev
(5)configure: error: Cannot find MySQL header files under /usr/bin/mysql.
Note that the MySQL client library is not bundled anymore!
--with-mysql=/usr:mysql.h没找到头文件,无法配置mysql.socket。find搜索一下,然后改一下--with-mysql后面的路径。(centos下如果找不到的话,需要安装一个mysql-devel)
(6)configure: error: Please reinstall the mysql distribution
--with-mysqli=/usr/bin/mysql_config:mysql_config没找到配置文件,find搜索一下,更改路径。
(7)configure: error: wrong mysql library version or lib not found. Check config.log for more information.
--enable-embedded-mysqli:原文中的这个编译参数,跟--with-mysqli冲突,删掉即可
(8)configure: error: Cannot find libz.
没有找到zlib。到 http://www.zlib.net/ 去下载,tar解压,./configure配置,make编译,make install安装。后面三步都需要sudo。记得要下最新版的库安装。
(9)configure: error: freetype-config not found.
缺少libfreetype6包。

sudo apt-get -y install libfreetype6 libfreetype6-dev

幸好后面的make和make install都没有出问题。安装好之后,需要复制一下配置文件:

sudo cp php.ini-production /usr/local/php-5.6.16/etc/php.ini
(没错,拷个文件也需要sudo)
 
3、安装PowerDNS:
PowerDNS官网 https://www.powerdns.com/ 不要去github上下载源码,因为——跟安装文档都对不上啊喂!在PowerDNS官网Older versions can be found on downloads.powerdns.com/releases. (链接https://downloads.powerdns.com/releases/) ,找了一个3.3.0(因为是.tar.gz包,并没有那么花哨的后缀)。下载,解压,然后配置参数
sudo ./configure --prefix=/etc/powerdns --enable-verbose-logging --enable-static-binaries --enable-pdns_server --enable-nedmalloc --with-mysql=/usr
配置问题:
(1)要装lua。
在官网下载lua(http://www.lua.org/)装的时候要装readline库。

sudo apt-get -y install libreadline-dev

或者

sudo apt-get -y install lua5.1

(powerdns要求lua版本要在5.1以上,但是我安装5.2和5.3都遇到莫名其妙的问题)

装完之后需要配置环境变量:
sudo vim /etc/profile
在结尾加上:
export LUA_CFLAGS="-I/usr/local/lua/include"
export LUA_LIBS="-L/usr/local/lua/lib -llua -ldl"
我也不知道为啥这两个就好使啊!明明lua并没有装在这里啊!!
(此方法不一定成功,装lua的过程中我已经把机器搞的很乱了,不知道哪里蒙对的)
(2)configure: error: cannot find Boost headers version >= 1.35.0
缺少libboost。

sudo apt-get -y install libboost-all-dev
 
***后记:在我都装好之后,同事给我个地址:http://www.unixmen.com/how-to-install-powerdns-on-ubuntu-14-04/ 你倒是早给我啊喂!
 
4、都装好了,开始设置。
(1)设置my.cnf
sudo vim /etc/mysql/my.cnf
里面有一句 bind-address           = 127.0.0.1  需要注释掉
(查了一下,在 http://blog.chinaunix.net/uid-24500107-id-2602917.html 中说, msyql默认的bind-address是127.0.0.1,这样的话就算你创建的用户有可以remote访问的话 也不能通过-h 来访问,mysql只接受localhost,错误提示为:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)bind-address后面增加远程访问IP地址或者禁掉这句话就可以让远程机登陆访问了)
然后重启mysql服务:
sudo service mysql restart

(2)进入mysql建立powerdns相关表

建立powerdns数据库:
CREATE DATABASE powerdns;
为数据库授权(我这里没有新建用户,直接授权给root,没有什么卵用):
GRANT ALL ON powerdns.* TO 'root'@'localhost' IDENTIFIED BY 'password';

这里powerdns是数据库,root是授权给这个用户,password是这个用户的密码:

之后可以使用

FLUSH PRIVILEGES; 

更新一下用户设置。

然后使用

USE powerdns; 

进入数据库中。创建表和记录。

创建domains表:
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)
);

给domains表创建一个索引:

CREATE UNIQUE INDEX name_index ON domains(name);

创建records表:

CREATE TABLE records (
id INT auto_increment,
domain_id INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
type VARCHAR(6) DEFAULT NULL,
content VARCHAR(255) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
primary key(id)
);

给records表创建三个索引:

CREATE INDEX rec_name_index ON records(name);
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);

创建supermasters表;

CREATE TABLE supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
);

OK,mysql建表完成。quit(个人还是比较喜欢mysql在退出时候这个Bye的)

 
(3)设置powerdns:
cd /etc/powerdns

这里面有pdns.d目录,但是进不去,因为权限不够,可使用chmod 755 pdns.d提权,之后cd pdns.d进入

ls可看到这个目录里面有两个文件:pdns.local和pdns.local.gmysql,这两个文件是要删除掉的。但是为保险起见,备份一下先。
sudo cp pdns.local pdns.local.gmysql ~/
sudo rm *.* #删的时候一定要记得只是把这两个文件删掉,要注意是在这个目录里使用,要是删掉其他什么东西可就开心了!
sudo vim pdns.local.gmysql.conf

建立新文件,在里面输入以下内容:

# MySQL Configuration
#
# Launch gmysql backend
launch=gmysql
# gmysql parameters
gmysql-host=localhost
gmysql-dbname=powerdns
gmysql-user=poweruser
gmysql-password=ubuntu

(后面三行是刚才数据库建表时候给权限的,数据库名、用户名、密码注意对应)

保存退出,最后启动powerdns:
sudo service pdns start

用ps -ef |grep pdns检查一下看看pdns有没有启动。启动正常,完成!

 
至此一个礼拜的大坑终于特么让我填上了。简直开心。
 
最后,尝试安装poweradmin,用来管理powerdns。可参考这两篇:
php版本有点乱,一直没装明白,最后同事都重装了遍,我没参与。很惭愧,答应同事给装好结果拖拖拉拉好几天最后还装的乱七八糟的。
算个遗憾,以后有空补上~(才怪咧!)

Ubuntu14.04安装PowerDNS踩坑实录的更多相关文章

  1. windows安装rabbitmq踩坑实录

    最近学习springcloud消息总线需要用到rabbitmq,然后安装的时候踩了一些坑,记录如下: 首先安装rabbitmq之前需要先安装erlang,因为rabbitmq服务端使用erlang写的 ...

  2. Ubuntu14.04安装配置ndnSIM

    Ubuntu14.04安装配置ndnSIM 预环境 Ubuntu14.04官方系统 请先使用sudo apt-get update更新一下源列表 安装步骤 安装boost-lib sudo apt-g ...

  3. JAVA实用案例之文件导出(JasperReport踩坑实录)

    写在最前面 想想来新公司也快五个月了,恍惚一瞬间. 翻了翻博客,因为太忙,也有将近五个多月没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六 ...

  4. ffmpeg 踩坑实录 添加实时水印(二)

    一.背景介绍 最近领导要求做一个视频录制的相关项目.其中,需要对视频文件进行添加 实时时间水印.于是,我想到了使用之前的ffmpeg来做. 二.ffmpeg实际操作 首先把需要添加水印的视频文件,上传 ...

  5. JasperReport报表导出踩坑实录

    写在最前面 翻了翻博客,因为太忙,已经好久没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六月份的时候写过一篇利用poi文件导入导出的小De ...

  6. Ubuntu14.04安装配置web/ftp/tftp/dns服务器

    目录: 1.安装ftp服务器vsftpd --基于tcp,需要帐号密码 2.安装tftp服务器tftpd-hpa,tftp-hpa --udp 3.web服务器--使用Apache2+Mysql+PH ...

  7. Ubuntu14.04安装intel集显驱动

    Ubuntu14.04安装intel集显驱动 标签(空格分隔): ubuntu linux 驱动安装 1.查看本机显卡型号 使用lspci命令来获取PCI接口硬件信息 o@o-pc:~$ lspci ...

  8. Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题

    1 设置中文显示环境 1. 打开System Settings 2. 打开Personal-> Language Support. 会弹出如下对话框,提示你“语言支持没安装完整”. 点击“Rem ...

  9. Ubuntu14.04 安装QQ国际版wine-qqintl

    Ubuntu14.04安装qq国际版方式: 首先下载,链接为:  https://pan.baidu.com/s/1boPitVD 密码:jp1j 也可去Ubuntu中文的Kylin(优麒麟)官网下载 ...

随机推荐

  1. Maven是什么

    一.Maven是什么 Maven是一个Apache公司的开源项目,是项目构建工具.用来管理依赖. 1.Maven的好处 使用maven可以在项目中不用导入项目依赖的jar包,省去了下载和导入jar包的 ...

  2. 行内元素的margin只能左右有效。上下无效。

    行内元素的margin只能左右有效.上下无效.

  3. 怎样在ado.net中存取excel和word呢?

    办公软件指可以进行文字处理.表格制作.幻灯片制作.图形图像处理.简单数据库的处理等方面工作的软件.当然啦,这也包括了word.Excel以及PPT等.现在我们就一起来学习一下:怎样在ado.net中存 ...

  4. Go.基础篇-1

    package main import "fmt" import "math" import "errors" func main(){ f ...

  5. java实现mysql的备份还原

    此文章是基于 1. 搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台 2. jquery+springMVC实现文件上传 一. 简介 备份和导入是一个互逆的过程. ...

  6. hdu1385 最短路字典序

    http://blog.csdn.net/ice_crazy/article/details/7785111 http://blog.csdn.net/shuangde800/article/deta ...

  7. elastic job 动态设置定时任务

    1. 版本 <!-- import elastic-job lite core --> <dependency> <groupId>com.dangdang< ...

  8. sftp java 上传

    1. 注意问题 uri的格式: sftp://zhangsan:123456@10.10.10.10:22 dir问题 : 判断有没有 没有创建 然后进入 类推 config问题: StrictHos ...

  9. electron之20190320

    一.sudo npm i electron -g一直失败 最终解决办法:使用了sudo cnpm i electron -g安装成功 原因不详 二.打包问题 1.使用electron-packager ...

  10. 本地存储localStroage的用法及示例

    localStorage是HTML5在在客户端存储数据的新方法,存储的数据没有时间限制. localStorage的主要API: localStorage.setItem(key,value);   ...