Chinaunix首页 | 论坛 | 博客
  • 博客访问: 553082
  • 博文数量: 81
  • 博客积分: 5015
  • 博客等级: 大校
  • 技术积分: 866
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-25 09:08
个人简介

www.cloud86.cn

文章分类

全部博文(81)

文章存档

2017年(2)

2014年(1)

2011年(1)

2007年(5)

2006年(31)

2005年(41)

我的朋友

分类:

2006-01-12 16:53:19

基于mysql+bind

需要的软件包如下:
mysql-4.1.9.tar.gz
bind-9.3.1.tar.gz 
mysql-bind-0-1.tgz
httpd-2.0.54.tar.gz
php-4.3.11.tar.gz 
1. 安装mysql-4.1.9.tar.gz
cd /root
tar xfz mysql-4.1.9.tar.gz  \\解压缩
cd mysql-4.1.9
./configure --prefix=/usr/local/mysql --with-charset=gbk  \\配置安装到/usr/local/mysql支持中文gbk
make           \\编译时间比较长看你机器的配置高低了,大概12分钟左右。
make install
groupadd mysql        \\建立mysql组
useradd mysql -g mysql     \\建立mysql用户并且加入到mysql组中
./scripts/mysql_install_db --user=mysql \\初始化表并且规定用mysql用户来访问初始化表以后就开始给mysql和root用户设定访问权
cd /usr/local/mysql
chown -R root .      \\设定root能访问/usr/local/mysql
chown -R mysql var     \\设定mysql用户能访问/usr/local/mysql/var ,里面存的是mysql的数据库文件
chown -R mysql var/.    \\设定mysql用户能访问/usr/local/mysql/var下的所有文件
chown -R mysql var/mysql/.  \\设定mysql用户能访问/usr/local/mysql/var/mysql下的所有文件
chgrp -R mysql .      \\设定mysql组能够访问/usr/local/mysql
/usr/local/mysql/bin/mysqld_safe --user=mysql &  \\运行mysql[1]
12814
以上提示表示mysql运行正常。
/usr/local/mysql/bin/mysqladmin -uroot password *****  \\修改mysql密码默认为空密码

----------------------------------------------------------------------------------mysql安装全部完成
2.安装apache

cd /root
tar xfz httpd-2.0.54.tar.gz     \\解压缩
cd httpd-2.0.54
./configure --prefix=/usr/local/httpd --enable-module=most --enable-shared=max  \\配置apache
make
make install
/usr/local/httpd/bin/httpd -l  \\察看编译进apache的模块
Compiled in modules:
core.c
mod_access.c
mod_auth.c
mod_include.c
mod_log_config.c
mod_env.c
mod_setenvif.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_so.c
[root@linux httpd-2.0.54]#以上提示表示apache支持dso方式了。这样就可以用dso的方式把php的模块加进来。
--------------------------------------------------------------------------------apache安装完成

3. 安装php

cd /root
tar xfz php-4.3.11.tar.gz
cd php-4.3.11
./configure --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/httpd/bin/apxs  \\配置指定安装的apache和mysql的路径
make
make install
cp php.ini-dist /usr/local/lib/php.ini  \\将php.ini-dist复制到/usr/local/lib/,并重命名为php.ini
为了让Apache能够直接解析php,我们还要进行一些配置.
vi /usr/local/httpd/conf/httpd.conf
在httpd.conf文件中,添加

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

应该将以上两句添加在其他AddType之后。

确保文件中有以下一句话,没有就自己添加在所有LoadModule之后。

LoadModule php4_module modules/libphp4.so

好了,在vi中使用":wq"保存httpd.conf文件,退出vi。启动apache server:

/usr/local/httpd/bin/apachectl start
------------------------------------------------------------------------php安装配置完成

4.安装bind

tar xfzv bind-9.3.1.tar.gz
tar xfzv mysql-bind-0-1.tgz
cp mysql-bind-0.1/*  bind-9.3.1/bin/named
cp mysql-bind-0.1/* bind-9.3.1/bin/named/include
cp  mysql-bind-0.1/*   bind-9.3.1/bin/named/include/named/
 
cd bind-9.3.1
vi bin/named/Makefile.in

DBDRIVER_OBJS =
DBDRIVER_SRCS =
DBDRIVER_INCLUDES =
DBDRIVER_LIBS =
如下配置
DBDRIVER_OBJS = mysqldb.@O@
DBDRIVER_SRCS = mysqldb.c
DBDRIVER_INCLUDES = -I'/usr/include/mysql'
DBDRIVER_LIBS = -L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns -lresolv
修改main.c文件
vi bin/named/main.c
找到/*
* Add calls to register sdb drivers here.
*/
/* xxdb_init(); */
添加 mysqldb_init();
找到
/*
* Add calls to unregister sdb drivers here.
*/
/* xxdb_clear(); */
添加 mysqldb_clear();

./configure --prefix=/usr/local/named --enable-threads #--enable-threads开启多线程处理能力
make
make install
cd /usr/local/named
mkdir etc 建立etc目录
sbin/rndc-confgen >; etc/rndc.conf 生成rndc控制命令的key文件
cd etc
tail -10 rndc.conf | head -9 | sed s/#\ //g >; named.conf 从rndc.conf文件中提取named.conf用的key
自动在/usr/local/named/etc 生成named,conf文件
建立localhost.zone文件
vi localhost.zone
$TTL  86400
$ORIGIN localhost.
@        1D IN SOA   @ root (
             42     ; serial (d. adams)
             3H     ; refresh
             15M     ; retry
             1W     ; expiry
             1D )     ; minimum

       1D IN NS   @
       1D IN A    127.0.0.1

建立named.local文件
vi named.local
$TTL  86400
@   IN   SOA  localhost. root.localhost. (
            1997022700 ; Serial
            28800   ; Refresh
            14400   ; Retry
            3600000  ; Expire
            86400 )  ; Minimum
    IN   NS   localhost.

1   IN   PTR  localhost.


dig命令直接生成named.root文件
dig >; named.root
配置 named.conf
增加如下内容:
controls {
    inet 127.0.0.1 port 953
      * directive below. Previous versions of BIND always asked
      * questions using port 53, but BIND 9.31 uses an unprivileged
      * port by default.
      */
    // query-source address * port 53;
                                        24,9      

};

//
// a caching only nameserver config
//
zone "." IN {
    type hint;
    file "named.root";
};    

zone "localhost" IN {
    type master;
    file "localhost.zone";
    allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "named.local";
    allow-update { none; };
};

zone "mydomain.com" {
type master;
database "mysqldb dnsdb mydomain localhost root passwd"; 配置你的数据库名,表名,MYSQL主机,MYSQL用户,MYSQL密码
};

zone "19.202.220.in-addr.arpa" {
type master;
database "mysqldb dnsdb ptr localhost root passwd"; 配置你的数据库名,表名,MYSQL主机,MYSQL用户,MYSQL密码
};

--------------------------------------------------------------------------------BIND安装完成
5. 我是用MYSQLADMIN来建立数据库的和倒数据的,APACHE下安装MYSQLADMIN我这里就不详细讲了。
到我的站点
下载解压缩到APACHE可访问的目录下就OK了

参照mysql-bind-0-1目录下的README建立数据库dnsdb
正向解析数据库mydomain表结构
CREATE TABLE mydomain (
name varchar(255) default NULL,
ttl int(11) default NULL,
rdtype varchar(255) default NULL,
rdata varchar(255) default NULL
) TYPE=MyISAM;

以下是正向解析示范可以直接倒入
INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'SOA', 'mydomain.com. 200309181 28800 7200 86400 28800');
INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'NS', 'ns0.mydomain.com.');
INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'NS', 'ns1.mydomain.com.');
INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'MX', '10 mail.mydomain.com.');
INSERT INTO mydomain VALUES ('w0.mydomain.com', 259200, 'A', '192.168.1.1');
INSERT INTO mydomain VALUES ('w1.mydomain.com', 259200, 'A', '192.168.1.2');
INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'Cname', 'w0.mydomain.com.');
INSERT INTO mydomain VALUES ('mail.mydomain.com', 259200, 'Cname', 'w0.mydomain.com.');
INSERT INTO mydomain VALUES ('ns0.mydomain.com', 259200, 'Cname', 'w0.mydomain.com.');
INSERT INTO mydomain VALUES ('ns1.mydomain.com', 259200, 'Cname', 'w1.mydomain.com.');
INSERT INTO mydomain VALUES ('', 259200, 'Cname', 'w0.mydomain.com.');
INSERT INTO mydomain VALUES ('ftp.mydomain.com', 259200, 'Cname', 'w0.mydomain.com.');


反向解析数据库ptr表结构

CREATE TABLE ptr (
name varchar(255) default NULL,
ttl int(11) default NULL,
rdtype varchar(255) default NULL,
rdata varchar(255) default NULL
) TYPE=MyISAM;

以下是反向解析示范可以直接倒入

INSERT INTO `ptr` VALUES ('19.202.220.in-addr.arpa', 17600, 'SOA', 'mydomain.com. 200309181 28800 7200 86400 28800');
INSERT INTO `ptr` VALUES ('19.202.220.in-addr.arpa', 17600, 'NS', 'ns0.mydomain.com.');
INSERT INTO `ptr` VALUES ('19.202.220.in-addr.arpa', 17600, 'NS', 'ns1.mydomain.com.');
INSERT INTO `ptr` VALUES ('82.19.202.220.in-addr.arpa', 17600, 'PTR', 'mail.mydomain.');

--------------------------------------------------------------------------------数据库建立完成


6. 启动你的BIND 测试BIND是否能正常工作

/usr/local/named/sbin/named -c /usr/local/named/etc/named.conf &

然后在你WINDOWS机器上将这个配置了BIND的IP设置为DNS然后运行nslookup测试
如果出现证明反向解析正常
Default Server: mail.mydomain
Address: 220.202.19.2

>;
如果PING w0.mydomain.com
解析地址为192.168.1.1 证明正向工作正常

7.结束语

BIND + MYSQL 在增加A记录 MX记录 PTR记录都不需要从新启动BIND,每增加一个正向的解析域名都必须在named.conf正增加如下内容

zone "youname.com" {
type master;
database "mysqldb dnsdb mydomain localhost root passwd"; 配置你的数据库名,表名,MYSQL主机,MYSQL用户,MYSQL密码
};

bind + mysql 配置就写到这里了,有错误之处请大家指正。余下的时间就是用PHP写WEB脚本。
阅读(1665) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~