CentOS6系統bind9 + MySQL配置安裝

來源:互聯網
上載者:User

標籤:bind+mysql


1.先安裝MySQL,直接yum安裝

    yum -y install mysql mysql-server

2.再安裝一些依賴的包

    yum -y install openssl openssl-devel libss-dev gcc gcc-c++ mysql-devel

3.下載bind, bind官網(https://www.isc.org/)

    wget ftp://ftp.isc.org/isc/bind9/bind-9.10.3-P2/bind-9.10.3-P2.tar.gz

4.下載mysql-bind 補丁源碼

    wget http://nchc.dl.sourceforge.net/project/mysql-bind/mysql-bind/mysql-bind-0.2%20src/mysql-bind.tar.gz

5.解壓bind和mysql-bind源碼壓縮檔

    tar zxvf bind-9.10.3-P2.tar.gz

    tar zxvf mysql-bind.tar.gz

6.將mysql-bind源碼目錄下的mysqldb.c 和 mysqldb.h拷貝到bind源碼目錄下的bin/named和bin/named/include/ 目錄下

    cd mysql-bind

    cp -f mysqldb.c mysqldb.h ../bind-9.10.3-P2/bin/named/

    cp -f mysqldb.c mysqldb.h ../bind-9.10.3-P2/bin/named/include/

7.修改bind源碼目錄下bin/named/Makefile.in檔案

    cd ../bind-9.10.3-P2

    vim bin/named/Makefile.in

    將以下幾行:  

    DBDRIVER_OBJS =                          

    DBDRIVER_SRCS =                          

    DBDRIVER_INCLUDES =                      

    DBDRIVER_LIBS =

    修改為:

    DBDRIVER_OBJS = [email protected]@

    DBDRIVER_SRCS = mysqldb.c

    DBDRIVER_INCLUDES = -I/usr/include/mysql  -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC   -DUNIV_LINUX -DUNIV_LINUX

    DBDRIVER_LIBS = -rdynamic -L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -lssl -lcrypto

    DBDRIVER_INCLUDES 的值是通過 mysql_config --cflags 命令擷取的

    DBDRIVER_LIBS 的值是通過 mysql_config --libs 命令擷取的

8.修改bind源碼目錄下bin/named目錄下的main.c檔案

    vim bin/named/main.c

    加入 #include "mysqldb.h"

    如下:


#include <config.h>

#include "mysqldb.h"

#include <ctype.h>

#include <stdlib.h>

#include <string.h> 

    然後在注釋程式碼片段 /*  xxdb_init(); */ 後加入 mysqldb_init();

    在注釋程式碼片段 /*  xxdb_clear(); */後加入 mysqldb_clear();

9.修改mysqldb.c中的#include <named/mysqldb.h>為 #include <include/mysqldb.h>

10.安裝bind

    ./configure --prefix=/usr/local/bind --enable-threads  # 指定安裝目錄和開啟多線程的處理能力

    make

    make install

11.配置bind

    cd /usr/local/bind-9.10/etc

    /usr/local/bind/sbin/rndc-confgen -r /dev/urandom>rndc.conf

    cat rndc.conf|tail |head -9 |sed "s/^#//g">named.conf   # 組建組態檔案

12.建立一個資料庫

    Create database mydomain;

    建立一張資料表

    

    CREATE TABLE dnsrecord ( 

      name varchar(255) default NULL,

      ttl int(11) default NULL, 

      rdtype varchar(255) default NULL,

      rdata varchar(255) default NULL )TYPE=MyISAM;

    插入一些測試資料

    INSERT INTO dnsrecord VALUES (‘test.net‘, 259200, ‘SOA‘, ‘test.net.  www.test.net  200505101 28800 7200 86400 28800‘);

    INSERT INTO dnsrecord VALUES (‘test.net‘, 259200, ‘NS‘, ‘ns1.test.net.‘);

    INSERT INTO dnsrecord VALUES (‘ns1.test.net‘, 259200, ‘A‘, ‘192.168.2.2‘);

    INSERT INTO dnsrecord VALUES (‘www.test.net‘, 259200, ‘A‘, ‘192.168.2.1‘);

13.繼續配置bind 

vim /usr/local/bind/etc/named.conf

在後面按照以下格式加入

zone "mydomain.com" {

    type master;

    notify no; 

    database "mysqldb dbname tablename hostname user password"; };

mydomain.com為要解析的網域名稱

dbname 為資料庫名

hostname為資料庫伺服器地址

user 為可操作前面資料庫表的資料庫使用者名稱

password 為對應資料庫使用者名稱的密碼


配置完成

在命令列下運行

/usr/local/bind/sbin/named -c /usr/local/bind/etc/named.conf -g

查看沒問題後


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

運行bind



寫入系統服務


vim /etc/init.d/named


####################################################################

#!/bin/bash

    #

    # description: named daemon  描述資訊

    # chkconfig: - 25 88    啟動和關閉層級

    #

    # 啟動named的pid檔案、其實檔案路徑我們都可以自己指定的

    pidFile=/usr/local/bind/var/run/named.pid

    # 啟動服務時的鎖檔案、判斷一個服務是不是啟動是靠這個鎖檔案的

    lockFile=/var/lock/subsys/named

    # named的設定檔路徑

    confFile=/usr/local/bind/etc/named.conf

    # 判斷/etc/rc.d/init.d/functions路徑下的functios是否存在這個檔案、存在就sources進來

    [ -r /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions

    # 定義啟動方法

    start() {

            # 判斷鎖檔案是否存在、如果存在就說服務已經啟動並退出

            if [ -e $lockFile ]; then

                echo "named is already running..."

                exit 0

            fi

            # 列印服務已經啟動的資訊

            echo -n "Starting named:"

            # 調用functions中的daemon方法、並用--pidfile指定pid檔案在什麼地方、還指定使用者和設定檔、我們本來是直接啟用named的、現在利用daemon這個函數來啟用這個服務、他會獲得很多額外的屬性、如果成功了會幫我們列印什麼[ OK ]的、還可以做判斷

            daemon --pidfile "$pidFile" /usr/local/bind/sbin/named -c "$confFile"

            RETVAL=$?

            echo

            # 判斷上面的命令是否執行成功、說明啟動成功

            if [ $RETVAL -eq 0 ]; then

                    # 如果判斷成功、就建立鎖檔案

                    touch $lockFile

                    return $RETVAL

            else

                    # 否則、就是失敗了、那就刪除鎖檔案和pid檔案

                    rm -f $lockFile $pidFile

                    return 1

            fi

    }

    # 定義停止方法

    stop() {

            # 如果鎖檔案不存在

            if [ ! -e $lockFile ]; then

                    # 說明服務還沒有啟動

                    echo "named is stopped."

            fi

            echo -n "Stopping named:"

            killproc named

            RETVAL=$?

            echo

            # 判斷以上的命令是否執行停止成功、如果成功

            if [ $RETVAL -eq 0 ];then

                    # 刪除鎖檔案和pid檔案

                    rm -f $lockFile $pidFile

                    return 0

            else

                    # 否則列印說沒能正常停止

                    echo "Cannot stop named."

                    # 調用functions中的函數、會列印失敗

                    failure

                    return 1

            fi

    }

    # 定義重啟服務

    restart() {

            # 調用停止方法

            stop

            # 睡眠2秒

            sleep 2

            # 調用啟動方法

            start

    }

    # 定義重新載入服務方法

    reload() {

            echo -n "Reloading named: "

            # killprco HUP訊號、named進程的訊號

            killproc named -HUP

            RETVAL=$?

            echo

            return $RETVAL

    }

    # 定義服務狀態

    status() {

            if pidof named &> /dev/null; then

                    echo -n "named is running..."

                    success

                    echo

            else

                    echo -n "named is stopped..."

                    success

                    echo

            fi

    }

    # 定義錯誤提示資訊

    usage() {

            echo "Usage: named {start|stop|restart|status|reload}"

    }

    case $1 in

    start)

            start ;;

    stop)

            stop ;;

    restart)

            restart ;;

    status)

            status ;;

    reload)

            reload ;;

    *)

            usage

            exit 4 ;;

    esac


####################################################################################

本文出自 “沙漠孤鷹” 部落格,請務必保留此出處http://yangji.blog.51cto.com/1155906/1732842

CentOS6系統bind9 + MySQL配置安裝

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.