<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Life Style! &#187; 技术实践</title>
	<atom:link href="http://www.realqi.cn/category/%e6%8a%80%e6%9c%af%e5%ae%9e%e8%b7%b5/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.realqi.cn</link>
	<description>系统管理  维护监控  简单生活</description>
	<lastBuildDate>Wed, 25 Aug 2010 14:41:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>build your own dns on the internet</title>
		<link>http://www.realqi.cn/2009/10/%e7%bb%88%e4%ba%8e%e6%90%9e%e5%ae%9a%e4%ba%86%e8%87%aa%e5%b7%b1%e7%9a%84dns%e6%9c%8d%e5%8a%a1%e5%99%a8/</link>
		<comments>http://www.realqi.cn/2009/10/%e7%bb%88%e4%ba%8e%e6%90%9e%e5%ae%9a%e4%ba%86%e8%87%aa%e5%b7%b1%e7%9a%84dns%e6%9c%8d%e5%8a%a1%e5%99%a8/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 08:39:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技术实践]]></category>
		<category><![CDATA[经验技巧]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[build dns]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[ns]]></category>
		<category><![CDATA[公网上自建DNS]]></category>

		<guid isPermaLink="false">http://www.realqi.cn/?p=526</guid>
		<description><![CDATA[最近一直在看非技术方面的书，对技术有的渐谈的感觉，正好买了一个thinkos.net 的域名.打算深入的学习一下DNS.
预期目标
1.自己建立解析服务器,并解析自己的域名,并做到安全,可靠
预期计划
                第一步:搞定自己的DNS服务器,使其能正常解析
                第二步:去代理商那里注册自建的DNS服务器
                第三步:进行功能测试,确定功能,其响应及处理能力.
                第四步:了解DNS服务器相关的安全性问题,加固
                第五步:做一台辅域名服务器
相关必要信息
       1. thinkos.net 是在万网的代理商那里买的(60块/年)
       2.有一台自己完全管控的服务器,并有公网IP(这个在双线IDC机房)
       3.NS 服务器是需要花钱在代理商那里注册后才能用的(购买价格约为20元每组)
第一步:建设自己的DNS 服务器
      1.yum 安装相关的软件包
        yum -y install  bind  bind-chroot bind-utils
      2.规划bind 配置文件的存放结构，
        服务器可能会解析多个域，我把相关数据文件和配置文件分开,
        还有就是请求的对像，比如内网的请求需要解析的内网IP，电信的请求需要解析的电信的IP
        所以要用到VIEW,方便简单的管理
      3.创建相关的配置文件
           1. /etc/named.conf  #bind9的主配置文件
           2. ../chroot/var/named/data/internal.conf  #针对内网的ZONE配置
           3. ../chroot/var/named/data/external.conf #针对非内网的查询ZONE配置文件
           4. ../chroot/var/named/data/thinkos.net  #非内网的查询用的域名数据库
           5. ../chroot/var/named/data/thinkos.zone  #内网的查询用的域名数据库
zone 数据文件内一部份放在../chroot/var/named/data/localzone下，thinkos域名相关的，则直接放在../chroot/var/named/data 下面
1.named.conf 
options {
	directory "/var/named/data";
	dump-file "/var/named/data/cache_dump.db";
    	statistics-file  <a href="http://www.realqi.cn/2009/10/%e7%bb%88%e4%ba%8e%e6%90%9e%e5%ae%9a%e4%ba%86%e8%87%aa%e5%b7%b1%e7%9a%84dns%e6%9c%8d%e5%8a%a1%e5%99%a8/" class="more-link">更多 &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>最近一直在看非技术方面的书，对技术有的渐谈的感觉，正好买了一个thinkos.net 的域名.打算深入的学习一下DNS.</p>
<p>预期目标<br />
1.自己建立解析服务器,并解析自己的域名,并做到安全,可靠</p>
<p>预期计划<br />
                第一步:搞定自己的DNS服务器,使其能正常解析<br />
                第二步:去代理商那里注册自建的DNS服务器<br />
                第三步:进行功能测试,确定功能,其响应及处理能力.<br />
                第四步:了解DNS服务器相关的安全性问题,加固<br />
                第五步:做一台辅域名服务器</p>
<p>相关必要信息<br />
       1. thinkos.net 是在万网的代理商那里买的(60块/年)<br />
       2.有一台自己完全管控的服务器,并有公网IP(这个在双线IDC机房)<br />
       3.NS 服务器是需要花钱在代理商那里注册后才能用的(购买价格约为20元每组)</p>
<p><strong>第一步:建设自己的DNS 服务器</strong><br />
      1.yum 安装相关的软件包</p>
<pre>        yum -y install  bind  bind-chroot bind-utils</pre>
<p>      2.规划bind 配置文件的存放结构，<br />
        服务器可能会解析多个域，我把相关数据文件和配置文件分开,<br />
        还有就是请求的对像，比如内网的请求需要解析的内网IP，电信的请求需要解析的电信的IP<br />
        所以要用到VIEW,方便简单的管理</p>
<p>      3.创建相关的配置文件<br />
           1. /etc/named.conf  #bind9的主配置文件<br />
           2. ../chroot/var/named/data/internal.conf  #针对内网的ZONE配置<br />
           3. ../chroot/var/named/data/external.conf #针对非内网的查询ZONE配置文件<br />
           4. ../chroot/var/named/data/thinkos.net  #非内网的查询用的域名数据库<br />
           5. ../chroot/var/named/data/thinkos.zone  #内网的查询用的域名数据库<br />
zone 数据文件内一部份放在../chroot/var/named/data/localzone下，thinkos域名相关的，则直接放在../chroot/var/named/data 下面</p>
<p><strong>1.named.conf </strong></p>
<pre>options {
	directory "/var/named/data";
	dump-file "/var/named/data/cache_dump.db";
    	statistics-file "/var/named/data/named_stats.txt";
    	version "";
 	datasize 40M;
        recursion no;
        allow-query { any; };
	forwarders { 221.228.255.1;
			218.2.135.1;
			221.6.96.177;
			221.6.96.178;
			221.228.255.1;
			218.2.135.1;
			202.96.209.133;
			202.96.209.5; };

};

logging {
    channel default_syslog {
			     syslog local2;
			     severity debug;
			  };
    channel audit_log { file "/var/named/data/named.log";
			severity info;
			print-time yes;
			versions 3 size 1240k;
		      };

    category default { default_syslog; };
    category general { default_syslog; };
    category security { audit_log; default_syslog; };
    category config { default_syslog; };
    category resolver { audit_log; };
    category xfer-in { audit_log; };
    category xfer-out { audit_log; };
    category notify { audit_log; };
    category client { audit_log; };
    category network { audit_log; };
    category update { audit_log; };
    category queries { audit_log; };
    category lame-servers { audit_log; };
};

controls {
	inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

include "/etc/rndc.key";

view "internal" {
        match-clients { 10.11.10.0/24; };
        recursion no; 

include "internal.conf";
};

view "external" {
        match-clients { any; };
        recursion no; 

include "external.conf";
};</pre>
<p><strong>2.internal.conf</strong></p>
<pre>zone "." IN {
        type hint;
        file "localzone/named.ca";
};

zone "localdomain" IN {
        type master;
        file "localzone/localdomain.zone";
        allow-update { none; };
};

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

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

zone "255.in-addr.arpa" IN {
        type master;
        file "localzone/named.broadcast";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "localzone/named.zero";
        allow-update { none; };
};

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

};</pre>
<p><strong>3.external.conf</strong></p>
<pre>zone "." IN {
        type hint;
        file "localzone/named.ca";
};

zone "thinkos.net" IN {
      type master;
      file "thinkos.net";
      allow-update { none; };
};</pre>
<p><strong>4.thinkos.net</strong></p>
<pre>$TTL 300
@ IN SOA  dns.thinkos.net. root. (
                       2009021201   ;Serial
                       3600         ;Refresh ( seconds )
                       900          ;Retry ( seconds )
                       68400        ;Expire ( seconds )
                       15 )         ;Minimum TTL for Zone ( seconds )
        IN      NS     thinkos.net.
        IN      A      210.51.50.122
ns1     IN      A      210.51.50.122
dns     IN      A      210.51.50.122
www     IN      A      210.51.50.122
cacti   IN      A      210.51.50.122
 </pre>
<p><strong>5.thinkos.zone</strong></p>
<pre>$TTL 20
@ IN SOA  dns.thinkos.net. root. (
                       2009021201   ;Serial
                       3600         ;Refresh ( seconds )
                       900          ;Retry ( seconds )
                       68400        ;Expire ( seconds )
                       15 )         ;Minimum TTL for Zone ( seconds )
        IN      NS     thinkos.net.
        IN      A      10.11.10.254
ns1     IN      A     10.11.10.254
dns     IN      A     10.11.10.254
www     IN      A     10.11.10.254</pre>
<p>  <strong>   4.启动bind 并进行基本功能测试</strong><br />
           在另外一台机器上执行如下命令<br />
                                   dig www.thinkos.net @ns1.thinkos.net<br />
看如下的返回</p>
<pre>; &lt;&lt;&gt;&gt; DiG 9.3.4-P1 &lt;&lt;&gt;&gt; www.thinkos.net @ns1.thinkos.net
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 18686
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.thinkos.net.               IN      A

;; ANSWER SECTION:
<span style="color: #ff00ff;">www.thinkos.net.        300     IN      A       210.51.50.122
</span>
;; AUTHORITY SECTION:
thinkos.net.            300     IN      NS      thinkos.net.

;; ADDITIONAL SECTION:
thinkos.net.            300     IN      A       210.51.50.122

;; Query time: 113 msec
;; SERVER: 210.51.50.122#53(210.51.50.122)
;; WHEN: Thu Oct 29 09:09:41 2009
;; MSG SIZE  rcvd: 79</pre>
<p><strong>第二步:去代理商那里注册自建的DNS服务器</strong></p>
<p>     这一步很复杂，复杂主要是跟域名提供商的沟通，一是我自己对某些概念不是很确定,二是客服啥也不懂,三是网站上的的体验很差,找了半天找不到相关的产品,找到了且还不能购买,后来根据他们的建议,直接找万网的人终于了解整个概念，和操作流程,后来他们手动在后台给我做了购买. 但也很简单,直接告诉他们你的NS 服务器的域名,和要对IP地址,他们给你注册一下,半个小时候可以在公网上解析得到,这一步就完成了. 相关的图</p>
<p><a title="Flickr 上 realqi.cn 的 DNS" href="http://www.flickr.com/photos/realqi/4055073046/"><img src="http://farm4.static.flickr.com/3510/4055073046_b6d2e1d157_o.jpg" alt="DNS" width="623" height="351" /></a></p>
<p>                              <span style="color: #ff0000;"> 图&lt;创建自己的DNS服务器&gt;以万网一个代理商为例</span></p>
<p><a title="Flickr 上 realqi.cn 的 dn1" href="http://www.flickr.com/photos/realqi/4055081992/"><img src="http://farm4.static.flickr.com/3477/4055081992_f4bfaccaae_o.jpg" alt="dn1" width="630" height="375" /></a></p>
<p><span style="color: #ff0000;">                      图&lt;到域名购买商修改解析地址为自己创建的NS服务器&gt;</span></p>
<p><span style="color: #ff0000;"> </span></p>
<p><a title="Flickr 上 realqi.cn 的 OK" href="http://www.flickr.com/photos/realqi/4055092356/"><img src="http://farm4.static.flickr.com/3533/4055092356_363f2e47f5_o.jpg" alt="OK" width="638" height="396" /></a></p>
<p>    <span style="color: #ff0000;">                    图 &lt;NS  服务器已成功在公网注册上,并已生效&gt;</span></p>
<p><span style="color: #ff0000;">  注意</span>: 我在自己建的DNS 服务器上是没有添加ns2.thinkos.net 这条记录的，可去看thinkos.net 文件进行确认.</p>
<p><strong>第三步:进行功能测试,了解响应及处理能力.</strong><br />
<strong>1.确定NS 服务器已正常工作</strong><br />
       思路一、 解析一个A记录，跟踪其解析路径。比如 dig  www.thinkos.net +trace<br />
       思路二、 指定多个DNS 服务器解析你的一个A记录比如 dig www.thinkos.net @221.228.255.1</p>
<p><strong>dig www.thinkos.net +trace</strong></p>
<pre>; &lt;&lt;&gt;&gt; DiG 9.2.4 &lt;&lt;&gt;&gt; www.thinkos.net +trace
;; global options:  printcmd
<span style="color: #ff00ff;">.                       166869  IN      NS      G.ROOT-SERVERS.NET.
</span>.                       166869  IN      NS      D.ROOT-SERVERS.NET.
.                       166869  IN      NS      E.ROOT-SERVERS.NET.
.                       166869  IN      NS      H.ROOT-SERVERS.NET.
.                       166869  IN      NS      L.ROOT-SERVERS.NET.
.                       166869  IN      NS      C.ROOT-SERVERS.NET.
.                       166869  IN      NS      A.ROOT-SERVERS.NET.
.                       166869  IN      NS      K.ROOT-SERVERS.NET.
.                       166869  IN      NS      J.ROOT-SERVERS.NET.
.                       166869  IN      NS      B.ROOT-SERVERS.NET.
.                       166869  IN      NS      F.ROOT-SERVERS.NET.
.                       166869  IN      NS      I.ROOT-SERVERS.NET.
.                       166869  IN      NS      M.ROOT-SERVERS.NET.
;; Received 512 bytes from 221.228.255.1#53(221.228.255.1) in 72 ms

net.                    172800  IN      NS      C.GTLD-SERVERS.net.
net.                    172800  IN      NS      F.GTLD-SERVERS.net.
net.                    172800  IN      NS      L.GTLD-SERVERS.net.
net.                    172800  IN      NS      I.GTLD-SERVERS.net.
net.                    172800  IN      NS      E.GTLD-SERVERS.net.
net.                    172800  IN      NS      J.GTLD-SERVERS.net.
net.                    172800  IN      NS      H.GTLD-SERVERS.net.
net.                    172800  IN      NS      B.GTLD-SERVERS.net.
net.                    172800  IN      NS      K.GTLD-SERVERS.net.
net.                    172800  IN      NS      A.GTLD-SERVERS.net.
net.                    172800  IN      NS      G.GTLD-SERVERS.net.
net.                    172800  IN      NS      D.GTLD-SERVERS.net.
net.                    172800  IN      NS      M.GTLD-SERVERS.net.
<span style="color: #ff00ff;">;; Received 490 bytes from 192.112.36.4#53(G.ROOT-SERVERS.NET) in 155 ms</span>

<span style="color: #ff00ff;">thinkos.net.            172800  IN      NS      ns1.thinkos.net.
thinkos.net.            172800  IN      NS      ns2.thinkos.net.</span>
<span style="color: #ff00ff;">;; Received 101 bytes from 192.26.92.30#53(C.GTLD-SERVERS.net) in 294 ms</span>

<span style="color: #ff00ff;">www.thinkos.net.        300     IN      A       210.51.50.122
thinkos.net.            300     IN      NS      thinkos.net.</span>
;; Received 79 bytes from 210.51.50.122#53(ns1.thinkos.net) in 29 ms</pre>
<p><strong>dig www.thinkos.net @221.228.255.1</strong></p>
<pre>; &lt;&lt;&gt;&gt; DiG 9.2.4 &lt;&lt;&gt;&gt; www.thinkos.net @221.228.255.1
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 63334
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.thinkos.net.               IN      A

;; ANSWER SECTION:
www.thinkos.net.        138     IN      A       210.51.50.122

;; AUTHORITY SECTION:
<span style="color: #ff00ff;">thinkos.net.            <span style="color: #ff0000;">138 </span>    IN      NS     <span style="color: #ff0000;"> ns1.</span>thinkos.net.
</span>
;; ADDITIONAL SECTION:
ns1.thinkos.net.        70315   IN      A       210.51.50.122

;; Query time: 0 msec
;; SERVER: 221.228.255.1#53(221.228.255.1)
;; WHEN: Thu Oct 29 14:31:45 2009
;; MSG SIZE  rcvd: 83</pre>
<p>这里有两个点值得说一下，<br />
<strong>一是</strong> ns1.thinkos.net.本来应该返回为thinkos.net.这里返回为ns1.thinkos.net的原因为我更改了thinkos.net 里的<br />
IN      NS     <span style="color: #ff0000;">thinkos.net. </span>为 IN      NS   <span style="color: #ff0000;">ns1.thinkos.net</span></p>
<p><strong>二是</strong>： <span style="color: #ff0000;">138</span>这个数字是是TTL 值，单位为秒。比如在我的thinkos.net 里的设置为<br />
$TTL 300<br />
@ IN SOA  ns1.thinkos.net. root.<br />
     DNS中TTL值的主要作用是为每一条记录设置一个存活时间，互联网上的缓存DNS服务器在查询到这条记录之后都会将TTL值缓存到本地，这样做一是提高DNS解析的速度，二是降低网络流量。这个值如果设得过大，如果你记录有更新，互联网上DNS对这条变更的记录生效的就慢，如果设得过小，其它服务器会因时间过短而查不到。<a href="http://http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.ch06.html#Setting_TTLs">更多请看bind9官方文档</a>   <a href="http://www.oolec.com/dns_ttl_settings_and_negative_ttl/">这里有中文</a></p>
<p><strong>2.了解响应时间</strong><br />
<h3>相关文章</h3>
<ul class="related_post">
<li>No Related Post</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.realqi.cn/2009/10/%e7%bb%88%e4%ba%8e%e6%90%9e%e5%ae%9a%e4%ba%86%e8%87%aa%e5%b7%b1%e7%9a%84dns%e6%9c%8d%e5%8a%a1%e5%99%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache Don&#039;t Log Specific IP Address and User-Agents</title>
		<link>http://www.realqi.cn/2009/10/apache-dont-log-specific-ip-address-and-user-agents/</link>
		<comments>http://www.realqi.cn/2009/10/apache-dont-log-specific-ip-address-and-user-agents/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 06:52:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[技术实践]]></category>
		<category><![CDATA[系统管理]]></category>
		<category><![CDATA[经验技巧]]></category>
		<category><![CDATA[Don't Log]]></category>
		<category><![CDATA[setenvif]]></category>

		<guid isPermaLink="false">http://realqi.cn/?p=508</guid>
		<description><![CDATA[  自cacti 开启通过mod_staus对apache 的监控后,apache多了很多监控的访问日志, 对手动分析apache日志,或用awstats分析日志时都需要先对日志进行过滤,一是对监控固定的ip进行日志址滤掉,二是监控访问的固定URL,(awstats也可以过滤掉)先是cat.再grep 然后又是sed ,费时,日志大了还很耗资源. 

     以关键词"dontlog special ip apache" 找到"setenvif"指令
]]></description>
			<content:encoded><![CDATA[<p>      自cacti 开启通过mod_status对apache 的监控后,apache多了很多监控的访问日志, 对手动分析apache日志,或用awstats分析日志时都需要先对日志进行过滤,一是对监控固定的ip进行日志址滤掉,二是监控访问的固定URL,(awstats也可以过滤掉)先是cat.再grep 然后又是sed ,费时,日志大了还很耗资源.</p>
<p>     以关键词"dontlog special ip apache" 找到"setenvif"指令  apache果然可以对特定的url 和或访问IP 不进行日志记录, 详细了解请看:<a href="http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_setenvif.html ">apache 中文手册</a> (<a href="http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_setenvif.html ">chinaunix</a>)</p>
<p><strong>实现</strong><br />
         apache需要装载mod_setenvif模块,可用<span style="color: #ff0000;">apachectl -M</span> 命令确认apache是否已装载此模块.如果没有则需要手动编绎一下.可用下面的指令来进行编绎</p>
<pre>         cd   apache_source/modules/metadata
         /usr/local/apache2/bin/apxs -a -i -c mod_setenvif.c</pre>
<p>如下:apachectl -M 已看到apache已成功装载 <span style="color: #ff0000;">mod_setenvif</span></p>
<blockquote><p>userdir_module (static)<br />
 alias_module (static)<br />
 so_module (static)<br />
setenvif_module (shared)</p></blockquote>
<p>打开httpd.conf 文件在合适的位置添加如下内容,</p>
<pre>   #SetEnvIf Remote_Addr "10\.11\.10\.254" dontlog
   SetEnvIf Remote_Addr "::1" dontlog
   SetEnvIf Request_URI "server-status" dontlog</pre>
<p>然后修改CustomLog "logs/access_log" combined 为</p>
<blockquote><p>CustomLog "logs/access_log" combined env=!dontlog</p></blockquote>
<p>重启apache</p>
<p>可以用tail -f ../logs/access_log 已看不到监控访问的日志了<br />
<h3>相关文章</h3>
<ul class="related_post">
<li>2009年10月15日 -- <a href="http://www.realqi.cn/2009/10/apache%e9%85%8d%e7%bd%ae%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e7%9a%84%e4%b8%89%e7%a7%8d%e6%96%b9%e6%b3%95/" title="APACHE配置虚拟主机的三种方法">APACHE配置虚拟主机的三种方法 (0)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.realqi.cn/2009/10/apache-dont-log-specific-ip-address-and-user-agents/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>搞定CHM文件无法显示网页　</title>
		<link>http://www.realqi.cn/2009/10/%e6%90%9e%e5%ae%9achm%e6%96%87%e4%bb%b6%e6%97%a0%e6%b3%95%e6%98%be%e7%a4%ba%e7%bd%91%e9%a1%b5%e3%80%80/</link>
		<comments>http://www.realqi.cn/2009/10/%e6%90%9e%e5%ae%9achm%e6%96%87%e4%bb%b6%e6%97%a0%e6%b3%95%e6%98%be%e7%a4%ba%e7%bd%91%e9%a1%b5%e3%80%80/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 03:50:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技术实践]]></category>
		<category><![CDATA[经验技巧]]></category>
		<category><![CDATA[chm]]></category>
		<category><![CDATA[解决chm]]></category>

		<guid isPermaLink="false">http://realqi.cn/?p=503</guid>
		<description><![CDATA[        一本别人推荐的书,想先预览下内容再去买,可惜找了很久,也只有一英文原片的CHM版，下载回来后,左边的目录都看得得到,点每个目录右边边框里都是无法显示网页。网上搜集了下. 没找到具体是什么原因, 但找到以下几种解决方法,我试过方法四. 有效果.

方法四：双击此 .chm 文件， 在“打开文件安全警告”对话框，单击以清除“打开此文件前始终询问”复选框。]]></description>
			<content:encoded><![CDATA[<div id="blog_text">
<p>        一本别人推荐的书,想先预览下内容再去买,可惜找了很久,也只有一英文原片的CHM版，（CHM电子书里容易藏恶意代码,,如果不能确定可信任,不要随便打开.推荐看PDF）下载回来后,<strong>左边的目录都看得得到</strong>,点每个目录<strong>右边边框里都是无法显示网页</strong>。网上搜集了下. 没找到具体是什么原因, 但找到以下几种解决方法,我试过<span style="color: #ff0000;">方法四</span>. 有效果.</p>
<p><strong>方法一：</strong>修改注册表，建一个文本文件添加如下内容：然后保存为以reg结尾的文件.双击这个新建的reg文件，将它导入注册表. 不过这种方法不安全，因为它将将浏览区域等级调整为3了，存在安全隐患，故不推荐。</p>
<pre>REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000003</pre>
<p><strong>方法二：</strong>查找目录名称是否有问题，目录名称中有 "#" 字符，去掉有 CHM 文件就显示正常了。</p>
<p><strong>方法三：</strong>有时候如果CHM是中文也会打不开，改成英文字符试验下。</p>
<p><strong>方法四：</strong>双击此 .chm 文件， 在“打开文件安全警告”对话框，单击以<strong>清除“打开此文件前始终询问</strong>”复选框。</p>
<p><strong>小知识：</strong><br />
    CHM 意为 Compiled HTML。以CHM为扩展名的文件图标通常为一个带问号的文档图标，表示帮助文档，是 Microsoft 自 Windows 98 以来提供的一种帮助文档格式的文件，用于替代 Windows 95 下的 HLP(Help) 文件。Microsoft 自 Windows 98 以来，操作系统中都自带解释器(打开 CHM 文件的工具)，即 Windows 安装目录下的 HH.EXE。CHM 文件可以通过官方免费提供了 HTML Help Workshop 生成，它的源文件是 HTML 文件。</p>
<p>参看的原资料：<a href="http://hi.baidu.com/ggyy667/blog/item/ed8cf9d49ab93902a08bb7cd.html">http://hi.baidu.com/ggyy667/blog/item/ed8cf9d49ab93902a08bb7cd.html</a></div>
<h3>相关文章</h3>
<ul class="related_post">
<li>No Related Post</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.realqi.cn/2009/10/%e6%90%9e%e5%ae%9achm%e6%96%87%e4%bb%b6%e6%97%a0%e6%b3%95%e6%98%be%e7%a4%ba%e7%bd%91%e9%a1%b5%e3%80%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL 独特的用户机制</title>
		<link>http://www.realqi.cn/2009/10/mysql-%e7%8b%ac%e7%89%b9%e7%9a%84%e7%94%a8%e6%88%b7%e6%9c%ba%e5%88%b6/</link>
		<comments>http://www.realqi.cn/2009/10/mysql-%e7%8b%ac%e7%89%b9%e7%9a%84%e7%94%a8%e6%88%b7%e6%9c%ba%e5%88%b6/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 07:18:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[技术实践]]></category>
		<category><![CDATA[mysql user]]></category>

		<guid isPermaLink="false">http://realqi.cn/?p=433</guid>
		<description><![CDATA[ MySQL 的用户名跟防火墙类似，它还包含了登陆限止机制。例如，对于下面三个 MySQL 用户名：

1. dba@'localhost'        -- dba 只能从本机登陆
2. dba@'%'                -- dba 可以从网络中任意机器访问 MySQL 服务器
3. dba@'192.168.1.201'    -- dba 可以从 192.168.1.201 机器上访问 MySQL 服务器

本文系学习收集的资料.经过一点点的修改,转载而来,非原创.]]></description>
			<content:encoded><![CDATA[<p> MySQL 的用户名跟防火墙类似，它还包含了登陆限制机制。例如，对于下面三个 MySQL 用户名：</p>
<pre>1. <a href="mailto:dba@'localhost'">dba@'localhost'</a>        -- dba 只能从本机登陆
2. <a href="mailto:dba@'%'">dba@'%'</a>                -- dba 可以从网络中任意机器访问 MySQL 服务器
3. <a href="mailto:dba@'192.168.1.201'">dba@'192.168.1.201'</a>    -- dba 可以从 192.168.1.201 机器上访问 MySQL 服务器</pre>
<p>MySQL 的用户机制太棒了！如果我们创建用户：</p>
<pre><a href="mailto:dba@'localhost'">dba@'localhost'</a>
<a href="mailto:dba@'192.168.1.201'">dba@'192.168.1.201'</a></pre>
<p>那么 dba 用户就只能从本机和IP地址为 192.168.1.201 的机器上连接 MySQL 服务器。并且这两个 dba 用户可以有各自不同权限和密码。这对于 MySQL 数据库安全来说，无疑又是一道重要保障。</p>
<p><strong>另外需要注意的是：</strong><br />
一、对于 create user dba 来说，实际上等价于 create user dba@'%'</p>
<pre>mysql&gt; user mysql;

mysql&gt; select * from user;
+-----------+----------+-------------------------------------------
| Host      | User     | Password
+-----------+----------+-------------------------------------------
| localhost | root     | *00B030D4A50E401A71BE65401BACC15BDF491830
+-----------+----------+-------------------------------------------

mysql&gt; create user dba identified by 'dbaany';

mysql&gt; select * from user;
+-----------+----------+-------------------------------------------
| Host      | User     | Password
+-----------+----------+-------------------------------------------
| localhost | root     | *00B030D4A50E401A71BE65401BACC15BDF491830
| %         | dba      | *FF34267EA1B8DFE97F151870830EC8FE9DF816B4
+-----------+----------+-------------------------------------------</pre>
<p>二、对于 MySQL 数据库中同时存在用户 dba@'localhost' 和 dba@'%' 来说，从本地访问 MySQL 时，用户应是 dba@'localhost' ;</p>
<p>从远程访问 MySQL 时，用户环境应是 dba@'%'</p>
<pre>mysql&gt; create user <a href="mailto:dba@'localhost'">dba@'localhost'</a> identified by 'dbalocal';

mysql&gt; select * from user;
+-----------+----------+-------------------------------------------
| Host      | User     | Password
+-----------+----------+-------------------------------------------
| localhost | root     | *00B030D4A50E401A71BE65401BACC15BDF491830
| localhost | dba      | *B44F37235B0B12C2DE1B9DF83105ACF23FA29EFF
| %         | dba      | *FF34267EA1B8DFE97F151870830EC8FE9DF816B4
+-----------+----------+-------------------------------------------

C:\&gt;mysql -u dba -p
Enter password: dbaany
ERROR 1045 (28000): Access denied for user <a href="mailto:'dba'@'localhost'">'dba'@'localhost'</a> (using password: YES)

C:\&gt;mysql -u dba -p
Enter password: dbalocal
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql&gt;</pre>
<p>三、访问 MySQL 数据库的时候，只需指定用户名 dba，而不是用户全名 dba@'localhost'或者 dba'%'。</p>
<pre>C:\&gt;mysql -u dba@'localhost' -p
Enter password: dbalocal
ERROR 1045 (28000): Access denied for user <a href="mailto:'dba@'localhost''@'localhost'">'dba@'localhost''@'localhost'</a> (using password: YES)

C:\&gt;mysql -u <a href="mailto:dba@'%'">dba@'%'</a> -p
Enter password: dbaany
ERROR 1045 (28000): Access denied for user <a href="mailto:'dba@'%''@'localhost'">'dba@'%''@'localhost'</a> (using password: YES)

C:\&gt;mysql -u dba -p
Enter password: dbalocal
Welcome to the MySQL monitor.
mysql&gt;</pre>
<p>四、远程访问 MySQL 数据库时，应指定 host 参数。</p>
<pre>mysql&gt; create user dba@'192.168.1.110' identified by 'dba110';

mysql&gt; select * from user;
+---------------+----------+-------------------------------------------
| Host          | User     | Password
+---------------+----------+-------------------------------------------
| localhost     | root     | *00B030D4A50E401A71BE65401BACC15BDF491830
| localhost     | dba      | *B44F37235B0B12C2DE1B9DF83105ACF23FA29EFF
| 192.168.1.110 | dba      | *E298453C1D169F9C724BE989EFD5581BAB4381AE
| %             | dba      | *FF34267EA1B8DFE97F151870830EC8FE9DF816B4
+---------------+----------+-------------------------------------------

C:\&gt;mysql -h 192.168.1.110 -u dba -p
Enter password: dba110
Welcome to the MySQL monitor.
mysql&gt;</pre>
<p>五、注意 mysql.user 表中用户 dba 的顺序，虽然我们创建 dba 用户的顺序是：</p>
<pre>1. dba@'%'
2. dba@'localhost'
3. dba@'192.168.1.110' 但 MySQL 在处理用户登陆的时候却采用不同的顺序。

+---------------+----------+
| Host          | User     |
+---------------+----------+
| localhost     | dba      |
| 192.168.1.110 | dba      |
| %             | dba      |
+---------------+----------+</pre>
<p>如果 dba 用户在本机登陆，MySQL 首先尝试使用 dba@localhost 用户；如果该用户不存在，则 MySQL 会选择 dba@'%'用户来完成登陆。如果 dba 用户在远程登陆，MySQL 首先尝试使用 dba@'192.168.1.110' 用户来登陆，如果 ip 地址不匹配，MySQL 最终会使用dba@'%'用户来完成登陆。当然，如果不存在dba@'%'，则登陆失败。<br />
<h3>相关文章</h3>
<ul class="related_post">
<li>2009年09月24日 -- <a href="http://www.realqi.cn/2009/09/show-a-cacti-monitor-mysql-graphp/" title="show a cacti-monitor-mysql graph">show a cacti-monitor-mysql graph (1)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.realqi.cn/2009/10/mysql-%e7%8b%ac%e7%89%b9%e7%9a%84%e7%94%a8%e6%88%b7%e6%9c%ba%e5%88%b6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>All TAP-Win32 adapters on this system are currently in use</title>
		<link>http://www.realqi.cn/2009/10/all-tap-win32-adapters-on-this-system-are-currently-in-use/</link>
		<comments>http://www.realqi.cn/2009/10/all-tap-win32-adapters-on-this-system-are-currently-in-use/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 00:41:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技术实践]]></category>
		<category><![CDATA[currently in use]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[TAP-Win32]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://realqi.cn/?p=422</guid>
		<description><![CDATA[管理员帐号下,用openvpn-gui连接vpn是报错

        All TAP-Win32 adapters on this system are currently in use
]]></description>
			<content:encoded><![CDATA[<p>管理员帐号下,用openvpn-gui连接vpn报错</p>
<pre>        All TAP-Win32 adapters on this system are currently in use</pre>
<p>关建词搜到这个问题产生的可能原因：</p>
<ol>
<li>"TAP for win32"网卡被禁用。安装了OpenVPN Win32以后，会安装一个虚拟网卡，如果网卡被禁用了，就会出现上面的错误。</li>
<li>没有系统权限来更改网卡设置。</li>
<li>没有建立虚拟网卡。运行OpenVPN目录里面的addtap.bat来建立一个虚拟网卡。</li>
<li>虚拟网卡类型不匹配。这种情况在安装了多个OpenVPN的情况下，容易出现。</li>
</ol>
<p>解决,进入网络连接,启用已被禁用的TAP-Win32 adapters ,连接正常<br />
<h3>相关文章</h3>
<ul class="related_post">
<li>No Related Post</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.realqi.cn/2009/10/all-tap-win32-adapters-on-this-system-are-currently-in-use/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>目前主要的端口扫描技术</title>
		<link>http://www.realqi.cn/2009/10/%e7%9b%ae%e5%89%8d%e4%b8%bb%e8%a6%81%e7%9a%84%e7%ab%af%e5%8f%a3%e6%89%ab%e6%8f%8f%e6%8a%80%e6%9c%af/</link>
		<comments>http://www.realqi.cn/2009/10/%e7%9b%ae%e5%89%8d%e4%b8%bb%e8%a6%81%e7%9a%84%e7%ab%af%e5%8f%a3%e6%89%ab%e6%8f%8f%e6%8a%80%e6%9c%af/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 00:58:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技术实践]]></category>
		<category><![CDATA[nmap]]></category>
		<category><![CDATA[scan]]></category>
		<category><![CDATA[扫描]]></category>

		<guid isPermaLink="false">http://realqi.cn/?p=420</guid>
		<description><![CDATA[1．TCP connect Scan（TCP连接扫描）
2．TCP SYN Scan（TCP同步序列号扫描）
3．TCP FIN Scan（TCP结束标志扫描）
4．IP Scan（IP协议扫描）]]></description>
			<content:encoded><![CDATA[<p>目前主要的端口扫描技术有以下几种。<br />
<strong>1．TCP connect Scan（TCP连接扫描）<br />
</strong>        这种方法也称之为“TCP全连接扫描”。它是最简单的一种扫描技术，所利用的是TCP协议的3次握手过程。它直接连到目标端口并完成一个完整的3次握手过程（SYN、SYN/ACK和ACK）。操作<a onclick="tagshow(event, '%CF%B5%CD%B3');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="COLOR: #000000">系统</span></strong></span></a>提供的“connect()”函数完成系统调用，用来与目标计算机的端口进行连接。如果端口处于侦听状态，那么“connect()”函数就能成功。否则，这个端口是不能用的，即没有提供服务。<br />
      TCP连接扫描技术的一个最大的优点是不需要任何权限，系统中的任何用户都有权利使用这个调用。另一个好处是速度快。如果对每个目标端口以线性的方式，使用单独的“connect()”函数调用，那么将会花费相当长的时间，用户可以同时打开多个套接字，从而加速扫描。使用非阻塞I/O允许用户设置一个低的时间以用尽周期，并同时观察多个套接字。但这种方法的缺点是很容易被发觉，并且很容易被过滤掉。目标计算机的日志文件会显示一连串的连接和连接出错的服务消息，目标计算机用户发现后就能很快使它关闭。<br />
<strong></strong><br />
<strong>2．TCP SYN Scan（TCP同步序列号扫描）<br />
</strong>      若端口扫描没有完成一个完整的TCP连接，即在扫描主机和目标主机的一指定端口建立连接的时候，只完成前两次握手，在第三步时，扫描主机中断了本次连接，使连接没有完全建立起来，所以这种端口扫描又称为“半连接扫描”，也称为“间接扫描”或“半开式扫描”（Half Open Scan）。<br />
SYN扫描，通过本机的一个端口向对方指定的端口，发送一个TCP的SYN连接建立请求数据报，然后开始等待对方的应答。如果应答数据报中设置了SYN位和ACK位，那么这个端口是开放的；如果应答数据报是一个RST连接复位数据报，则对方的端口是关闭的。使用这种方法不需要完成Connect系统调用所封装的建立连接的整个过程，而只是完成了其中有效的部分就可以达到端口扫描的目的。<br />
     此种扫描方式的优点是不容易被发现，扫描速度也比较快。同时通过对MAC地址的判断，可以对一些路由器进行端口扫描，缺点是需要系统管理员的权限，不适合使用多线程技术。因为在实现过程中需要自己完成对应答数据报的查找、分析，使用多线程容易发生数据报的串位现象，也就是原来应该这个线程接收的数据报被另一个线程接收，接收后，这个数据报就会被丢弃，而等待线程只好在超时之后再发送一个SYN数据报，等待应答。这样，所用的时间反而会增加。<br />
<strong></strong></p>
<p><strong>3．TCP FIN Scan（TCP结束标志扫描）</strong><br />
     这种扫描方式不依赖于TCP的3次握手过程，而是TCP连接的“FIN”（结束）位标志。原理在于TCP连接结束时，会向TCP端口发送一个设置了FIN 位的连接终止数据报，关闭的端口会回应一个设置了RST的连接复位数据报；而开放的端口则会对这种可疑的数据报不加理睬，将它丢弃。可以根据是否收到 RST数据报来判断对方的端口是否开放。<br />
此扫描方式的优点比前两种都要隐秘，不容易被发现。该方案有两个缺点：首先，要判断对方端口是否开放必须等待超时，增加了探测时间，而且容易得出错误的结论；其次，一些系统并没有遵循规定，最典型的就是Microsoft公司所开发的操作系统。这些系统一旦收到这样的数据报，无论端口是否开放都会回应一个 RST连接复位数据报，这样一来，这种扫描方案对于这类操作系统是无效的。<br />
<strong></strong></p>
<p><strong>4．IP Scan（IP协议扫描）</strong><br />
    这种方法并不是直接发送TCP协议探测数据包，而是将数据包分成两个较小的IP协议段。这样就将一个TCP协议头分成好几个数据包，从而过滤器就很难探测到。但必须小心，一些程序在处理这些小数据包时会有些麻烦。<br />
<strong></strong></p>
<p><strong>5．TCP Xmas Tree Scan</strong><br />
   这种方法向目标端口发送一个含有FIN（结束）、URG（紧急）和PUSH（弹出）标志的分组。根据RFC793，对于所有关闭的端口，目标系统应该返回RST标志。根据这一原理就可以判断哪些端口是开放的。<br />
<strong></strong></p>
<p><strong>6．TCP Null Scan</strong><br />
    这种方法与上一方法原理是一样，只是发送的数据包不一样而已。本扫描方案中，是向目标端口发送一个不包含任何标志的分组。根据RFC793，对于所有关闭的端口，目标系统也应该返回RST标志。<br />
<strong></strong></p>
<p><strong>7．UDP Scan（UDP协议扫描）</strong><br />
   在UDP扫描中，是往目标端口发送一个UDP分组。如果目标端口是以一个“ICMP port Unreachable”（ICMP端口不可到达）消息来作为响应的，那么该端口是关闭的。相反，如果没有收到这个消息那就可以推断该端口打开着。还有就是一些特殊的UDP回馈，比如SQL Server服务器，对其1434号端口发送“x02”或者“x03”就能够探测得到其连接端口。由于UDP是无连接的不可靠协议，因此这种技巧的准确性很大程度上取决于与网络及系统资源的使用率相关的多个因素。另外，当试图扫描一个大量应用分组过滤功能的设备时，UDP扫描将是一个非常缓慢的过程。如果要在互联网上执行UDP扫描，那么结果就是不可靠的。<br />
<strong></strong></p>
<p><strong>8．ICMP echo扫描</strong><br />
   其实这并不能算是真正意义上的扫描。但有时的确可以通过支持Ping命令，判断在一个网络上主机是否开机。Ping是最常用的，也是最简单的探测手段，用来判断目标是否活动。实际上Ping是向目标发送一个回显（Type＝8）的ICMP数据包，当主机得到请求后，再返回一个回显（Type＝0）的数据包。而且Ping程序一般是直接实现在系统内核中的，而不是一个用户进程，更加不易被发现。<br />
<strong></strong></p>
<p><strong>9．高级ICMP扫描技术</strong><br />
   Ping是利用ICMP协议实现的，高级的ICMP扫描技术主要利用ICMP协议最基本的用途——报错。根据网络协议，如果接收到的数据包协议项出现了错误，那么接收端将产生一个“Destination Unreachable”（目标主机不可达）ICMP的错误报文。这些错误报文不是主动发送的，而是由于错误，根据协议自动产生的。<br />
当IP数据包出现Checksum（校验和）和版本的错误的时候，目标主机将抛弃这个数据包；如果是Checksum出现错误，那么路由器就直接丢弃这个数据包。有些主机比如AIX、HP/UX等，是不会发送ICMP的Unreachable数据包的。<br />
例如，可以向目标主机发送一个只有IP头的IP数据包，此时目标主机将返回“Destination Unreachable”的ICMP错误报文。如果向目标主机发送一个坏IP数据包，比如不正确的IP头长度，目标主机将返回“Parameter Problem”（参数有问题）的ICMP错误报文。<br />
注意:<span style="FONT-FAMILY: 楷体_GB2312">如果是在目标主机前有一个防火墙或者一个其他的过滤装置，可能过滤掉提出的要求，从而接收不到任何的回应。这时可以使用一个非常大的协议数字作为IP头部的协议内容，而且这个协议数字至少在今天还没有被使用，主机一定会返回Unreachable；如果没有Unreachable的ICMP数据包返回错误提示，那么，就说明被防火墙或者其他设备过滤了，也可以用这个方法探测是否有防火墙或者其他过滤设备存在。</span></p>
<p><span style="FONT-FAMILY: 楷体_GB2312">转自:nmap网站</span><br />
<h3>相关文章</h3>
<ul class="related_post">
<li>No Related Post</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.realqi.cn/2009/10/%e7%9b%ae%e5%89%8d%e4%b8%bb%e8%a6%81%e7%9a%84%e7%ab%af%e5%8f%a3%e6%89%ab%e6%8f%8f%e6%8a%80%e6%9c%af/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>show a cacti-monitor-mysql graph</title>
		<link>http://www.realqi.cn/2009/09/show-a-cacti-monitor-mysql-graphp/</link>
		<comments>http://www.realqi.cn/2009/09/show-a-cacti-monitor-mysql-graphp/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 03:25:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技术实践]]></category>
		<category><![CDATA[cacti]]></category>
		<category><![CDATA[monitor]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://realqi.cn/?p=366</guid>
		<description><![CDATA[展示一个自己写的,cacti监控mysql的效果图]]></description>
			<content:encoded><![CDATA[<p> <a href="http://farm3.static.flickr.com/2551/3949723510_5bdea637bd_b.jpg">http://farm3.static.flickr.com/2551/3949723510_5bdea637bd_b.jpg</a></p>
<p><strong><img class="alignnone size-full wp-image-369" title="mysql" src="http://realqi.cn/wp-content/uploads/2009/09/mysql.jpg" alt="mysql" width="651" height="2094" /></strong><br />
<h3>相关文章</h3>
<ul class="related_post">
<li>2009年10月15日 -- <a href="http://www.realqi.cn/2009/10/linux%e6%80%a7%e8%83%bd%e5%86%85%e5%ad%98%e7%9b%b8%e5%85%b3%e6%8c%87%e6%a0%87/" title="linux性能相关指标[监控基础知识一]">linux性能相关指标[监控基础知识一] (0)</a></li>
<li>2009年10月14日 -- <a href="http://www.realqi.cn/2009/10/mysql-%e7%8b%ac%e7%89%b9%e7%9a%84%e7%94%a8%e6%88%b7%e6%9c%ba%e5%88%b6/" title="MySQL 独特的用户机制">MySQL 独特的用户机制 (0)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.realqi.cn/2009/09/show-a-cacti-monitor-mysql-graphp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Install usvn on centos</title>
		<link>http://www.realqi.cn/2009/09/install-usvn-on-centos/</link>
		<comments>http://www.realqi.cn/2009/09/install-usvn-on-centos/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 16:08:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技术实践]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[usvn]]></category>

		<guid isPermaLink="false">http://realqi.cn/?p=318</guid>
		<description><![CDATA[    Userfriendly SVN (USVN) 是一个基于 Web 的 Subversion 资源库的配置工具，通过 USVN 可以创建新的项目，管理授权用户列表等功能。

本节主要讲如何配置usvn，并详细列出和svn的整合步骤，并不深入学习usvn的使用。

]]></description>
			<content:encoded><![CDATA[<h2> 一.了解认识 </h2>
<p>    Userfriendly SVN (USVN) 是一个基于 Web 的 Subversion 资源库的配置工具，通过 USVN 可以创建新的项目，管理授权用户列表等功能。</p>
<p>     User-Friendly USVN is a web interface written in PHP used to configure Subversion repositories.It's goal is to ease the creation of new projects without having to use the command line interface, therefor, maybe without privileged access to the server. USVN will then generate the list of users allowed to access your source code. This enable the delegation of rights to administrate Subversion repositories.</p>
<p>项目主页: <a href="http://www.usvn.info/">http://www.usvn.info/</a></p>
<p> </p>
<p>本节主要讲如何配置usvn，并不深入学习usvn的使用。</p>
<p><strong> </strong> </p>
<p><strong>在安装和使用usvn之前，你需要</strong></p>
<p>          1.对svn有一定的了解, <a href="http://www.subversion.org.cn/svnbook/1.4/svnbook.pdf">svn book</a> (pdf 版)</p>
<p>          2.需要apache2 及成功开启apache2的mod_dav_svn mod_rewrite</p>
<p>          3.一个装好的subversion,且apache2能成功加载mod_svn mod_authz_svn</p>
<h2>二.准备工作</h2>
<p>    <strong>1.install lamp</strong>   (centos4.7+apache2.2.10+mysql5.1.30+php5.2.6)</p>
<p>   参考: <a href="http://realqi.cn/2009/09/%e5%ae%89%e8%a3%85lamp%e7%8e%af%e5%a2%83%e6%a0%87%e5%87%86%e7%89%88/">LAMP安装</a></p>
<p>         <span style="color: #ff0000;">注意：</span>安装并正确加载mod_svn模块apache需要另加mod_dav,mod_dav_fs 两个模块. 参考如下</p>
<blockquote><p>"./configure" "--prefix=/usr/local/apache2" "--enable-static-support" "--enable-static-htpasswd" "--enable-static-htdigest" "--enable-static-rotatelogs" "--enable-static-logresolve" "--enable-static-ab" "--enable-static-checkgid" "--enable-so" "--enable-authz-host" "--enable-mime" "--enable-dir" "--enable-log-config" "--disable-authn-file" "--disable-authn-default" "--disable-authz-groupfile" "--disable-authz-user" "--disable-authz-default" "--disable-auth-basic" "--disable-include" "--disable-filter" "--disable-charset-lite" "--disable-env" "--enable-autoindex" "--disable-asis" "--disable-cgid" "--enable-cgi" "--enable-negotiation=shared" "--enable-actions=shared" "--enable-alias" "--enable-rewrite" "--enable-deflate" <span style="color: #ff0000;"> --enable-dav --enable-dav-fs </span></p></blockquote>
<p>        否则:启动apache时会报错误</p>
<p>  </p>
<p><strong>  2.install svn 和svn和整合</strong></p>
<p>           详细方法参考：<a href="http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/">http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/</a></p>
<p>  本例中的安装简要如下： </p>
<pre>      <span style="color: #c0c0c0;"># download the necessary files
</span>          wget <a href="http://subversion.tigris.org/downloads/subversion-1.6.5.tar.bz2">http://subversion.tigris.org/downloads/subversion-1.6.5.tar.bz2</a>
          wget <a href="http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz">http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz</a>
     
      <span style="color: #c0c0c0;"># untar the downloaded file</span>
         tar zxvf  sqlite-amalgamation-3.6.13.tar.gz
         tar jxvf subversion-1.6.5.tar.bz2
    
      <span style="color: #c0c0c0;"># create a "sqlite-amalgamation" Directory in subversion-1.6.5</span>
      <span style="color: #c0c0c0;"># copy the ../sqlite-3.6.13/sqlite3.c  nto subversion-1.6.5/sqlite-amalgamation</span>
         mkdir -p sqlite-amalgamation
         cp ../sqlite-3.6.13/sqlite3.c   ./sqlite-amalgamation
 
   <span style="color: #c0c0c0;">   # Compile and install</span>
         ./configure  --prefix=/usr/local/svn
                      --with-apxs=/usr/local/apache2/bin/apxs
          make &amp;&amp;make install

      <span style="color: #c0c0c0;"># export svn path variables in you Environment</span> 
         export PATH=$PATH:/usr/local/svn/bin/</pre>
<pre><span style="color: #888888;">     ### 一些对svn的测试##########
        mkdir /usr/local/svn/repos
        svnadmin create --fs-type fsfs /usr/local/svn/repos/
        svn list --verbose </span><a href="file:///usr/local/svn/repos/"><span style="color: #888888;">file:///usr/local/svn/repos/
</span></a><span style="color: #888888;">        svn import /etc/sysconfig/grub  </span><a href="file:///usr/local/svn/repos/"><span style="color: #888888;">file:///usr/local/svn/repos/</span></a><span style="color: #888888;"> --message "init"
     ###########################</span></pre>
<h2>三.安装usvn</h2>
<p>  <strong> 1.下载文件并解压到一个目录，</strong>如本例中/usr/local/apache2/htdocs/usvn-1.0</p>
<pre>     cd /usr/local/apache2/htdocs
     wget <a href="http://usvn.tigris.org/files/documents/5823/46665/usvn-1.0.0.zip">http://usvn.tigris.org/files/documents/5823/46665/usvn-1.0.0.zip</a>
     unzip usvn-1.0.0.zip
       ______________________________________
          cd  usvn-1.0
          [root@study usvn-1.0]# pwd
     <span style="color: #ff0000;">    /usr/local/apache2/htdocs/usvn-1.0</span>
      ______________________________________</pre>
<p><strong>   2.添加apache的alias用于web访问，</strong>   </p>
<pre>cat &lt;&lt; END &gt;&gt;/usr/local/apache2/conf/httpd.conf
         Alias /usvn "/usr/local/apache2/htdocs/usvn-1.0/public"
         &lt;Directory "/usr/local/apache2/htdocs/usvn-1.0/public"&gt;
         Options Indexes Includes FollowSymLinks MultiViews ExecCGI
         AllowOverride all
         Order allow,deny
         Allow from all
     &lt;/Directory&gt;
END</pre>
<p><strong>  3.重启apache2</strong></p>
<p>  <strong>4.http://server/usvn 进入安装system check页面.根据提示来做就可以.</strong></p>
<p><img class="alignnone" src="http://farm4.static.flickr.com/3426/3949518162_36178e1afc.jpg" alt="" width="365" height="500" /></p>
<p>有两个注意:</p>
<p> <strong>1. 权限修改完后要修改回来. 可以参考如下</strong><br />
        <span style="color: #ff0000;"> 安装前</span></p>
<pre>         cd usvn-1.0
        chmod a+w ./*   </pre>
<p> <span style="color: #ff0000;">        安装完后</span></p>
<pre>         cd ../usvn-1.0
        chmod a-w ./*</pre>
<p><strong>2.如果提示找不到svn 可以进行如下操作.</strong><br />
                  <img src="http://farm4.static.flickr.com/3529/3949539260_37eb11842a_m.jpg" alt="" width="214" height="240" /></p>
<pre>        cd /usr/local/bin  
        ln -s /usr/local/svn/bin/* ./</pre>
<pre> 3.更详细,更深的安装请参考: <a href="https://trac.usvn.info/wiki/Documentation/Install">https://trac.usvn.info/wiki/Documentation/Install</a></pre>
<h3>相关文章</h3>
<ul class="related_post">
<li>2009年08月27日 -- <a href="http://www.realqi.cn/2009/08/subversion%e5%ae%9e%e8%b7%b5%e6%a1%88%e4%be%8b/" title="Subversion实践案例">Subversion实践案例 (0)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.realqi.cn/2009/09/install-usvn-on-centos/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>分享一个cacti监控CPU 的模版.</title>
		<link>http://www.realqi.cn/2009/09/%e5%88%86%e4%ba%ab%e4%b8%80%e4%b8%aacacti%e7%9b%91%e6%8e%a7cpu-%e7%9a%84%e6%a8%a1%e7%89%88/</link>
		<comments>http://www.realqi.cn/2009/09/%e5%88%86%e4%ba%ab%e4%b8%80%e4%b8%aacacti%e7%9b%91%e6%8e%a7cpu-%e7%9a%84%e6%a8%a1%e7%89%88/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 07:22:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技术实践]]></category>
		<category><![CDATA[系统管理]]></category>
		<category><![CDATA[运维监控]]></category>
		<category><![CDATA[cacti]]></category>
		<category><![CDATA[cacti template]]></category>

		<guid isPermaLink="false">http://realqi.cn/?p=289</guid>
		<description><![CDATA[增加了对iowait 的监控
增加了对硬中断(interrrupt)和软中断(softipt)的监控
此模版是在原ucd/net - CPU Usage基础之上做得更改
已在cacti0.87 {a.b.c d.e}上通过测试 ]]></description>
			<content:encoded><![CDATA[<p><a href="http://realqi.cn/wp-content/uploads/2009/09/cacti_graph_template_ucdnet_-_full_cpu_usage.xml">这个模版</a>的改进之处</p>
<ol>增加了对iowait 、硬中断(interrrupt)、软中断(softipt)的监控<br />
此模版是在原<strong>ucd/net - CPU Usage</strong>基础之上做得更改<br />
已在cacti0.87 {a.b.c d.e}上通过测试</ol>
<p><strong>请看下图</strong></p>
<p>cacti本身带的一个<strong>ucd/net - CPU Usage</strong>  模版,如下</p>
<p>              <img class="alignnone" src="http://farm3.static.flickr.com/2561/3944114080_e72f173d58.jpg" alt="" width="500" height="229" /></p>
<p>本人新建的模版<strong>ucd/net - Full CPU Usage</strong></p>
<p>             <img class="alignnone" src="http://farm3.static.flickr.com/2456/3943336341_83cbbae4f1.jpg" alt="" width="500" height="286" /></p>
<p><strong>如何使用本模版:</strong><br />
     1.下载模版 <a href="http://realqi.cn/wp-content/uploads/2009/09/cacti_graph_template_ucdnet_-_full_cpu_usage.xml">cacti_graph_template_ucdnet_-_full_cpu_usage</a><br />
     2.导入模版到cacti<br />
<h3>相关文章</h3>
<ul class="related_post">
<li>2009年10月15日 -- <a href="http://www.realqi.cn/2009/10/linux%e6%80%a7%e8%83%bd%e5%86%85%e5%ad%98%e7%9b%b8%e5%85%b3%e6%8c%87%e6%a0%87/" title="linux性能相关指标[监控基础知识一]">linux性能相关指标[监控基础知识一] (0)</a></li>
<li>2009年09月24日 -- <a href="http://www.realqi.cn/2009/09/show-a-cacti-monitor-mysql-graphp/" title="show a cacti-monitor-mysql graph">show a cacti-monitor-mysql graph (1)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.realqi.cn/2009/09/%e5%88%86%e4%ba%ab%e4%b8%80%e4%b8%aacacti%e7%9b%91%e6%8e%a7cpu-%e7%9a%84%e6%a8%a1%e7%89%88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[if test]表达试备忘</title>
		<link>http://www.realqi.cn/2009/09/if%e6%b5%8b%e8%af%95%e8%a1%a8%e8%be%be%e8%af%95%e5%a4%87%e5%bf%98/</link>
		<comments>http://www.realqi.cn/2009/09/if%e6%b5%8b%e8%af%95%e8%a1%a8%e8%be%be%e8%af%95%e5%a4%87%e5%bf%98/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 02:22:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技术实践]]></category>
		<category><![CDATA[if test]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://realqi.cn/?p=283</guid>
		<description><![CDATA[　　-eq：等于则为真

　　-ne：不等于则为真

　　-gt：大于则为真

　　-ge：大于等于则为真

　　-lt：小于则为真

　　-le：小于等于则为真
]]></description>
			<content:encoded><![CDATA[<div>
<p><strong>(1)数值测试：</strong></p>
<p>　　-eq：等于则为真</p>
<p>　　-ne：不等于则为真</p>
<p>　　-gt：大于则为真</p>
<p>　　-ge：大于等于则为真</p>
<p>　　-lt：小于则为真</p>
<p>　　-le：小于等于则为真</p>
<p><strong>(2)字符串测试：</strong></p>
<p>　　=：等于则为真</p>
<p>　　!=：不相等则为真</p>
<p>　　-z字符串：字符串长度伪则为真</p>
<p>　　-n字符串：字符串长度不伪则为真</p>
<p><strong>(3)文件测试：</strong></p>
<p>　　-e文件名：如果文件存在则为真</p>
<p>　　-r文件名：如果文件存在且可读则为真</p>
<p>　　-w文件名：如果文件存在且可写则为真</p>
<p>　　-x文件名：如果文件存在且可执行则为真</p>
<p>　　-s文件名：如果文件存在且至少有一个字符则为真</p>
<p>　　-d文件名：如果文件存在且为目录则为真</p>
<p>　　-f文件名：如果文件存在且为普通文件则为真</p>
<p>　　-c文件名：如果文件存在且为字符型特殊文件则为真</p>
<p>　　-b文件名：如果文件存在且为块特殊文件则为真</p>
<p>　　另外，Linux还提供了与(“！”)、或(“-o)、非(“-a”)三个逻辑操作符用于将测试条件连接起来，其优先级为：“！”最高，“-a”次之，“-o”最低。</p>
<p>　　同时，bash也能完成简单的算术运算，格式如下：</p>
<p>　　$[expression]</p>
<p>　　例如：var1=2</p>
<p>　　var2=$[var1*10+1]</p>
<p>　　则：var2的值为21</p></div>
<h3>相关文章</h3>
<ul class="related_post">
<li>2009年08月26日 -- <a href="http://www.realqi.cn/2009/08/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f/" title="正则表达式">正则表达式 (0)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.realqi.cn/2009/09/if%e6%b5%8b%e8%af%95%e8%a1%a8%e8%be%be%e8%af%95%e5%a4%87%e5%bf%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

