海运的博客

PowerDNS使用

发布时间:February 1, 2014 // 分类:DNS // No Comments

使用EPEL源可直接安装:

yum install pdns pdns-backend-mysql

添加MySQL数据库:

create database powerdns;
grant all privileges on powerdns.* to 'powerdns'@'localhost' identified by 'password';
use powerdns;
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)
) Engine=InnoDB;

CREATE UNIQUE INDEX name_index ON domains(name);

CREATE TABLE records (
  id              INT auto_increment,
  domain_id       INT DEFAULT NULL,
  name            VARCHAR(255) DEFAULT NULL,
  type            VARCHAR(10) DEFAULT NULL,
  content         VARCHAR(64000) DEFAULT NULL,
  ttl             INT DEFAULT NULL,
  prio            INT DEFAULT NULL,
  change_date     INT DEFAULT NULL,
  primary key(id)
) Engine=InnoDB;

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

create table supermasters (
  ip         VARCHAR(64) NOT NULL, 
  nameserver VARCHAR(255) NOT NULL, 
  account    VARCHAR(40) DEFAULT NULL,
  PRIMARY KEY (ip, nameserver)
) Engine=InnoDB;

将SQL信息添加到PowerDNS配置文件:

launch=gmysql
gmysql-host=localhost
gmysql-user=powerdns
gmysql-password=password
gmysql-dbname=powerdns

添加域名记录:

INSERT INTO domains (name, type) values ('example.com', 'NATIVE');
insert  into `records`(`domain_id`,`name`,`type`,`content`,`ttl`,`prio`,`change_date`) values 
 (1,'example.com','SOA','localhost root@example.com 1',86400,NULL,NULL);
insert  into `records`(`domain_id`,`name`,`type`,`content`,`ttl`,`prio`,`change_date`) values
 (1,'example.com','NS','ns.example.com',86400,NULL,NULL);
insert  into `records`(`domain_id`,`name`,`type`,`content`,`ttl`,`prio`,`change_date`) values
 (1,'example.com','A','192.0.2.10',120,NULL,NULL);
insert  into `records`(`domain_id`,`name`,`type`,`content`,`ttl`,`prio`,`change_date`) values
 (1,'*.example.com','A','192.0.2.10',120,NULL,NULL);
insert  into `records`(`domain_id`,`name`,`type`,`content`,`ttl`,`prio`,`change_date`) values
 (1,'ns.example.com','A','192.0.2.10',120,NULL,NULL);

看看效果:

/etc/init.d/pdns monitor

PHP:

<?php
   try { 
      $dbo = new PDO('mysql:host=localhost;dbname=powerdns', 'powerdns', 'password');
   } catch (PDOException $e) { 
      $error = $e->getMessage();
      die("PDO Execute Error : ".$error."\n");       
   }
   $domain = 'www.haiyun.me';
   $sql = "SELECT `id` FROM domains WHERE NAME = \"$domain\"";
   $stmt = $dbo->query($sql);
   //var_dump($stmt);
   $result = $stmt->fetch(PDO::FETCH_ASSOC);
   var_dump($result);
   if ($result) {
      $id = $result['id'];
   } else {
      $sql = "INSERT INTO domains (name, TYPE) VALUES (\"$domain\", 'NATIVE')";
      $dbo->query($sql);
      $id = $dbo->lastInsertId();
   }
   $sql = "INSERT INTO `records` (`domain_id`, `name`, `TYPE`, `content`, `ttl`) VALUES (:id, :name, :type, :content, :ttl)";
   $stmt = $dbo->prepare($sql);    
   $stmt->execute(array(':id'=>$id, ':name'=>'a.'.$domain, ':type'=>'A', ':content'=>'192.168.1.1', ':ttl'=>'600')); 
   $stmt->execute(array(':id'=>$id, ':name'=>'b.'.$domain, ':type'=>'A', ':content'=>'192.168.1.1', ':ttl'=>'600')); 
?>

FastDFS配合FastDHT去重

发布时间:January 28, 2014 // 分类:Linux服务 // No Comments

FastDHT使用Berkeley DB为后端存储,安装:

wget https://fastdht.googlecode.com/files/FastDHT_v1.23.tar.gz
tar zxvf FastDHT_v1.23.tar.gz 
cd FastDHT
./make.sh C_INCLUDE_PATH=/usr/local/BerkeleyDB.6.0/include \
LIBRARY_PATH=/usr/local/BerkeleyDB.6.0/lib/
./make.sh install
mkdir -p /home/yuqing/fastdht
echo "/usr/local/BerkeleyDB.6.0/lib/" > /etc/ld.so.conf.d/db.conf
ldconfig

配置fastdht:

/etc/fdht/fdht_servers.conf
group_count = 2
group0 = 192.168.1.1:11411
group0 = 192.168.1.2:11411
group1 = 192.168.1.1:11411
group1 = 192.168.1.2:11411

配置fastdfs storage

/etc/fdfs/storage.conf 
check_file_duplicate=1
file_signature_method=hash
key_namespace=FastDFS
keep_alive=1
#include /etc/fdht/fdht_servers.conf

再次测试上传多次同个文件,重复上传的文件以链接方式保存。

rpmbuild遇到的问题

发布时间:January 28, 2014 // 分类:CentOS // No Comments

当打包文件包含软链接时遇到以下错误:error: Symlink points to BuildRoot,解决:

#源文件使用绝对路径,软链接使用%{buildroot}路径,打包时会自动处理
ln -sf /usr/local/lib/libfdfsclient.so.1 %{buildroot}/usr/local/lib/libfdfsclient.so

安装打包好的rpm时提示,而依赖的动态库本身位于要安装的软件包中。

error: Failed dependencies:libfastcommon.so()(64bit) is needed by fastdfs-4.0.6-1.el6.x86_64

原因是rpm build时会检查依赖,安装时如果不满足依赖不能安装,禁用之:

AutoReqProv: no

分布式存储FastDFS使用

发布时间:January 28, 2014 // 分类:Linux服务 // No Comments

安装:

yum install -y libevent-devel pcre-devel zlib-devel
wget http://fastdfs.googlecode.com/files/FastDFS_v4.06.tar.gz
tar zxvf FastDFS_v4.06.tar.gz
cd FastDFS
./make.sh && ./make.sh install

配置tracker:

/etc/fdfs/tracker.conf 
base_path=/home/fastdfs #工作目录,记录日志相差信息
bind_addr=0.0.0.0
port=22122
run_by_group=fastdfs
run_by_user=fastdfs

配置storage:

/etc/fdfs/storage.conf 
group_name=group1 #服务器所在组,组内服务器数据同步
base_path=/home//fastdfs
store_path0=/home/fastdfs #数据目录
tracker_server=192.168.1.1:22122 #tracker服务器

配置client:

/etc/fdfs/client.conf 
tracker_server=192.168.1.1:22122

测试上传:

fdfs_test /etc/fdfs/client.conf upload .bashrc 

查看group/storage信息及删除storage:

fdfs_monitor /etc/fdfs/client.conf
fdfs_monitor /etc/fdfs/client.conf delete group1 192.168.1.1

安装配置php客户端:

cd php_client/
./configure
make && make install
cp fastdfs_client.ini /etc/php.d/
#配置调用上面配置的/etc/fdfs/client.conf 

使用php上传文件:

<?php
$tracker = fastdfs_tracker_get_connection();
var_dump($tracker);
$storage = fastdfs_tracker_query_storage_store();
var_dump($storage);
$ret = fastdfs_storage_upload_by_filename('fastdfs.spec');
var_dump($ret);
$ret = fastdfs_storage_upload_by_filename1('fastdfs.spec');
var_dump($ret);
$file = file_get_contents("fastdfs.spec");
$ret = fastdfs_storage_upload_by_filebuff($file, 'spec');
var_dump($ret);
$ret = fastdfs_storage_upload_by_filebuff1($file, 'spec');
var_dump($ret);
?>

storage存储安装Nginx模块,用于提供文件下载,文件不存在时通过tracker获取同组内其它storage数据:

wget http://fastdfs.googlecode.com/files/fastdfs-nginx-module_v1.15.tar.gz
./configure --add-module=/root/fastdfs-nginx-module/src
cp mod_fastdfs.conf /etc/fdfs/ #配置文件

插件配置:

tracker_server=192.168.1.1:22122
group_name=group1
url_have_group_name = false #url是否包含组名
response_mode=proxy #向其它storage获取数据方式,代理或重定向
    #location /grout0/M00 { #url_have_group_name要设置为true
    location /M00 {
            root /home/yuqing/fastdfs/data;
            ngx_fastdfs_module;
    }

直接使用Nginx提供文件访问,不通过tracker:

  location /M00 {
    alias /home/yuqing/fastdfs/data;
    #ngx_fastdfs_module;
  }

自建yum源

发布时间:January 27, 2014 // 分类:CentOS // No Comments

安装制作软件包:

yum -y install createrepo

创建仓库目录:

mkdir -p /yum/centos/6/{i386,x86_64}
生成repodata索引
createrepo -d /yum/centos/6/x86_64/
#更新索引
createrepo --update /yum/centos/6/x86_64/

配置Nginx:

location / {
    root /yum;
    autoindex_exact_size off;
    autoindex_localtime on;
    autoindex  on;
}

配置yum使用源:

[testrepo]
name=test repo
baseurl=http://192.168.1.1/centos/6/$basearch/
gpgcheck=0
enabled=1
分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...
归档