从昨晚到现在,不停的修改编译,终于编译成功了,不过把一些选项去掉了,不知道执行还有没有问题。
从源码安装bind, 加载mysql支持
1 下载bind的源代码包, 和mysql-bind包
2 解压两个包, 将mysql-bind里的mysqldb.c 和mysqldb.h分别拷到bind的bind9/bin/named/include和bind9/bin/named目录下.
3 vi bind9/bin/named/Makefile.in; 设置里面的DBDRIVER_SRCS,DRIVER_OBJS,DBDRIVER_INCLUDES,DBDRIVER_LIBS等选项. 分别对应刚才的mysqldb.o和mysqldb.c, 以及你的mysql_config --cflags和 mysql_config --libs的输出.比如我的设置是:
DBDRIVER_OBJS = mysqldb.o
DBDRIVER_SRCS = mysqldb.c
DBDRIVER_INCLUDES = -I'/usr/local/mysql/include'
DBDRIVER_LIBS = -L'/usr/local/mysql/lib' -lmysqlclient -lz -lcrypt -lnsl -lm -lc -lnss_files -lnss_dns -lresolv
接着vi bind9/bin/named/main.c, 在头文件中添加 #include "mysqldb.h". 然后在call to ns_server_create()添加mysqldb_init (); 在ns_server_destroy() 之前添加 mysqldb_clean().
4 进入bind9目录, ./configure, make, make install 安装bind9.
5 创建链接ln -s /usr/local/sbin/rndc /usr/sbin/rndc ln -s /usr/local/sbin/named /usr/sbin/named
6 创建rndc.conf配置文件。/usr/local/sbin/rndc-confgen > /etc/rndc.conf
7 创建rndc.key文件。将rndc.conf文件中注释部分关于key和controls的字段拷贝生成rndc.key.
8 创建named.conf文件并根据自己的实际需要编辑文件. 同时对应要创建相应的数据库. 这些就不细说了.
参考文章: http://bbs.chinaunix.net/forum/viewtopic.php?t=94879&show_type=new
但是在mysql-bind的说明文档中,mysqldb_clean()是添加在ns_server_destroy() 后的,有一点不同.
但我编译时说ld找不到lnss_files 和nss_dns,所以我把这相关的去掉了,变成了
DBDRIVER_LIBS = -L'/usr/local/mysql/lib' -lmysqlclient -lz -lcrypt -lnsl -lm -lc -lresolv
另外,编译时要注意环境变量,我把所有的环境变量一下子加了进来了。:)
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/etc:/usr/local/bin:/usr/local/sbin:/usr/ccs/bin:/usr/ucb:/usr/local/mysql/bin:/usr/local/bin/flex
export PATH
CC=gcc;export CC
LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local:/usr/local/mysql/lib/mysql:/usr/local/mysql/include/mysql export LD_LIBRARY_PATH
再进行服务器配置的测试,看看省略掉的有没有问题。