Ubuntu14.04安裝PowerDNS踩坑實錄

公司要使用PowerDNS,做爲內網域名解析的工具。讓我和另外一組的同事學一下如何配置及調優。因此先找了兩臺服務器試着安裝一下。這一裝就是一個禮拜,經歷了大大小小的坑,記下來之後可能須要參考。安裝過程以下:
 
一、安裝mysql:
儘可能使用源碼安裝,不要使用apt-get,安裝的版本不徹底,缺乏相關的庫,會致使後面缺乏mysql.h、mysql_config等等文件。我手裏這臺機器已經裝好了mysql,這步就直接略過了。
 
二、安裝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都沒有出問題。安裝好以後,須要複製一下配置文件:php

sudo cp php.ini-production /usr/local/php-5.6.16/etc/php.ini
(沒錯,拷個文件也須要sudo)
 
三、安裝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

或者html

sudo apt-get -y install lua5.1

(powerdns要求lua版本要在5.1以上,可是我安裝5.2和5.3都遇到莫名其妙的問題)mysql

裝完以後須要配置環境變量:
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/ 你卻是早給我啊喂!
 
四、都裝好了,開始設置。
(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相關表linux

創建powerdns數據庫:
CREATE DATABASE powerdns;
爲數據庫受權(我這裏沒有新建用戶,直接受權給root,沒有什麼卵用):
GRANT ALL ON powerdns.* TO 'root'@'localhost' IDENTIFIED BY 'password';

這裏powerdns是數據庫,root是受權給這個用戶,password是這個用戶的密碼:git

以後可使用
FLUSH PRIVILEGES; 

更新一下用戶設置。github

而後使用
USE powerdns; 

進入數據庫中。建立表和記錄。sql

建立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表:ubuntu

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表建立三個索引:vim

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版本有點亂,一直沒裝明白,最後同事都重裝了遍,我沒參與。很慚愧,答應同事給裝好結果拖拖拉拉好幾天最後還裝的亂七八糟的。
算個遺憾,之後有空補上~(纔怪咧!)
相關文章
相關標籤/搜索