<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-8848186256580337710</id><updated>2007-07-20T16:03:39.270+08:00</updated><title type='text'>Pretender的Blog</title><link rel='alternate' type='text/html' href='http://blog.viker.org/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default?start-index=26&amp;max-results=25'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.viker.org/rss.xml'/><author><name>Pretender</name></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>59</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-1129034874054092216</id><published>2007-07-20T16:03:00.001+08:00</published><updated>2007-07-20T16:03:39.306+08:00</updated><title type='text'>PROMISE FastTrak SX4300</title><content type='html'>&lt;p&gt;&lt;strong&gt;Specifications&lt;/strong&gt; &lt;p&gt;•&amp;nbsp;Four&amp;nbsp;SATA ports at 3.0Gb/s (300MB/sec)&lt;br&gt;•&amp;nbsp;Storage capacity up to 8.0 terabytes (with eight 500GB drives x2 controllers/system)&lt;br&gt;•&amp;nbsp;Supports Native Command Queuing&lt;br&gt;•&amp;nbsp;64-bit, 133MHz PCI-X host bus interface&lt;br&gt;•&amp;nbsp;Promise 41721/81731 RAID Processor with XOR engine for RAID parity calculations and memory controller for local cache memory&lt;br&gt;•&amp;nbsp;On-board ECC DDR cache memory: 32MB for SX4300, 64MB for SX8300&lt;br&gt;•&amp;nbsp;FRAM for RAID5 transaction log to avoid data corruption in the event application hangs&lt;br&gt;•&amp;nbsp;Dual controller support within a system&lt;br&gt;•&amp;nbsp;Supports SAF-TE enclosure management&lt;br&gt;•&amp;nbsp;Low-profile form factor ideal for 1U/2U server&lt;br&gt;•&amp;nbsp;Combine with the SuperSwap 4100 for an advanced internal storage system&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/07/promise-fasttrak-sx4300.html' title='PROMISE FastTrak SX4300'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=1129034874054092216' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/1129034874054092216'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/1129034874054092216'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-6123357857459062104</id><published>2007-07-20T12:22:00.001+08:00</published><updated>2007-07-20T12:22:57.329+08:00</updated><title type='text'>linux当前的内核仍然不支持假硬件RAID5</title><content type='html'>&lt;p&gt;如下是在ubuntu的官方文档中找到的部分解释。估计RHEL5.1就会支持了，毕竟现在dmraid已经支持NVraid的level5了，这听起来真是有点好笑。&lt;/p&gt; &lt;p&gt;The kernel device mapper (which dmraid depends on) does not yet support RAID-5. There are some early development patches available, so they might get merged into Linus's kernel in time for Edgy, but I'd say it's not all that likely.&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/07/linuxraid5.html' title='linux当前的内核仍然不支持假硬件RAID5'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=6123357857459062104' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/6123357857459062104'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/6123357857459062104'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-3392669297996734842</id><published>2007-07-19T11:04:00.001+08:00</published><updated>2007-07-19T11:04:05.986+08:00</updated><title type='text'>NVIDIA RAID control 手册</title><content type='html'>&lt;p&gt;&lt;a title="http://download.asrock.com/manual/raid/ALiveNF7G-HDready/SChinese.pdf" href="http://download.asrock.com/manual/raid/ALiveNF7G-HDready/SChinese.pdf"&gt;http://download.asrock.com/manual/raid/ALiveNF7G-HDready/SChinese.pdf&lt;/a&gt;&amp;nbsp;&amp;nbsp; 中文版&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.nvidia.com/object/io_28159.html" href="http://www.nvidia.com/object/io_28159.html"&gt;http://www.nvidia.com/object/io_28159.html&lt;/a&gt;&amp;nbsp;Nvidia的官方手册&lt;/p&gt; &lt;p&gt;支持NVidia NForce的raid控制软件&lt;a title="http://people.redhat.com/~heinzm/sw/dmraid/" href="http://people.redhat.com/~heinzm/sw/dmraid/"&gt;http://people.redhat.com/~heinzm/sw/dmraid/&lt;/a&gt;&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/07/nvidia-raid-control.html' title='NVIDIA RAID control 手册'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=3392669297996734842' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/3392669297996734842'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/3392669297996734842'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-6531229428904670426</id><published>2007-07-18T17:34:00.001+08:00</published><updated>2007-07-18T17:34:07.309+08:00</updated><title type='text'>一个减轻DDOS的工具</title><content type='html'>&lt;p&gt;&lt;strong&gt;What is (D)DoS Deflate?&lt;/strong&gt;&lt;br&gt;(D)DoS Deflate is a shell script developed by Zaf, originally for use on MediaLayer servers to assist in combating denial of service attacks. However, it was seen to be very effective for our purpose, and therefore was released as a contribution to the web hosting community. (D)DoS Deflate is now used by not only many web hosts, but by many people who run their own servers looking for additional security in dealing with such attacks. If you have any questions regarding the script, please feel free to contact &lt;strong&gt;gvirdi@medialayer.com&lt;/strong&gt; or &lt;strong&gt;zaf@vsnl.com&lt;/strong&gt;. &lt;p&gt;For updates on the development of (D)DoS Deflate, please see: &lt;a href="http://blog.medialayer.com/category/projects/ddos-deflate/"&gt;http://blog.medialayer.com/category/projects/ddos-deflate/&lt;/a&gt; &lt;p&gt;To view the old, legacy version of the (D)DoS Deflate website, please see &lt;a href="http://deflate.medialayer.com/old"&gt;http://deflate.medialayer.com/old&lt;/a&gt;.&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/07/ddos.html' title='一个减轻DDOS的工具'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=6531229428904670426' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/6531229428904670426'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/6531229428904670426'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-6703654776064978380</id><published>2007-07-09T14:39:00.001+08:00</published><updated>2007-07-09T14:39:29.930+08:00</updated><title type='text'>用DNSPod和Squid打造自己的CDN(第8章)</title><content type='html'>&lt;p&gt;第 8 章 测试并运行Squid &lt;p&gt;1.前期准备&lt;br&gt;想要测试Squid是否正常，必须要先把www.naizhao.com这个域名解析到2.2.2.2这个IP上。跟上一章一样，如果你是网通用户就不需要做任何操作，DNSPod会给你返回2.2.2.2这个IP。如果你是电信用户，或者解析出来的IP不是2.2.2.2，那么就要修改系统的hosts 表，对应记录添加进去。跟上一章不一样，上一章修改的是Squid服务器的hosts表，你现在需要修改的是你用来测试Squid的系统的hosts表。&lt;br&gt;除了修改hosts表外，我们还需要一个名为curl的小工具。一般的Linux/Unix系统都附带了这个工具，如果使用Windows，那么需要到下面的地址下载一个，并且放到D:\（或者其他地方，自己喜欢）。&lt;br&gt;http://curl.haxx.se/latest.cgi?curl=win32-nossl （32位系统）&lt;br&gt;http://curl.haxx.se/latest.cgi?curl=win64-nossl （64位系统）&lt;br&gt;下载回来解压后，我们只需要一个curl.exe。&lt;br&gt;2.运行Squid&lt;br&gt;我们继续用上一章的方法，用调试方式启动squid&lt;br&gt;cd /usr/local/squid/sbin&lt;br&gt;./squid -Nd 1&lt;br&gt;然后打开浏览器，输入http://www.naizhao.com，看输出的网页是否正确。&lt;br&gt;如果能显示出正常的页面，那么说明squid已经正常运行了。但我们还需要确认一下，所需要的页面是否已经被squid缓存了。&lt;br&gt;3.测试Squid&lt;br&gt;我们使用curl，输入下面的命令（Windows用户请使用命令行来运行curl）&lt;br&gt;curl -I http://www.naizhao.com/&lt;br&gt;HTTP/1.0 200 OK&lt;br&gt;Date: Sun, 08 Jul 2007 12:16:27 GMT&lt;br&gt;Server: NaiZhao Web Server/1.0.0&lt;br&gt;Last-Modified: Wed, 13 Dec 2006 06:11:14 GMT&lt;br&gt;ETag: “7665b-1983-4417e480″&lt;br&gt;Accept-Ranges: bytes&lt;br&gt;Content-Length: 6531&lt;br&gt;Vary: Accept-Encoding&lt;br&gt;Content-Type: text/css&lt;br&gt;Age: 29155&lt;br&gt;X-Cache: MISS from cnc.naizhao.com&lt;br&gt;Via: 1.0 cnc.naizhao.com:80 (squid/2.6.STABLE13)&lt;br&gt;Connection: close&lt;br&gt;我们留意输出的内容，下面一行内容表示并没有命中缓存。也就是并不是从缓存中读取所需文件。一般第一次访问一个文件的时候，出现MISS是正常的，因为本来文件就不存在于缓存中。&lt;br&gt;X-Cache: MISS from cnc.naizhao.com&lt;br&gt;然后，我们重新运行一次命令，继续看输出的内容&lt;br&gt;curl -I http://www.naizhao.com/&lt;br&gt;HTTP/1.0 200 OK&lt;br&gt;Date: Sun, 08 Jul 2007 12:16:27 GMT&lt;br&gt;Server: NaiZhao Web Server/1.0.0&lt;br&gt;Last-Modified: Wed, 13 Dec 2006 06:11:14 GMT&lt;br&gt;ETag: “7665b-1983-4417e480″&lt;br&gt;Accept-Ranges: bytes&lt;br&gt;Content-Length: 6531&lt;br&gt;Vary: Accept-Encoding&lt;br&gt;Content-Type: text/css&lt;br&gt;Age: 29155&lt;br&gt;X-Cache: HIT from cnc.naizhao.com&lt;br&gt;Via: 1.0 cnc.naizhao.com:80 (squid/2.6.STABLE13)&lt;br&gt;Connection: close&lt;br&gt;可以看到，这次的输出已经是HIT了。也就是表示，内容是从缓存中读取的。&lt;br&gt;如果第二次访问仍然是MISS，那么你就要检查下网页是否限制了缓存。可以从下面几个方面入手：&lt;br&gt;Last-Modified: Wed, 13 Dec 2006 06:11:14 GMT 检查这行是否每次访问都变化。如果一直变化，说明页面是动态的，并不合适squid缓存。squid在每次请求的时候都会检查这行，判断页面是否已经过期，并且对过期的页面重新获取。&lt;br&gt;Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 这行是负责控制缓存。no-store、no-cache、must-revalidate等都是要求squid禁止缓存内容，并且在每次请求的时候都去验证页面是否过期。&lt;br&gt;Expires: Thu, 19 Nov 1981 08:52:00 GMT 过期时间如果大于当前时间，也会被认为是页面已经过期，需要重新获取。这样的页面也不会被缓存。&lt;br&gt;Pragma: no-cache 这句也是禁止缓存。&lt;br&gt;大家可以按照上面的内容进行自查自纠，根据实际需求对网站进行修改即可。&lt;br&gt;确认没有问题后，我们就可以让Squid正式跑起来了。&lt;br&gt;4.正式运行Squid&lt;br&gt;ulimit -Hs 65536&lt;br&gt;ulimit -n 65536&lt;br&gt;./squid&lt;br&gt;直接使用上面的命令就可以让squid跑起来了。&lt;br&gt;跑起来后，输入&lt;a href="http://www.naizhao.com"&gt;http://www.naizhao.com&lt;/a&gt;看看访问是否正常。&lt;br&gt;5.让Squid跟随系统启动&lt;br&gt;CentOS让Squid跟随系统启动很简单，只需要编辑/etc/rc.local，在最后加上下面一行即可&lt;br&gt;ulimit -Hs 65536&lt;br&gt;ulimit -n 65536&lt;br&gt;/usr/local/squid/sbin/squidv&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/07/dnspodsquidcdn8.html' title='用DNSPod和Squid打造自己的CDN(第8章)'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=6703654776064978380' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/6703654776064978380'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/6703654776064978380'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-5025404696402004525</id><published>2007-07-09T14:38:00.001+08:00</published><updated>2007-07-09T14:38:39.121+08:00</updated><title type='text'>用DNSPod和Squid打造自己的CDN(第7章)</title><content type='html'>&lt;p&gt;第 7 章 配置Squid &lt;p&gt;1. 设置hosts表首先我们要明白一下squid在CDN中扮演的角色。squid在CDN中其实只是一个代理＋缓存。跟一般的代理服务器类似，squid 代替用户向真正有内容的服务器进行请求，并且缓存下来。所不同的是，squid是作为一个类似apache一样的web服务器存在，用户访问的时候并不感觉到是访问了一台代理服务器，而是一个真实的web服务器。一般情况下，我们把这种方式称之为“反向代理”。&lt;br&gt;所以，我们需要让squid知道内容要到哪里去取。因为我们已经把域名naizhao.com设置了智能DNS，而且这台squid服务器也是网通的，按照正常的dns解析，会把naizhao.com解析为2.2.2.2这个IP（也就是网通机器本身）。但这个IP上面并不存在任何所需要的内容，所有需要的内容其实是在1.1.1.1上（源服务器）。所以我们需要为naizhao.com固定一个IP，也就是1.1.1.1。&lt;br&gt;让系统得到这个IP的方法有两种，一种是设置hosts表，另外一种是系统里面搭建一个dns服务器。Windows下大家应该会经常去编辑到hosts 文件，linux下同样也存在这个文件，我们在前面的vim教程中已经提到过。搭建dns系统这个方法工程太过庞大，还是编辑hosts文件相对来说比较简单，所以我们就采用编辑hosts表的方法。&lt;br&gt;linux下面的hosts表位于/etc/hosts，格式跟Windows大致相同，打开后我们把下面一行加到末尾&lt;br&gt;1.1.1.1 naizhao.com www.naizhao.com cnc.naizhao.com&lt;br&gt;如果已经按照前面的教程，添加过1.1.1.1这条记录的，修改为上面的样子。&lt;br&gt;2.设置squidsquid的配置文件位于/usr/local/squid/etc/squid.conf，打开后会有英文的详细说明。暂时我们不需要去理解这个文件里面各个配置的含义，相信大家看到一大堆英文都会头大的。大家只需要知道如何把squid按照自己的需求跑起来，并且不出错就好。&lt;br&gt;我们先用rm命令把squid.conf删掉。不用怕删掉后找不回来，还有一个默认的squid.conf.default在呢。一般的linux程序，包括apache等，都会有一个.default的默认文件，方便大家恢复默认设置，或者作为一个修改的参考。&lt;br&gt;squid.conf删掉后，我们再用vi squid.conf，新建这个文件，然后把下面的内容帖进去，保存&lt;br&gt;http_port 80 vhost vport=80acl apache rep_header Server ^Apachebroken_vary_encoding allow apachecache_mem 1024 MBmaximum_object_size 4096 KBminimum_object_size 0 KBmaximum_object_size_in_memory 256 KBcache_dir ufs /var/spool/squid 20480 16 256cache_swap_low 80cache_swap_high 97strip_query_terms offrequest_body_max_size 5 MBmemory_pools onmemory_pools_limit 50 MBaccess_log nonecache_log /var/log/squid/cache.logcache_store_log nonepid_filename /var/run/squid.pidhosts_file /etc/hostsrefresh_pattern ^ftp:&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;1440 20%&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;10080refresh_pattern ^gopher:&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;1440 0%&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;1440refresh_pattern -i naizhao\.com&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; 240 100%&amp;nbsp; &amp;nbsp; 1440&amp;nbsp; &amp;nbsp; ignore-reloadrefresh_pattern -i www\.naizhao\.com&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;240 100%&amp;nbsp; &amp;nbsp; 1440&amp;nbsp; &amp;nbsp; ignore-reloadrefresh_pattern -i .gif 180 20% 10080 override-expire ignore-reload reload-into-imsrefresh_pattern -i .jpg 180 20% 10080 override-expire ignore-reload reload-into-imsrefresh_pattern .&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;120 50%&amp;nbsp; &amp;nbsp; 1440acl all src 0.0.0.0/0.0.0.0acl p-manager proto cache_objectacl s-localhost src 127.0.0.1/255.255.255.255acl d-localhost dst 127.0.0.0/8acl d-domains dstdomain .naizhao.comacl p-ssl&amp;nbsp;&amp;nbsp;port 443 563acl p-safe port 80 443 563acl m-conn method CONNECTacl m-purge method PURGEacl n-maxconn maxconn 15http_access allow p-manager s-localhosthttp_access allow m-purgehttp_access deny&amp;nbsp;&amp;nbsp;!p-safehttp_access deny&amp;nbsp;&amp;nbsp;m-conn !p-sslhttp_access deny&amp;nbsp;&amp;nbsp;n-maxconnhttp_access allow p-managerhttp_access allow d-domainshttp_access deny allhttp_reply_access allow allacl r-url urlpath_regex realtimecache deny r-urlicp_access allow allfollow_x_forwarded_for allow allacl_uses_indirect_client offrange_offset_limit -1dns_timeout 2 secondsforward_timeout 10 secondsconnect_timeout 10 secondspeer_connect_timeout 6 secondsread_timeout 10 secondsrequest_timeout 6 secondspersistent_request_timeout 16 secondscache_mgr silence.z@gmail.comcache_effective_user nobodycache_effective_group nobodyvisible_hostname cnc.naizhao.comlogfile_rotate 0always_direct allow allerror_directory /usr/local/squid/share/errors/Simplify_Chinesecoredump_dir /var/spool/squid&lt;br&gt;需要说明的几个参数：&lt;br&gt;cache_mem 1024 MB （squid使用的内存大小，注意必须要留下500M左右的内存给系统使用，建议系统内存2G，然后分配1G给squid）&lt;br&gt;cache_dir ufs /var/spool/squid 20480 16 256 （缓存的目录，放在/var/spool/squid下面，大小是20G，第一级目录是16个，第二级目录是256个。因为一个目录下面放置的文件和目录数量有限制，所以这里必须要设置多个目录，以适合squid存放大量文件的需要。目录数千万别设置太大，否则会引起系统死机）&lt;br&gt;memory_pools_limit 50 MB （内存池，用来存放缓存文件的链表，方便高速查找文件存放的对应位置，不需要太大。不懂就别管了）&lt;br&gt;cache_log /var/log/squid/cache.log（log文件的存放位置，必须要有读写权限，稍后说到）&lt;br&gt;refresh_pattern -i naizhao\.com 240 100% 1440 ignore-reload&lt;br&gt;refresh_pattern -i www\.naizhao\.com 240 100% 1440 ignore-reload&lt;br&gt;refresh_pattern -i .gif 180 20% 10080 override-expire ignore-reload reload-into-ims&lt;br&gt;refresh_pattern -i .jpg 180 20% 10080 override-expire ignore-reload reload-into-ims&lt;br&gt;（上面的几行指定了文件缓存的时间，可以指定某个域名，也可以指定某个文件类型。有更加多的域名或者文件类型就按照需要添加吧。-i是忽略大小写， naizhao.com和.gif是文件类型，240是最小缓存的时间，1440是最大缓存时间，都是分钟。这些先不用管，有需要的时候调整就好了。我们的口号是：先跑起来）&lt;br&gt;acl d-domains dstdomain .naizhao.com（允许访问的域名列表。如果要跑多个网站就添加多几个，用空格分开。naizhao.com前面有个英文的.，表示所有 *.naizhao.com都允许。如果没有这个点，那么就只允许naizhao.com，访问www.naizhao.com就会提示访问被拒绝。）&lt;br&gt;cache_mgr silence.z@gmail.com （管理员的邮件地址，改为自己的）&lt;br&gt;cache_effective_user nobody&lt;br&gt;cache_effective_group nobody&lt;br&gt;（用来跑squid的用户和用户组。为了避免使用root帐号造成的不安全因素，大部分linux程序都会先用root运行，然后马上把运行的用户从 root切换到其他用户，这样就算程序有漏洞被黑了，黑客也只能得到这个普通用户的权限，对系统的危害将大大降低。保持默认即可）&lt;br&gt;visible_hostname cnc.naizhao.com （服务器输出的机器名字，多台squid分布的时候这个很重要，通过设置多个不同的名字，很容易就可以找出哪台服务器有问题）&lt;br&gt;coredump_dir /var/spool/squid （squid挂掉后，临终遗言要放到哪里。不用管，一般人看不懂） &lt;p&gt;修改好配置文件后，我们还需要做一些最后的工作。&lt;br&gt;先建一个log目录，用来存放log文件。按照squid.conf的设置，我们输入下面的命令&lt;br&gt;mkdir /var/log/squid&lt;br&gt;chown nobody:nobody /var/log/squid&lt;br&gt;chown命令是设置所有者和组。刚才说了，squid将会使用用户nobody组nobody来运行。nobody:nobody冒号前面的是用户，后面的是用户组。&lt;br&gt;还有squid的缓存目录，同样需要设置权限为nobody:nobody&lt;br&gt;chown nobody:nobody /var/spool/squid&lt;br&gt;查看命令是否成功，可以使用ls -lh&lt;br&gt;ls -lh /var/spool/&lt;br&gt;……&lt;br&gt;drwxr-xr-x 3 nobody nobody 4.0K Jun 15 08:19 squid&lt;br&gt;剩下最后一步，初始化squid的缓存目录结构。（也就是刚才说的16个一级目录，256个二级目录。本身这些文件夹不存在，需要通过squid的命令建立）&lt;br&gt;squid的命令在/usr/local/squid/sbin下，我们进入这个目录，然后看看squid命令的帮助&lt;br&gt;./squid -h&lt;br&gt;Usage: squid [-hvzCDFNRYX] [-d level] [-s | -l facility] [-f config-file] [-u port] [-k signal]&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -d level&amp;nbsp;&amp;nbsp;Write debugging to stderr also.&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -f file&amp;nbsp; &amp;nbsp;Use given config-file instead of&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/local/squid/etc/squid.conf&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -h&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Print help message.&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -k reconfigure|rotate|shutdown|interrupt|kill|debug|check|parse&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Parse configuration file, then send signal to&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;running copy (except -k parse) and exit.&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -s | -l facility&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Enable logging to syslog.&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -u port&amp;nbsp; &amp;nbsp;Specify ICP port number (default: 3130), disable with 0.&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -v&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Print version.&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -z&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Create swap directories&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -C&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Do not catch fatal signals.&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -D&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Disable initial DNS tests.&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -F&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Don't serve any requests until store is rebuilt.&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -N&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;No daemon mode.&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -R&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Do not set REUSEADDR on port.&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -S&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Double-check swap during rebuild.&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -X&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Force full debugging.&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; -Y&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Only return UDP_HIT or UDP_MISS_NOFETCH during fast reload.我们可以看到-z命令就是建立缓存目录的，所以我们输入&lt;br&gt;./squid -z&lt;br&gt;2007/07/07 07:52:03| Creating Swap Directories&lt;br&gt;没有任何错误提示，说明目录已经建立成功了，我们可以用 ls /var/spool/squid看看效果。&lt;br&gt;最后，我们让squid跑起来&lt;br&gt;./squid -d 10&lt;br&gt;2007/07/07 07:53:50| Starting Squid Cache version 2.6.STABLE13 for i686-pc-linux-gnu...&lt;br&gt;2007/07/07 07:53:50| Process ID 3135&lt;br&gt;2007/07/07 07:53:50| With 1024 file descriptors available&lt;br&gt;2007/07/07 07:53:50| Using poll for the IO loop&lt;br&gt;2007/07/07 07:53:50| Performing DNS Tests...&lt;br&gt;2007/07/07 07:53:50| Successful DNS name lookup tests...&lt;br&gt;2007/07/07 07:53:50| DNS Socket created at 0.0.0.0, port 1026, FD 4&lt;br&gt;2007/07/07 07:53:50| Adding nameserver 211.147.6.3 from /etc/resolv.conf&lt;br&gt;2007/07/07 07:53:50| Adding nameserver 61.233.9.9 from /etc/resolv.conf&lt;br&gt;2007/07/07 07:53:50| Unlinkd pipe opened on FD 8&lt;br&gt;2007/07/07 07:53:50| Swap maxSize 20971520 KB, estimated 1613193 objects&lt;br&gt;2007/07/07 07:53:50| Target number of buckets: 80659&lt;br&gt;2007/07/07 07:53:50| Using 131072 Store buckets&lt;br&gt;2007/07/07 07:53:50| Max Mem&amp;nbsp;&amp;nbsp;size: 1048576 KB&lt;br&gt;2007/07/07 07:53:50| Max Swap size: 20971520 KB&lt;br&gt;2007/07/07 07:53:50| Store logging disabled&lt;br&gt;2007/07/07 07:53:50| Rebuilding storage in /var/spool/squid (DIRTY)&lt;br&gt;2007/07/07 07:53:50| Using Least Load store dir selection&lt;br&gt;2007/07/07 07:53:50| Set Current Directory to /var/spool/squid&lt;br&gt;2007/07/07 07:53:50| Loaded Icons.&lt;br&gt;2007/07/07 07:53:52| Accepting accelerated HTTP connections at 0.0.0.0, port 80, FD 7.&lt;br&gt;2007/07/07 07:53:52| Accepting ICP messages at 0.0.0.0, port 3130, FD 9.&lt;br&gt;2007/07/07 07:53:52| WCCP Disabled.&lt;br&gt;2007/07/07 07:53:52| Ready to serve requests.&lt;br&gt;2007/07/07 07:53:52| Done scanning /var/spool/squid (0 entries)&lt;br&gt;2007/07/07 07:53:52| Finished rebuilding storage from disk.&lt;br&gt;2007/07/07 07:53:52|&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;0 Entries scanned&lt;br&gt;2007/07/07 07:53:52|&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;0 Invalid entries.&lt;br&gt;2007/07/07 07:53:52|&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;0 With invalid flags.&lt;br&gt;2007/07/07 07:53:52|&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;0 Objects loaded.&lt;br&gt;2007/07/07 07:53:52|&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;0 Objects expired.&lt;br&gt;2007/07/07 07:53:52|&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;0 Objects cancelled.&lt;br&gt;2007/07/07 07:53:52|&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;0 Duplicate URLs purged.&lt;br&gt;2007/07/07 07:53:52|&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;0 Swapfile clashes avoided.&lt;br&gt;2007/07/07 07:53:52|&amp;nbsp; &amp;nbsp;Took 2.0 seconds (&amp;nbsp; &amp;nbsp;0.0 objects/sec).&lt;br&gt;2007/07/07 07:53:52| Beginning Validation Procedure&lt;br&gt;2007/07/07 07:53:52|&amp;nbsp; &amp;nbsp;Completed Validation Procedure&lt;br&gt;2007/07/07 07:53:52|&amp;nbsp; &amp;nbsp;Validated 0 Entries&lt;br&gt;2007/07/07 07:53:52|&amp;nbsp; &amp;nbsp;store_swap_size = 0k&lt;br&gt;2007/07/07 07:53:53| storeLateRelease: released 0 objects打开浏览器，输入&lt;a href="http://2.2.2.2"&gt;http://2.2.2.2&lt;/a&gt;，会看到Access Denied的错误提示，说明squid已经正常跑起来了。&lt;br&gt;因为指定了-d参数，所以现在squid会把所有的调试信息都输出终端。 按下键盘的ctrl+c，然后输入killall squid杀死squid，可以终止squid的进程。 </content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/07/dnspodsquidcdn7.html' title='用DNSPod和Squid打造自己的CDN(第7章)'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=5025404696402004525' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/5025404696402004525'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/5025404696402004525'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-1683706293299290733</id><published>2007-07-09T14:37:00.001+08:00</published><updated>2007-07-09T14:37:31.312+08:00</updated><title type='text'>用DNSPod和Squid打造自己的CDN(第6章)</title><content type='html'>&lt;p&gt;第 6 章 编译并安装Squid &lt;p&gt;首先使用tar把源代码压缩包解压&lt;br&gt;tar zxvf squid-2.6.STABLE13.tar.gz&lt;br&gt;解压后，我们得到一个名为 squid-2.6.STABLE13 的目录。进入目录&lt;br&gt;cd squid-2.6.STABLE13&lt;br&gt;在configure前，我们必须要先设置cflags，这里我们假设CPU是intel core duo的，cpu family 6,model 14。通过 http://gentoo-wiki.com/Safe_Cflags#Intel_Core_Solo.2FDuo 可以找到对应的优化参数&lt;br&gt;CHOST="i686-pc-linux-gnu"CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"CXXFLAGS="${CFLAGS}"&lt;br&gt;然后通过export命令设置&lt;br&gt;export CHOST="i686-pc-linux-gnu"export CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"export CXXFLAGS="${CFLAGS}"&lt;br&gt;设置完成后，我们可以通过env命令来查看是否设置成功。&lt;br&gt;然后，我们开始configure源代码。使用下面的命令，把squid安装到/usr/local/squid目录中去。&lt;br&gt;./configure --prefix=/usr/local/squid --enable-follow-x-forwarded-for --enable-storeio=aufs,ufs --with-maxfd=65536 --with-pthreads --enable-dlmalloc --enable-poll --enable-stacktraces --enable-removal-policies=heap,lru --enable-delay-pools&lt;br&gt;对应参数的作用可以使用./configure –help得到。&lt;br&gt;这里大家要注意下，configure前面还有一个./，这个代表当前目录。意思是当前目录下面的configure文件。linux如果要执行当前目录的文件，必须要加上./。如果要执行当前目录下的下级目录里面的文件，可以不用加，比如bin/run。当然，./bin/run也是一样的效果。&lt;br&gt;接着我们会看到屏幕向下翻滚，出现一大堆checking for …的字样。一直等到下面的文字出现，并且停止，那么configure就算完成了。&lt;br&gt;config.status: creating tools/Makefileconfig.status: creating include/autoconf.hconfig.status: executing depfiles commands[root@cnc squid-2.6.STABLE13]&lt;i&gt;#&lt;/i&gt;&lt;br&gt;然后，我们输入make编译源代码，又是一行行的英文翻滚。是否有点感觉做黑客的味道？我们要做的还是继续等待下面的文字出现&lt;br&gt;make[2]: Leaving directory `/root/squid-2.6.STABLE13/tools'make[1]: Leaving directory `/root/squid-2.6.STABLE13/tools'make[1]: Entering directory `/root/squid-2.6.STABLE13'make[1]: Nothing to be done for `all-am'.make[1]: Leaving directory `/root/squid-2.6.STABLE13'[root@cnc squid-2.6.STABLE13]#&lt;br&gt;这样源代码就算编译完成了。然后我们运行make install安装，等待下面的提示&lt;br&gt;make[2]: Leaving directory `/root/squid-2.6.STABLE13'make[1]: Leaving directory `/root/squid-2.6.STABLE13'[root@cnc squid-2.6.STABLE13]&lt;i&gt;#&lt;/i&gt;&lt;br&gt;这里要注意：如果任何一个步骤出现带有error之类的警告，那么就是编译出错，需要检查到底是什么步骤出现问题并且改正。如果严格按照本文来编译，一般是不会出现错误的。另外，cflags参数使用不当同样会造成编译错误。&lt;br&gt;如果出现编译错误，必须要先make clean，然后重新make。（如果错误是在configure这步就不需要了）&lt;br&gt;到这里，squid就算是编译安装完毕了。我们可以到/usr/local/squid目录看看，里面已经躺着一大堆文件了。&lt;br&gt;[root@cnc squid-2.6.STABLE13]&lt;i&gt;# cd /usr/local/squid&lt;/i&gt;[root@cnc squid]&lt;i&gt;# ls -lh&lt;/i&gt;total 72Kdrwxr-xr-x 2 root root 4.0K Jul&amp;nbsp;&amp;nbsp;7 02:27 bindrwxr-xr-x 2 root root 4.0K Jul&amp;nbsp;&amp;nbsp;7 02:27 etcdrwxr-xr-x 2 root root 4.0K Jul&amp;nbsp;&amp;nbsp;7 02:27 libexecdrwx------ 2 root root&amp;nbsp;&amp;nbsp;16K Jun 15 08:09 lost+founddrwxr-xr-x 3 root root 4.0K Jul&amp;nbsp;&amp;nbsp;7 02:27 mandrwxr-xr-x 2 root root 4.0K Jul&amp;nbsp;&amp;nbsp;7 02:25 sbindrwxr-xr-x 4 root root 4.0K Jul&amp;nbsp;&amp;nbsp;7 02:25 sharedrwxr-xr-x 3 root root 4.0K Jul&amp;nbsp;&amp;nbsp;7 02:25 var[root@cnc squid]&lt;i&gt;#&lt;/i&gt;&lt;br&gt;接着我们要做的是配置squid。&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/07/dnspodsquidcdn6.html' title='用DNSPod和Squid打造自己的CDN(第6章)'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=1683706293299290733' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/1683706293299290733'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/1683706293299290733'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-4410828401141860019</id><published>2007-07-09T14:36:00.001+08:00</published><updated>2007-07-09T14:36:24.358+08:00</updated><title type='text'>用DNSPod和Squid打造自己的CDN(第5章)</title><content type='html'>&lt;p&gt;第 5 章 安装Squid的前期准备 &lt;p&gt;从本章开始，大家将会学到如何在Linux下面安装、编译程序，还会学到程序编译的优化方法，最后会通过源代码编译的方式把Squid安装上。 &lt;p&gt;1.Linux下面程序安装的基本知识 &lt;p&gt;A.程序安装包的分类 &lt;p&gt;平时大家在Windows下面安装程序，一般都是直接运行安装程序，然后安装程序会把编译好的二进制文件拷贝到系统里面，最终完成安装过程。&lt;br&gt;Linux下面，安装程序的自由度比Windows要大。因为Linux下面大部分东西都是开源的，所以程序的提供方式一般是二进制包或者源代码包。&lt;br&gt;二进制包，同样会有不同的打包和管理方式（类似于zip、rar，但更加先进）。最常见的两种软件包为rpm（redhat、suse等系统采用的包）和 deb（debian、ubuntu）。机器上面安装的软件包多了，自然需要一个软件来进行管理、更新。所以就有了yum（rpm）、apt（deb）这样的软件包管理、升级软件。&lt;br&gt;源代码包，这样的包比较简单，一般都是直接把源代码打包成一个压缩文件，后缀一般是tar.gz或者tar.bz2&lt;br&gt;通过包管理软件安装软件比较简单，设置好软件的安装源后，可以使用下面的命令安装软件：&lt;br&gt;yum install php (yum)&lt;br&gt;apt-get install php5(apt)&lt;br&gt;如果不知道需要安装的软件包确切名字，可以使用下面的方法搜索：&lt;br&gt;yum search php(yum)&lt;br&gt;apt-cache search php(apt)&lt;br&gt;本文章主要探讨源代码包的安装。 &lt;p&gt;B.通过源代码包安装程序&lt;br&gt;一般情况下，程序从源代码到能正常使用，需要经过三个步骤：1.根据系统环境对源代码进行配置（configure）；2.编译程序（make）；3.安装程序（make install）。&lt;br&gt;a.源代码配置&lt;br&gt;通过运行configure脚本，可以对所需要编译的程序的一些基本环境、所使用到的命令、库等文件进行自动查找，并且生成用于编译文件所需要的 Makefile文件。因为Linux有太多的发行版本了，每个版本的环境都不一样，所以需要用到这个脚本。通过configure脚本还可以对程序的模块进行自定义，可以禁用或者激活某个功能。&lt;br&gt;b.编译程序&lt;br&gt;根据configure脚本生成的Makefile文件，对源代码进行编译、链接，生成二进制文件。但这个时候的二进制文件一般来说还不能使用。&lt;br&gt;c.安装程序&lt;br&gt;通过make install命令，把编译好的二进制文件安装到相应的路径，这个时候程序才真正可以使用。 &lt;p&gt;C.程序安装到哪里？ &lt;p&gt;一般编译安装的程序都会安装到/usr/local下面。比如php就会被安装到/usr/local/bin/php，php.ini会被安装到 /usr/local/lib/php.ini，等等。如果需要指定安装目录，在configure的时候指定–prefix参数，会把所有文件都安装到 prefix目录中。比如./configure –prefix=/usr/local/php。那么会把所有文件都安装到这个目录，最后看起来会是/usr/local/php/bin/php和 /usr/local/php/lib/php.ini &lt;p&gt;D.如何得到configure的参数？ &lt;p&gt;常用的configure参数有–prefix，可以通过./configure –help得到更多的参数。一般带有–enable-、–with-开头的参数都是启用某个功能，–disable-、–without-开头的都是禁用某个功能。 &lt;p&gt;E.如何删除安装好的程序？&lt;br&gt;Linux删除程序跟Windows不太一样。Windows建议使用卸载功能卸载程序，Linux下通过包管理软件安装的程序也可以直接用命令删除，例如：&lt;br&gt;yum remove php(yum)&lt;br&gt;apt-get remove php5(apt) &lt;p&gt;如果通过源代码包安装的程序，一般会带有make uninstall，通过这个命令可以删除所安装的文件。如果不带有make uninstall，那么可以直接把程序安装目录删除。&lt;br&gt;注意：如果是依赖库（比如php如果要使用到mysql的功能，必须要先安装mysql，然后在配置php的时候指定mysql库的路径，那么php就是依赖了mysql），删除被依赖的程序，那么用到依赖库的程序都将会无法使用（比如删除mysql后，php将无法正常使用mysql部分的功能）。 &lt;p&gt;F.还有个make clean是干什么用的？ &lt;p&gt;make clean用来打扫战场。把所有编译时留下的临时文件、编译后的二进制文件等都清理掉。一般建议在make install后make clean，方便下次重新编译和节省空间。 &lt;p&gt;2.源代码编译时的优化&lt;br&gt;用Windows的朋友都知道，平时最头痛的事情就是程序占用CPU太高，而且消耗内存特别大。这是因为Windows的程序都是一些“通用”程序，并没有针对特定的平台和特定的CPU进行优化。在Linux下，通过源代码来编译二进制文件，这个问题将得到有效的改善。我们可以通过添加优化参数，让程序针对某个CPU型号和某个系统进行最大优化，减少文件大小、CPU使用率、内存使用率。&lt;br&gt;但是，通过指定优化参数来编译的程序，将不再具有跨系统跨平台的能力。就算两台机器系统版本一样，只要CPU不一样，程序都无法运行。程序只能在所编译的机器上运行。&lt;br&gt;一般情况下，优化参数都是通过export命令设定CFLAGS和CXXFLAGS，然后configure的时候会自动读入，make的时候会自动使用所选的优化参数。&lt;br&gt;例如，普通Pentium 4的CPU（显示的型号为Intel(R) Pentium(R) 4 CPU XXXXMHz，cpu family: 15，model: 0/1/2）就可以输入下面的命令&lt;br&gt;export CHOST="i686-pc-linux-gnu"&lt;br&gt;export CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"&lt;br&gt;export CXXFLAGS="${CFLAGS}"CPU型号等信息可以通过输入下面的命令得到&lt;br&gt;cat /proc/cpuinfo将会输出类似下面的信息&lt;br&gt;processor&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; : 0&lt;br&gt;vendor_id&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; : AuthenticAMD&lt;br&gt;cpu family&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;: 15&lt;br&gt;model&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;: 47&lt;br&gt;model name&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;: AMD Athlon(tm) 64 Processor 3200+&lt;br&gt;stepping&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;: 2&lt;br&gt;cpu MHz&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;: 2000.336&lt;br&gt;cache size&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;: 512 KB&lt;br&gt;fdiv_bug&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;: no&lt;br&gt;hlt_bug&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;: no&lt;br&gt;f00f_bug&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;: no&lt;br&gt;coma_bug&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;: no&lt;br&gt;fpu&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; : yes&lt;br&gt;fpu_exception&amp;nbsp; &amp;nbsp;: yes&lt;br&gt;cpuid level&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;: 1&lt;br&gt;wp&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;: yes&lt;br&gt;flags&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow up pni lahf_lm ts fid vid ttp tm stc&lt;br&gt;bogomips&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;: 4002.57上面的信息显示了这是一颗AMD Athlon 64 3200+的CPU。&lt;br&gt;CPU优化参数可以从下面地址获得（有些cpu family和model没有，可以用相同型号的代替）&lt;br&gt;&lt;a href="http://gentoo-wiki.com/Safe_Cflags"&gt;http://gentoo-wiki.com/Safe_Cflags&lt;/a&gt;&lt;br&gt;3.编译Squid的前期准备&lt;br&gt;我们需要先了解一个叫做“文件描述符”的东西。我们知道，人能同时干的事情是有限的。文件描述符就是一个限制最大上限的东西。文件描述符用来限制一个程序能同时打开的文件数目，默认是1024。也就是说，如果不修改文件描述符，那么一个程序只能同时打开1024个文件。1024这个数字，一般程序已经够用了，但Squid不行。Squid会同时打开成千上万个文件，以保证最高的效率和响应速度。&lt;br&gt;想象一下下面两种情况：a.用户每次访问squid，squid会按照需要打开文件，然后读取文件内容再返回给用户。b.squid预先打开访问频率高的文件，用户访问squid，squid直接把内容返回给用户。相对来说，后面的方法可以对用户的请求进行更加快的反应。&lt;br&gt;要更改文件描述符的大小，必须要修改两个文件。&lt;br&gt;/usr/include/bits/typesizes.h&lt;br&gt;/usr/include/linux/posix_types.h&lt;br&gt;用vi打开上面的文件（如果忘记如何使用，请参考前面章节），查找&lt;br&gt;#define __FD_SETSIZE 1024&lt;br&gt;把1024改为65536，然后保存。&lt;br&gt;为什么是65536，不是更加大？因为这是Linux能接受的最大数值。&lt;br&gt;刚才编辑的这两个文件是C/C++程序里面的头文件，编译squid的时候会被自动引用。除了这两个文件以外，我们还需要对当前环境进行设置。&lt;br&gt;环境，也就是你用ssh登录到系统时的一些设定。每个登录进程都可以进行单独的设置，在没有把设置写入环境配置文件(.profile，.bash_rc)的情况下，关闭登录进程后环境设置会丢失。&lt;br&gt;举个例子，你使用pietty开了两个窗口，使用同一个帐号密码，同时登录到同一台服务器上面，然后在其中一个登录进程中使用export命令，那么只会在这个登录进程中生效，对另外一个登录进程不起作用。&lt;br&gt;明白后，我们说一下ulimit命令。ulimit用来设置当前环境的一些资源限制。刚才所说的，这个命令是对环境进行设置，所以退出当前登录进程后命令将会失效。&lt;br&gt;我们输入下面的命令&lt;br&gt;ulimit -Hs 65536&lt;br&gt;ulimit -n 65536H参数是硬性限制，s是堆栈上限，n是文件描述符上限。&lt;br&gt;最后，我们使用wget把squid的源代码下载回来。&lt;br&gt;wget &lt;a href="http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE13.tar.gzwget"&gt;http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE13.tar.gz&lt;/a&gt;&lt;br&gt;wget是unix下一个支持断点续传的下载工具。会有一些比较实用的功能，比如把别人整个网站都下载回来（像平时用的小偷吧？）。 </content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/07/dnspodsquidcdn5.html' title='用DNSPod和Squid打造自己的CDN(第5章)'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=4410828401141860019' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/4410828401141860019'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/4410828401141860019'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-6951250586550503682</id><published>2007-07-09T14:35:00.001+08:00</published><updated>2007-07-09T14:35:21.793+08:00</updated><title type='text'>用DNSPod和Squid打造自己的CDN(第4章)</title><content type='html'>&lt;p&gt;第 4 章 安装CentOS Linux &lt;p&gt;1.基本安装&lt;br&gt;把光盘塞进光驱，设置BIOS从光驱启动（别告诉我你不会），然后会看到启动界面，上面有一些提示，可以输入一些命令进行高级安装或者进入系统修复模式。不用管，直接按回车。&lt;br&gt;稍等一下，会出现一个界面要求你做光盘的完整性检查。一般来说现在刻出来的盘不会有坏的，除非是下载回来的ISO文件有问题。所以这里我们跳过。&lt;br&gt;跳过的方法是：按键盘的TAB键进行控件的选择，被选择上的控件会高亮，我们选择Skip（建议大家随时打开翻译工具或者网站对不懂的英文进行翻译），然后按空格键进行确认。&lt;br&gt;然后再等一下，我们就可以看到安装的图形界面了。&lt;br&gt;按下一步（Next），选择安装语言。因为Linux对中文支持并不好，黑漆漆的字符界面如果显示中文的话会有乱码（虽然远程连接上去的时候可以看到，但服务器一旦出现故障，需要在机房操作的时候，你就会发现默认英文是多么重要），所以我们就选择默认的英文（English），然后按下一步。&lt;br&gt;接着就是选择键盘样式。相信大家的键盘都是英文而不是日文的（玩过笔记本的都见过水货IBM吧？上面一撇一划的就是日文键盘），那么就留着默认U.S. English吧。什么？你刚好拿水货IBM来装？那还得用英文，否则打出来的字乱七八糟别怪我。&lt;br&gt;下一步，轮到选择安装方式了。因为我们是全新安装，所以就选择第一个Install CentOS，下一步。&lt;br&gt;接着是询问要如何分区了。坚决不要用一个分区安装所有文件，或者让系统自动划分。我们坚持所有分区都自己来划分。这样可以有效避免在单个分区出现问题的情况下会造成所有资料无法恢复的情况。（难理解？其实就跟Windows的C盘出问题一样。C盘出现严重问题无法读取，但可以使用工具盘启动系统，访问D、E等盘，把资料恢复出来）&lt;br&gt;我们在下拉菜单里面选择Create custom layout（创建自定义布局），下一步。&lt;br&gt;然后会看到当前机器上面硬盘的情况，Linux所有的设备都在目录/dev下面，普通的IDE硬盘的标识是hd （scsi、sata是sd），第一个硬盘是a，第二个是b，如此类推。所以这里如果你用的是普通IDE硬盘，然后接在第一根IDE线主盘的位置上，那么硬盘的标识就是/dev/hda。如果是sata硬盘，那么一般就是/dev/sda。如果光驱是IDE的，接在另外一根IDE线主设备口上，那么一般是 /dev/hdc。&lt;br&gt;另外大家要对Linux的分区有认识。大家会觉得奇怪，Windows有C盘，D盘，为什么Linux没有？Linux的分区又是用什么一种方式存在的呢？&lt;br&gt;其实在Linux里面，每个分区都会作为一个目录对待。所有目录都从/（根）开始，树形发展。具体情况大家可以去参考相关资料，这里不多做阐述。这么做对于我们有一个最大的好处：某个目录分区空间用完了，我们只需要加装一个大硬盘，然后把这个硬盘整个分成一个区，在系统里面加载，把这个目录里面的文件全部拷贝进来，作为这个目录，这样就不怕空间不够了。&lt;br&gt;接着说说分区的文件系统。用Windows的朋友一定都知道fat32,ntfs吧？Linux下面最常用的文件系统是ext3和reiserfs，另外有比较旧的ext2，现在已经很少人用了，还有SWAP，交换分区。几种文件系统的优劣就不做评比了，文内一律使用ext3，因为CentOS对ext3 支持比reiserfs要好点。&lt;br&gt;Linux的基本系统包括了下面几个目录&lt;br&gt;/ 根分区，如果你想把整个硬盘分一个区，那么就分这个区&lt;br&gt;/bin,/sbin 都是一些用到的命令&lt;br&gt;/boot 放置启动文件&lt;br&gt;/usr 包括一些命令、库、帮助等一些不常改变的文件&lt;br&gt;/usr/local 同上，一般新的程序都安装在这里，就跟Windows的Program files差不多&lt;br&gt;/var 都是一些经常变化的文件，比如log&lt;br&gt;/home 看名字就知道，用户住的地方&lt;br&gt;/etc 里面都是设置文件，跟注册表有点类似作用&lt;br&gt;/lib 共享库，so文件，作用类似windows的dll文件。打开里面会看到一些数字，其实是版本号&lt;br&gt;/root 老大住的地方，后面会提到&lt;br&gt;下面是几个比较特殊的目录&lt;br&gt;SWAP 看清楚了，前面没有/的。Swap是交换分区，也就是Windows里面的虚拟内存，但不一样的是基本不会用到。分区的时候只需要分一个，不需要设置挂载点，文件系统选择好就行。&lt;br&gt;/dev 存放设备系统 ，属于虚拟文件系统&lt;br&gt;/proc 存放有进程信息，同样是虚拟文件系统。可以通过此文件系统实时修改内核或者进程，也就是交互。比如可以实时查看内存的使用、CPU信息&lt;br&gt;后面两个看不懂没关系，我们先来分区。 &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;上面的图片可以看到，硬盘原来存在分区，我们把/dev/hda选上，然后点上面菜单的Delete整个删除。&lt;br&gt;接着我们点一下菜单的New，开始分区，先分一个/，文件系统选择ext3，分区大小是1G，也就是1024M。&lt;br&gt;Mount Point就是挂载点，输入/&lt;br&gt;File System Type文件系统，下拉中选择ext3&lt;br&gt;Size分区大小，按照MB计算的，输入1024&lt;br&gt;完成后按OK&lt;br&gt;跟着分SWAP，点New，直接在File System Type选择swap，Size输入2048，按OK&lt;br&gt;剩余的分区大家按照下面来分&lt;br&gt;/ 1024&lt;br&gt;swap 2048&lt;br&gt;/usr 5120&lt;br&gt;/usr/local 5120&lt;br&gt;/var 5120&lt;br&gt;/tmp 2048&lt;br&gt;/usr/local/squid 1024&lt;br&gt;/var/spool/squid 所有剩余的空间&lt;br&gt;所有剩余的空间要怎么选？很简单，选上Fill to maximum allowable size即可。&lt;br&gt;分区分完以后，看起来像下面的样子&lt;br&gt;OK，所有分区都完了以后，我们继续下一步。&lt;br&gt;接着会出现一个安装GRUB的界面。GRUB是用来启动系统的，包括双系统的启动都要用上，装好后在启动的时候你会看到有一个菜单给你选择。这里不用更改什么，直接下一步就好。&lt;br&gt;如果你的网卡能顺利被系统认出来的话，这步就应该是让你配置网卡参数了。&lt;br&gt;点击Edit，出现网卡配置页面。先把Use dynamic IP configuration(DHCP)去掉，DHCP是自动从网关分配IP，因为我们的IP是固定的，所以不需要。&lt;br&gt;然后IPv6我们也不用，Enable IPv6 support也去掉。&lt;br&gt;Activate on boot表示系统启动后自动启动网卡，要选上。&lt;br&gt;因为这台服务器是网通使用，IP是2.2.2.2，所以在Address里面就输入2.2.2.2，Prefix(Netmask)是子网掩码，可以输入 255.255.255.0或者24。24是一种名为CIDR的寻址方式，具体可以去Google一下，这里不深入解释。&lt;br&gt;配置好的网卡如下图&lt;br&gt;保存后，我们还需要设置主机名，这里就设置为cnc.naizhao.com吧。&lt;br&gt;然后还有一些杂项(Miscellaneous Settings)，Gateway是网关，Primary DNS是主DNS，Secondary DNS是次要DNS，根据具体需求设置上去。&lt;br&gt;跟着设置时区。点一下地图的右上角，然后在上海的位置点一下，左下角的下拉菜单会变为Asia/Shanghai，下一步。&lt;br&gt;跟着就是设置root的密码。Linux跟windows不一样，windows可以有很多个管理员，Linux只能有一个root，一般用户要行使管理员的身份，必须要用su这个命令临时改变身份为管理员。&lt;br&gt;输入两次密码后确认，下一步。&lt;br&gt;接着就是选择安装类型了。把Desktop什么的全部去掉，在Server前面勾上。下面会有一行提示，问你要在什么时候进行所安装的包的详细配置（You can further customize the software selection now, or after install via the software management application），选上Customize now。下一步。&lt;br&gt;接着是安装包选择界面。左边会有Desktop Environments/Applications/Development等。按照下面的列表进行选择：&lt;br&gt;* Desktop Environments&lt;br&gt;- 全部去掉&lt;br&gt;* Applications&lt;br&gt;- Editors 选上&lt;br&gt;- 其余全部去掉&lt;br&gt;* Development&lt;br&gt;- Development Libraries 选上&lt;br&gt;- Development Tools 选上&lt;br&gt;- 其余全部去掉&lt;br&gt;* Servers&lt;br&gt;- 全部去掉&lt;br&gt;* Base System&lt;br&gt;- Dialup Networking Support 去掉&lt;br&gt;* 其他均为默认&lt;br&gt;下一步，开始安装。等待安装完成后重启即可。 &lt;p&gt;2.初次启动初次启动的时候，会有一个设置代理，就跟安装时要求检测CD完整性的界面差不多，用上下键选择Firewall configuration，按一下TAB键，空格进入。&lt;br&gt;然后在Security Level选择Disabled，也就是关闭防火墙，TAB键选择OK，空格退出。之后系统会继续启动，直到出现登录界面。&lt;br&gt;CentOS release 5 (Final)&lt;br&gt;Kernel 2.6.18-8.el5 on an i686&lt;br&gt;cnc login:&lt;br&gt;3.远程连接Linux的远程连接方式是ssh。ssh是一种经过加密的连接方式，所有数据交换都会被加密，就算服务器被arp攻击也不怕密码会被监听。&lt;br&gt;Windows下的ssh客户端，我们一般使用putty。因为putty太好用了，所以有台湾的网友进行了修改并且本地化，发布出来的程序名字叫做pietty。&lt;br&gt;Pietty的官方网站是：http://www.csie.ntu.edu.tw/~piaip/pietty/&lt;br&gt;下载地址是：http://www.csie.ntu.edu.tw/~piaip/pietty/stable/pietty0327.exe&lt;br&gt;下载回来运行，然后输入服务器的IP，回车就可以连接了。如果是第一次连接服务器，程序还会提示你是否接受并保存服务器的证书，选择是即可。然后按照提示输入用户名root和密码。&lt;br&gt;4.Linux的基本命令首先要注意：Linux是一个大小写区分的系统。不管你做什么事情都要注意大小写。cpu和Cpu是不一样的。&lt;br&gt;说几个比较常用的&lt;br&gt;ls 列出文件和目录。默认是当前目录，如果要列出/bin下面的文件，输入ls /bin&lt;br&gt;cd 进入某个目录。比如cd /bin可以进入/bin目录，cd ..进入上一级目录，cd abc进入当前目录下面的abc目录，cd -回到上一次进入的目录。&lt;br&gt;cp 拷贝文件或者目录。cp a b拷贝a文件为b文件&lt;br&gt;mkdir 建立目录。比如mkdir naizhao。如果要建立/a/b/c/d/e这个目录，但/a/b/c/d这几个目录都不存在，使用mkdir -p /a/b/c/d/e，那么会把这几个目录一并创建。&lt;br&gt;rm 删除文件或者目录。rm a删除a文件。要删除一个目录必须要用rm -rf a，表示删除a目录&lt;br&gt;mv 移动文件。不过大部分情况下用来给文件改名。因为linux下面没有专门改名的命令。mv a b把a文件改名为b。mv a ../把a文件移动到上一级目录&lt;br&gt;more 比较有用的命令。比如用了ls命令，但出来的文字太多，已经超过一个屏幕了，我要看开头部分的内容要怎么看？可以使用ls|more，这样就可以随意的翻屏了。|是管道，负责把|前面命令的结果交给|后面的命令。管道可以使用多个，比如ls -lh|grep naizhao|more，也就是说把ls -lh的结果交给grep处理，然后grep把处理出来的结果交给more。&lt;br&gt;grep 也是比较常用的命令。负责把所需要的内容抽取出来。比如我ls -lh /lib，内容太多了，并不都是我所需要的，我只需要包含dns这几个字的内容，那么我就使用ls -lh /lib|grep dns。如果我需要不包括dns这三个字的内容呢？使用ls -lh /lib|grep -v dns&lt;br&gt;cat 不是猫。cat命令负责把一个文件里面的内容完整输出来。内容多的时候配合more使用。比如cat /proc/cpuinfo，会把cpuinfo里面的内容显示出来。&lt;br&gt;wc 噢，不是厕所，别误会。这是用来算数的。比如我要算一个文件里面有多少行，那么使用cat /proc/cpuinfo|wc -l，输出的数字就是cpuinfo文件的行数，-l参数是按照行（line）来计算。这个命令最常用的时候是什么呢？看网络连接，比如要看看当前系统是不是被别人SYN了，那么输入netstat -an|grep SYN|wc -l&lt;br&gt;netstat 查看网络状态，一般用来看系统当前有几个连接。比如看80端口有多少个连接，输入netstat -an|grep :80|wc -l&lt;br&gt;这些命令建议大家多点玩，不要怕。玩坏了系统大不了重装，反正上面现在也没资料。&lt;br&gt;5.VIM的基本使用VI是所有Unix系统必带的工具。干什么用的呢？ Windows的记事本，知道吧？这个东西比记事本还要高级几百倍，整个Linux基本就是在VI里面写的。VIM则是VI的改进版本，某些系统里面只带了VI，没有VIM。但这两个东西命令上是没有分别的，都是命令行里面敲入vi就可以启动。&lt;br&gt;我们要学习以下几个方面：打开文件、编辑文件、保存文件&lt;br&gt;我们以/etc/hosts文件为例，在里面添加一条1.1.1.1 www.naizhao.com的记录。&lt;br&gt;A.打开文件打开文件很简单，vi 文件名，比如vi /etc/hosts，然后会看到类似下面的内容&lt;br&gt;# Do not remove the following line, or various programs&lt;br&gt;# that require network functionality will fail.&lt;br&gt;127.0.0.1 cnc.naizhao.com cnc localhost.localdomain localhost&lt;br&gt;::1 localhost6.localdomain6 localhost6&lt;br&gt;B.编辑文件编辑一共三个方面：插入（添加）、修改、删除&lt;br&gt;vi里面，可以通过键盘的方向键移动光标。我们移动到&lt;br&gt;::1 localhost6.localdomain6 localhost6&lt;br&gt;这行，然后按下键盘的o（字母）键，会发现光标跑下面去了，自动新起一行。&lt;br&gt;然后我们输入1.1.1.1，按两次键盘的tab键，再输入www.naizhao.com，然内容看起来像下面这样&lt;br&gt;1.1.1.1 www.naizhao.com&lt;br&gt;然后，我们按两次键盘左上角的esc键。在按第一次的时候，你会发现光标向前跳了一下，马上再按第二次，如果你打开了音箱，你会听到当的一声响。&lt;br&gt;好了，添加新一行就是那么简单。&lt;br&gt;然后，我们再为1.1.1.1添加一个记录，tel.naizhao.com，怎么做呢？&lt;br&gt;移动光标到www.naizhao.com的m上，按一下键盘的i（insert的意思）键，这样编辑模式就会变为插入。嗯，敲个空格看看。啊，怎么把我的com给分开成co m了？我要的不是这个效果啊！&lt;br&gt;不急不急，按照前面的方法，按两次esc键，退出编辑模式，然后按一次键盘的u（undo）键。哦，还好，东西都回来了。原来i是在当前文字的前面插入啊。那再来一次，光标移动到m上面，按一下i，然后用键盘把光标向右移动一下，来到m的背后，敲一个空格，然后输入 tel.naizhao.com，然后按两次esc键。嗯，看起来有模有样了。 &lt;p&gt;喂，我怕文件被我破坏了，想要先保存一下，怎么办？&lt;br&gt;保存文件啊，也很简单啊。先输入一个冒号（:）。什么？不知道怎么输？按住shift键，敲一下回车键左边的分号；，这不，冒号出来了。然后冒号后面跟着一个w（write），看起来就像这个样子:w，回车。你会看到一行提示&lt;br&gt;“/etc/hosts” 5L, 248C written&lt;br&gt;表示文件保存完成。&lt;br&gt;然后，呃，还有修改。如果我发现某个字打错了，比如com的o，我打成0了，我要怎么改？&lt;br&gt;先把光标移动到0上面，然后按键盘的r（replace），然后按一下o，哈哈，改过来了，赶紧:w保存先。&lt;br&gt;嗯。。。如果我不需要tel.naizhao.com，我要怎么删除啊？&lt;br&gt;删除的英文是什么来着？delete吧？鼠标移动到tel的t上面，按一下键盘d，然后按一下右方向键，嘿嘿，t被删掉了。但是，我要删除整个url，一个一个删过去，是否麻烦了点？嗯，有点道理，跟我一起数数吧。1,2,3,4,5….tl.naizhao.com一共有14个字符，那我就先按一下键盘的d，然后用数字键输入14（带有特殊符号那行，不是小键盘）（呃，怎么输入后看不到的？），然后按一下右方向键，嗯，世界清净了。真完美。&lt;br&gt;另外，还有一些比较方便的快捷键，比如输入dd，删除当前行，输入gg，会回到文件的开头位置，输入G（也就是shift +g）会到文件的末尾，ctrl+d到下一页，ctrl+b到上一页，shift+a在文件末尾插入，shift+d删除当前光标位置一直到行末的文字，这些都等大家慢慢琢磨。&lt;br&gt;C.保存文件保存文件刚才说了一个:w，如果我想直接保存退出，要怎样呢？可以使用:wq（write&amp;amp;quit），或者直接:x。&lt;br&gt;但是，文件刚才被我改到一塌糊涂，我不想保存了，我要直接退出，怎么退？&lt;br&gt;如果文件没有被改变过，可以直接输入:q退出。但如果文件被改动过，但又没有保存，:q会报错，那么可以在q前面加上一个!，强行退出，就像这个样子:!q&lt;br&gt;如果文件只读，你要强行写入，当然可以在w的前面加上!了。&lt;br&gt;6.设置安装更新国外的东西在国内有个很麻烦的地方：镜像都在国外。所以，要升级系统，必须要把镜像改为国内的私人镜像。于是乎，刚才所学到的VIM知识又用上了。&lt;br&gt;CentOS的升级工具为yum，镜像配置文件在/etc/yum.repos.d/CentOS-Base.repo，那么，我们用vi打开吧。&lt;br&gt;vi /etc/yum.repos.d/CentOS-Base.repo&lt;br&gt;呃，里面好多网址啊，难道要我一个一个都改过去？岂不是累死我？&lt;br&gt;不怕不怕，记事本都有查找替换呢，vi当然也少不了这个功能了。&lt;br&gt;yum默认是从mirrorlist=这行获取镜像列表的，既然我们指定了镜像地址，那么就需要把这行注释了。注释的方法是在前面加上#，也就是#mirrorlist=这样。&lt;br&gt;赶紧开始操作，vi里面查找替换的格式大概是这样:%s/a/b/g，也就是查找a，替换成b，g则是全文件查找。把公式套用过来，就是这个样子&lt;br&gt;:%s/mirrorlist=/#mirrorlist=/g&lt;br&gt;嗯嗯，输入回车看看，都替换掉了吧？哈哈。&lt;br&gt;接着，指定url地址要把#baseurl=前面的#去掉，根据刚才的例子，得到&lt;br&gt;:%s/#baseurl=/baseurl=/g&lt;br&gt;又OK了一个，剩下最后一个了。&lt;br&gt;国内私人搭建的centos镜像，比较有名的是be10.com，网址是http://mirror.be10.com/&lt;br&gt;打开上面的网址，可以看到孤零零的一个centos目录，对比一下配置文件里面的url&lt;br&gt;http://mirror.be10.com/centos/&lt;br&gt;http://mirror.centos.org/centos/&lt;br&gt;找不同游戏开始了，看来看去，两个url的差别就是be10.com和centos.org了，也就是说我只要把centos.org替换成be10.com就可以了。&lt;br&gt;:%s/centos.org/be10.com/g&lt;br&gt;大功告成，赶紧保存退出，然后输入&lt;br&gt;yum update&lt;br&gt;更新吧。&lt;br&gt;更新的过程中会有互动节目，有几个地方会让你输入y来确认是否要安装更新包，直接输入y回车确认就好。&lt;br&gt;忙活了老半天，大家都累的够呛了，让机器慢慢更新，我们喝杯咖啡泡个功夫茶去。接下来的事情还多着呢。 </content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/07/dnspodsquidcdn4.html' title='用DNSPod和Squid打造自己的CDN(第4章)'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=6951250586550503682' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/6951250586550503682'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/6951250586550503682'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-3033462619764190709</id><published>2007-07-09T14:30:00.001+08:00</published><updated>2007-07-09T14:30:34.168+08:00</updated><title type='text'>用DNSPod和Squid打造自己的CDN(第3章)</title><content type='html'>&lt;p&gt;第&lt;b&gt; 3 &lt;/b&gt;章设置域名的&lt;b&gt;DNS&lt;/b&gt; &lt;p&gt;重头戏开始前，我们先来热身。&lt;br&gt;智能DNS可以说是CDN的基础。相信平时大家做网站都会有下面的情况：首页上放两个链接，电信用户请访问主力站点A，网通用户请访问镜像站点B。然后做两个域名，www.naizhao.com指向A，cnc.naizhao.com指向B。用户看了半天觉得头晕，随便点一个进去，发现访问速度真可以的，估计整个网页打开，中国都已经步入共产主义社会了。&lt;br&gt;有了智能DNS后，上面的问题迎刃而解。用户只需要输入www.naizhao.com，系统就会自动判断用户是电信线路还是网通线路上网，然后自动返回电信或者网通的服务器IP。整个过程对于用户来说是不可见的，用户只会觉得刷的一下网页就打开了，那叫一个爽。&lt;br&gt;废话不多说，let’s do it！&lt;br&gt;&lt;b&gt;&lt;i&gt;1.&lt;/i&gt;&lt;/b&gt;在&lt;b&gt;&lt;i&gt;DNSPod&lt;/i&gt;&lt;/b&gt;上面添加域名&lt;br&gt;打开www.dnspod.com，在右上角的导航菜单选择注册，根据提示输入信息完成注册。注册成功后返回首页登录。&lt;br&gt;登录后，看到有个添加新域名的框，输入naizhao（别输www。另外本文的例子就是naizhao.com），然后右边选择.com，完成后点击增加。&lt;br&gt;&lt;img height="24" alt="" src="http://wuhongsheng.com/naizhao_s_time/build_your_own_cdn_with_dnspod_and_squid/images/c3p1.png" width="465" border="0"&gt;&lt;br&gt;添加后，系统会自动跳到新添加的域名管理页面。可以看到里面什么东西都没有。不急，我们慢慢来。&lt;br&gt;在页面下方可以看到几个输入框和下拉列表，用于新增解析记录。我们先试着添加一条电信的记录看看。按照下面的格式输入：&lt;br&gt;主机记录：www&lt;br&gt;记录类型：A&lt;br&gt;线路类型：电信&lt;br&gt;记录值：1.1.1.1&lt;br&gt;优先级：（留空）&lt;br&gt;TTL：3600（默认）&lt;br&gt;完成后，点击增加。&lt;br&gt;&lt;img height="47" alt="" src="http://wuhongsheng.com/naizhao_s_time/build_your_own_cdn_with_dnspod_and_squid/images/c3p2.png" width="454" border="0"&gt;&lt;br&gt;有几个地方给大家说明一下：&lt;br&gt;主机记录：也就是域名前面的东西，比如www，那么记录生效后就是www.naizhao.com。如果要实现naizhao.com（前面没有www），那么添加的时候留空就好，系统会自动给加上一个@，代表域名本身。&lt;br&gt;记录类型：有A、CNAME、MX三种。最常用的就是A，记录值是一个IP地址。另外是MX，也就是邮件记录，做邮件服务器的时候用到，这里不深入讨论了。&lt;br&gt;线路类型：比较重要。如果选择了电信，那么代表这条记录*只能*给电信用户解析出来，网通用户是解析不出这条记录的。如果你一个域名只添加了一个电信的记录，那么网通用户将会无法访问。同样道理，网通的线路类型也一样。另外有一点要说明：非网通、非教育网的用户将会被解析到电信记录去。也就是说，国外用户、铁通、联通等用户都会被解析到电信服务器。&lt;br&gt;还有一个通用，通用的意思是，不管你是电信还是网通还是其他用户，都可以解析出这条记录。在存在电信和网通两条记录的情况下，不建议添加通用记录。&lt;br&gt;记录值：根据记录类型，分别输入一个IP或者一个域名（不是URL转发的域名）&lt;br&gt;优先级：用在MX记录中，数字越小，优先级越高。作用是：从优先级最大的服务器开始，如果邮件服务器出问题，邮件无法寄达，将会转发到优先级小一级的服务器上去。如果你没有很多台邮件服务器，这个就不用管了。&lt;br&gt;TTL：同样是比较重要的东西。数字是按照秒来算，3600也就是一个小时。意思是，用户请求一个域名的解析，在得到IP 后，3600秒之内不会向DNS服务器重新请求解析，3600秒之内访问此域名，都将直接从自己机器的缓存里面获取IP。超出3600秒后，将会重新向 DNS服务器请求获取IP。&lt;br&gt;OK，我们继续，添加一条网通的记录，让添加完成后的记录像下面的样子&lt;br&gt;&lt;img height="84" alt="" src="http://wuhongsheng.com/naizhao_s_time/build_your_own_cdn_with_dnspod_and_squid/images/c3p3.png" width="450" border="0"&gt;&lt;br&gt;到此，我们就添加成功了。等个半分钟，我们来测试一下是否已经生效。&lt;br&gt;&lt;b&gt;A.Windows&lt;/b&gt;用户&lt;br&gt;我们使用nslookup命令，先在开始菜单-运行-cmd，回车打开命令行。&lt;br&gt;然后输入nslookup www.naizhao.com ns1.dnspod.net，稍等一下，看看服务器返回的结果：&lt;br&gt;Name: www.naizhao.com&lt;br&gt;Address: 1.1.1.1&lt;br&gt;如果你是网通用户，那么会得到下面的结果&lt;br&gt;Name: www.naizhao.com&lt;br&gt;Address: 2.2.2.2&lt;br&gt;只要你按照说明的步骤来说，基本不会有问题出现。如果无法正常返回结果，请稍等两分钟。如果等了两分钟还不行，那么就检查下你添加的记录是否正确了。&lt;br&gt;&lt;b&gt;B.Linux/Unix/Mac&lt;/b&gt;用户&lt;br&gt;直接使用系统自带的dig命令。dig命令比nslookup更为强大。&lt;br&gt;输入dig @ns1.dnspod.net www.naizhao.com，会返回一大堆结果。我们只需要找到下面的文字就证明一切正常&lt;br&gt;;; ANSWER SECTION:&lt;br&gt;www.naizhao.com. 3600 IN A 1.1.1.1&lt;br&gt;网通用户会看到&lt;br&gt;;; ANSWER SECTION:&lt;br&gt;www.naizhao.com. 3600 IN A 2.2.2.2&lt;br&gt;至此，DNSPod方面的工作已经完成，下一步就是把域名的DNS服务器改为DNSPod的。&lt;br&gt;&lt;b&gt;&lt;i&gt;2.&lt;/i&gt;&lt;/b&gt;把域名的&lt;b&gt;&lt;i&gt;DNS&lt;/i&gt;&lt;/b&gt;转到&lt;b&gt;&lt;i&gt;DNSPod&lt;/i&gt;&lt;/b&gt;&lt;br&gt;域名迁移以前，我先提示一下风险：&lt;br&gt;根据域名的DNS协议规定，所有域名的NS记录（也就是指向DNS服务器的记录）的TTL时间必须为172800秒，也就是48小时。根据我们前面所学到有关TTL的知识，也就是说，一个域名如果被请求过一次以后，只要缓存不被清空，那么NS记录就会存在48小时。48小时内，任何有关此域名的记录的请求都发送到这个DNS服务器。换个角度来理解，如果A用户访问过你的网站，然后你在半个小时后修改你域名的DNS服务器，那么在剩余的47个半小时内，A用户对你这个域名的所有请求都会发送到你*旧的*DNS服务器，而不是新的服务器。B用户在你修改DNS成功后访问你的网站，那么B用户将会得到*新的*DNS服务器地址，所有请求都发往*新的*DNS服务器，而不是*旧的*。明白这点后，那么你就会知道，为什么修改域名的 DNS后需要48个小时来生效。你也会明白，为什么记录会一下变成新的，一下变成旧的：这是因为，你地方的DNS服务器一般是2-3台，但他们每台之间的记录并不同步。&lt;br&gt;另外，一些很小气的域名注册商，在你修改DNS服务器后，会停止对你域名的解析。那么你将会冒着用户无法访问你站点的风险。对这样的用户，我一般建议在迁移域名的前一天，在你域名注册商的DNS管理后台，先把你所有域名记录的TTL，从默认的3600改为36000（10 个小时）以上，并且选择在晚上10点以后修改DNS，因为DNS记录会在用户关机、关闭ADSL MODEM后失效（当然，很有可能还会从地方电信的DNS得到旧记录）。设置10个小时以上是让用户在就算旧DNS服务器停止服务后，也能从本地的缓存里面得到记录。&lt;br&gt;具体如何修改DNS，我就不具体说了，每个域名注册商都不一样。有几点要注意的：&lt;br&gt;1.填写DNS的时候，记得要把旧的全部去掉，不要以为新旧留着会稳定，这样只会让你的用户得到错误的记录。&lt;br&gt;2.尽量多填DNS服务器，这样能让你的域名更加稳定。目前DNSPod有6台DNS服务器，一般的域名注册商允许你填写4个（新网），万网在客户面板里面只能填写2个，但在域名管理面板（diy.hichina.com）可以把6个都填写进去。&lt;br&gt;目前DNSPod的6台DNS服务器分别为（注意了，是.net不是.com）：&lt;br&gt;ns1.dnspod.net&lt;br&gt;ns2.dnspod.net&lt;br&gt;ns3.dnspod.net&lt;br&gt;ns4.dnspod.net&lt;br&gt;ns5.dnspod.net&lt;br&gt;ns6.dnspod.net&lt;br&gt;折腾了老半天，大家也够累了。这个时候，ISO应该下载好了吧？辛苦一点，先把盘给刻好了。在下一章奶罩将会带你进入神秘的Linux殿堂。&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/07/dnspodsquidcdn3.html' title='用DNSPod和Squid打造自己的CDN(第3章)'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=3033462619764190709' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/3033462619764190709'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/3033462619764190709'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-4379495428512559291</id><published>2007-07-09T14:11:00.001+08:00</published><updated>2007-07-09T14:14:38.105+08:00</updated><title type='text'>用DNSPod和Squid打造自己的CDN(第1-2章)</title><content type='html'>&lt;p&gt;Copyright&amp;nbsp;&amp;nbsp;2007 Sam Wu, wuhongsheng.com. All rights reserved.  &lt;p&gt;前言  &lt;p&gt;本篇教程是顺应大家的要求而写。教程内大部分都是奶罩在为VeryCD等大型网站构建CDN时所累积的经验。在一些概念方面可能会有一些错漏，希望大家指正。&lt;br&gt;本教程面对的对象是个人站长，所以各方面会力求傻瓜化，让大家都能看懂。当然，前提是需要你要有一颗好学的心，还有坚韧的毅力。&lt;br&gt;另外一方面，本篇文章基本不会涉及到Windows的内容，整套系统将会是架构在CentOS Linux 5上。别问我为什么不是Windows，因为Windows只能拿一个字形容：烂。不喜欢Linux，或者认为Linux学习起来有困难的朋友，可以到此打住。&lt;br&gt;可能有人要问，为什么是Linux，而不是FreeBSD？因为FreeBSD不管从系统的优化配置，还是文件系统的性能，都不合适初学者。&lt;br&gt;先前说过，本篇文章针对的是没有多少技术基础的个人站长，所以文章内会有Linux的安装、基本操作等一些东西教给你，让你学得简单，时间花得有价值。&lt;br&gt;再罗嗦一下，在接下来的时间内你将要面对一个黑漆漆的，全是英文的屏幕，请做好心理准备。&lt;br&gt;注意：本篇教程将*不会*涉及到以下内容：&lt;br&gt;1.动态内容（比如BBS）&lt;br&gt;2.大文件（比如软件下载站的软件）  &lt;p&gt;第&lt;b&gt; 1 &lt;/b&gt;章&lt;b&gt; CDN&lt;/b&gt;和智能&lt;b&gt;DNS&lt;/b&gt;  &lt;p&gt;&lt;b&gt;1.&lt;/b&gt;什么是&lt;b&gt;CDN&lt;/b&gt;&lt;br&gt;简单来说，CDN就是能让你的网站访问起来更加快的东西。例如网通用户访问了你在网通的CDN服务器上面某个文件，CDN系统就会判断这个文件是否被请求过，如果被请求过，在没有失效的情况下，就会从系统的缓存里面读取这个文件并返回给用户。如果这个文件没有被请求过，那么CDN会自动从你的主服务器上面获取这个文件，然后缓存到CDN系统内，再给用户返回。&lt;br&gt;看到这里，聪明的朋友就会问：如果网通的CDN服务器，访问我在电信的主服务器速度很慢，那么是不是用户第一次请求这个文件的时候会很慢？嘿嘿，恭喜你，的确是这样。并且，在文件没有完全缓存到CDN上面的时候，所有访问这个文件的用户都会出现错误，比如网页打开不完整，文件下载到一半等。但只要你的网站访问量足够大，这个影响对用户来说是微不足道的。&lt;br&gt;然后还有朋友会问，为什么商业的CDN不存在这个问题？因为，商业的CDN有自己租用的线路，自己走路由。这就是商业CDN卖得如此之贵的原因。当然，如何走这个路由，搭建这么一个大型的CDN系统，不在本文的讨论范围以内。 &lt;br&gt;&lt;b&gt;2.&lt;/b&gt;什么是智能&lt;b&gt;DNS&lt;/b&gt;，什么是&lt;b&gt;DNSPod&lt;/b&gt;&lt;br&gt;智能DNS的原理很简单：在用户解析一个域名的时候，判断一下用户的IP，然后跟DNS服务器内部的IP表匹配一下，看看用户是电信还是网通用户，然后给用户返回对应的IP地址。&lt;br&gt;DNSPod是奶罩同学旗下的网站，提供免费的智能DNS服务。你只需要把你域名的DNS从原来的注册商改为DNSPod，马上就可以享用这个服务了。&lt;br&gt;注意了：DNSPod只提供域名的智能解析服务，不提供域名也不提供服务器，千万不要以为把你的域名转到DNSPod就能成为双线了。  &lt;p&gt;第&lt;b&gt; 2 &lt;/b&gt;章前期准备  &lt;p&gt;要继续后面的步骤，你必须要准备以下东西：&lt;br&gt;域名一个&lt;br&gt;服务器两台，电信网通各一台，一般的P4即可，内存2G以上&lt;br&gt;空白DVD R+光盘一张（或者CD-R 6张）&lt;br&gt;DVD刻录机一个（或者CD RW刻录机一个）&lt;br&gt;然后，你还需要去下载CentOS的ISO镜像&lt;br&gt;随便在下面的镜像地址挑一个，暂时没有国内的，建议挂一个迅雷慢慢下&lt;br&gt;http://ftp.ncnu.edu.tw/Linux/CentOS/5.0/isos/i386/ &lt;br&gt;http://ftp.cse.yzu.edu.tw/pub/CentOS/5.0/isos/i386/ &lt;br&gt;http://ftp.cs.pu.edu.tw/Linux/CentOS/5.0/isos/i386/ &lt;br&gt;http://ftp.tcc.edu.tw/Linux/CentOS/5.0/isos/i386/ &lt;br&gt;http://mirror.mirr4u.com/centos/5.0/isos/i386/ &lt;br&gt;http://mirror.tini4u.net/centos/5.0/isos/i386/ &lt;br&gt;http://mirror.averse.net/centos/5.0/isos/i386/&lt;br&gt;打开上面的网址后，你可以发现类似下面的文件名&lt;br&gt;CentOS-5.0-i386-bin-1of6.iso&lt;br&gt;…&lt;br&gt;CentOS-5.0-i386-bin-6of6.iso&lt;br&gt;这些是CD镜像，一共有6个，下载刻盘比较浪费资源，所以我建议下载下面这个DVD镜像&lt;br&gt;CentOS-5.0-i386-bin-DVD.iso&lt;br&gt;废话不多说，下载回来后刻盘即可。&lt;br&gt;之后，为资源做一个安排，所以下面将会做一个假设：&lt;br&gt;假设域名为naizhao.com&lt;br&gt;假设两台服务器，电信的服务器为A，网通的服务器为B&lt;br&gt;假设A服务器为内容服务器，B服务器为CDN服务器，B服务器所有需要的内容均从A服务器取得&lt;br&gt;假设A服务器的IP是1.1.1.1，B服务器的IP是2.2.2.2&lt;br&gt;OK，到这里后我们所需要的东西基本准备好了。ISO可能还没有下载好，不急，慢慢挂着，我们先来把域名的DNS设置好。&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/07/dnspodsquidcdn1-2.html' title='用DNSPod和Squid打造自己的CDN(第1-2章)'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=4379495428512559291' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/4379495428512559291'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/4379495428512559291'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-6580229931435962829</id><published>2007-04-27T10:04:00.001+08:00</published><updated>2007-04-27T10:04:47.343+08:00</updated><title type='text'>DirectaAmin下安装iconv函数库</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;DirectAdmin&amp;nbsp;： &lt;p&gt;1, edit /usr/local/directadmin/customapache/configure.php &lt;p&gt;and add &lt;p&gt;–with-iconv \ &lt;p&gt;over &lt;p&gt;–with-apxs \ &lt;p&gt;So the first few lines of your configure.php will look like &lt;p&gt;#!/bin/sh&lt;br&gt;./configure \&lt;br&gt;–with-iconv \&lt;br&gt;–with-apxs \ &lt;p&gt;2, recompile php &lt;p&gt;./build clean&lt;br&gt;./build php n&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/04/directaaminiconv.html' title='DirectaAmin下安装iconv函数库'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=6580229931435962829' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/6580229931435962829'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/6580229931435962829'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-4494466912700858681</id><published>2007-03-28T20:09:00.001+08:00</published><updated>2007-03-28T20:09:32.066+08:00</updated><title type='text'>mod_evasive</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;为了防止Web服务器被DDoS攻击，我们需要安装mod_evasive这个防DDoS的模块&lt;br&gt;mod_evasive 1.10.x防DDoS模块的下载与安装&lt;br&gt;下载地址：&lt;a href="http://www.zdziarski.com/projects/mod_evasive/"&gt;http://www.zdziarski.com/projects/mod_evasive/&lt;/a&gt;&lt;br&gt;解压后进入解压目录，执行&lt;br&gt;/home/apache/bin/apxs -cia mod_evasive20.c&lt;br&gt;编译完成后，/home/apache/modules下会生成一个mod_evasive20.so文件&lt;br&gt;然后kate /home/apache/conf/httpd.conf&lt;br&gt;加入以下选项（如果没有的话）&lt;br&gt;#启用mod_evasive for Apache 2.x防DDoS模块&lt;br&gt;LoadModule evasive20_module modules/mod_evasive20.so (这一句通常会被自动加入)&lt;br&gt;&amp;lt;IfModule mod_evasive20.c&amp;gt;&lt;br&gt;#记录和存放黑名单的哈西表大小，如果服务器访问量很大，可以加大该值&lt;br&gt;DOSHashTableSize 3097&lt;br&gt;#同一个页面在同一时间内可以被统一个用户访问的次数，超过该数字就会被列为攻击，同一时间的数值可以在DosPageInterval参数中设置。&lt;br&gt;DOSPageCount 3&lt;br&gt;#同一个用户在同一个网站内可以同时打开的访问数，同一个时间的数值在DOSSiteInterval中设置。&lt;br&gt;DOSSiteCount 40&lt;br&gt;#设置DOSPageCount中时间长度标准，默认值为1。&lt;br&gt;DOSPageInterval 2&lt;br&gt;#DOSSiteInterval 2 设置DOSSiteCount中时间长度标准，默认值为1。&lt;br&gt;DOSSiteInterval 2&lt;br&gt;#被封时间间隔秒，这中间会收到 403 (Forbidden) 的返回。&lt;br&gt;DOSBlockingPeriod 10&lt;br&gt;#设置受到攻击时接收攻击信息提示的邮箱地址。&lt;br&gt;#DOSEmailNotify &lt;a href="mailto:you@yourdomain.com"&gt;you@yourdomain.com&lt;/a&gt;&lt;br&gt;#受到攻击时Apache运行用户执行的系统命令&lt;br&gt;#DOSSystemCommand “su - someuser -c ‘/sbin/… %s …’”&lt;br&gt;#攻击日志存放目录，BSD上默认是 /tmp&lt;br&gt;#DOSLogDir “/var/lock/mod_evasive”&lt;br&gt;&amp;lt;/IfModule&amp;gt;&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/03/modevasive.html' title='mod_evasive'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=4494466912700858681' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/4494466912700858681'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/4494466912700858681'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-228118640405413969</id><published>2007-03-27T14:48:00.001+08:00</published><updated>2007-03-27T14:49:40.210+08:00</updated><title type='text'>转 Linux下Apache并发连接数和带宽控制</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;　　Linux+Apache的稳定性、安全性和性能以及低廉的价格正在赢得越来越多的市场份额，使用Linux+Apache作网站服务器的朋友也越来越多，而Apache作为一种http服务，相比FTP总是不容易控制，特别是当网站以http方式提供软件/音乐下载时，若是每个用户都开启多个线程并没有带宽的限制，将很快达到http的最大连接数或者造成网络壅塞，使得网站的许多正常服务都无法运行。不过，Apache的使用者们早已开发出了 mod_limitipconn和mod_bandwidth两个模块，来控制http的并发连接数和用户所能够使用的带宽，下面将以RedHat Linux 7.3+Apache 1.3.7来说明它们的使用方法。 &lt;p&gt;&lt;a&gt;&lt;/a&gt; &lt;p&gt;&lt;strong&gt;一、使用mod_limitipconn限制Apache的并发连接数&lt;/strong&gt; &lt;p&gt;　　mod_limitipconn可以控制每个IP地址同时连接服务器某一个目录的并发连接数，是一个非常有用的模块，其官方网页是http: //dominia.org/djao/limitipconn.html，最新版本为for Apache 1.3.7的0.04，并且还有支持Apache 2.x的模块下载，由于本人使用Apache 1.3.7版本，所以请使用2.x版本Apache的朋友到其官方网站察看具体的使用方法。 &lt;p&gt;　　mod_limitipconn for Apache 1.3x提供三种安装方式，分别是tar包、rpm安装文件和rpm源文件，由于rpm包只能用在 RedHat 7.x 版本，并且不支持检测代理服务器，所以我们一般都使用tar包的安装方式。 &lt;p&gt;　　以管理员方式登陆服务器，然后在服务器上运行 wget http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz 将mod_limitipconn的tar包下载到服务器，然后按照再运行tar zxvf mod_limitipconn-0.04.tar.gz将tar包解压缩，会在当前目录下生成mod_limitipconn-0.04目录，然后cd mod_limitipconn-0.04进入此目录，下一步就是使用apxs将目录中的mod_limitipconn.c编译。这时，我们需要确定自己的Apache安装在那个目录，并且找到apxs命令放在哪里。 &lt;p&gt;　　通过命令whereis apxs，我们可以确定apxs命令的路径，如我的apxs命令所在为/usr/sbin/apxs，则输入/usr/sbin/apxs -c -i -a mod_limitipconn.c对mod_limitipconn.c进行编译，此命令会自动在你Apache的配置文件httpd.conf中加入需要的信息，并且将生成的mod_limitipconn.so模块拷贝到Apache的模块目录。不过为了确认此命令是否正常运作，请首先检查自己的 Apache模块目录（我的是/usr/lib/apache），看内部是否含有mod_limitipconn.so文件，没有的话请将 mod_limitipconn-0.04目录中生成的文件拷贝到此处。 &lt;p&gt;　　刚才命令自动生成的httpd.conf可能有些错误，在我的系统中，它将LoadModule limitipconn_module modules/mod_limitipconn.so放在了 &lt;blockquote&gt;&amp;lt;IfDefine HAVE_PYTHON&amp;gt;&lt;br&gt;LoadModule python_module modules/mod_python.so&lt;br&gt;&amp;lt;/IfDefine&amp;gt;&lt;/blockquote&gt; &lt;p&gt;之间，而将AddModule mod_limitipconn.c放在了 &lt;blockquote&gt;&amp;lt;IfDefine HAVE_PYTHON&amp;gt;&lt;br&gt;AddModule mod_python.c&lt;br&gt;&amp;lt;/IfDefine&amp;gt;&lt;/blockquote&gt; &lt;p&gt;之间，直接造成了mod_limitipconn模块不能正常运行，所以请将这两行分别移动到没有&amp;lt;IfDefine&amp;gt;&amp;lt; /IfDefine&amp;gt;的相应行中，然后请确认mod_status模块已经加载，并且在mod_status下添加了ExtendedStatus On这一行。这时我们的mod_limitipconn模块就安装完毕，下一步就是对某个目录进行并发连接数的设置了。 &lt;p&gt;　　mod_limitipconn可以对全局和虚拟主机进行不同的限制，其语法结构都是 &lt;blockquote&gt;&amp;lt;IfModule mod_limitipconn.c&amp;gt;&lt;br&gt;&amp;lt;Location /&amp;gt; #所限制的目录所在，此处表示主机的根目录&lt;br&gt;MaxConnPerIP 3 #所限制的每个IP并发连接数为3个&lt;br&gt;NoIPLimit image/* #对图片不做IP限制&lt;br&gt;&amp;lt;/Location&amp;gt;&lt;br&gt;&amp;lt;Location /mp3&amp;gt; #所限制的目录所在，此处表示主机的/mp3目录&lt;br&gt;MaxConnPerIP 1 #所限制的每个IP并发连接数为1个&lt;br&gt;OnlyIPLimit audio/mpeg video #该限制只对视频和音频格式的文件&lt;br&gt;&amp;lt;/Location&amp;gt;&lt;br&gt;&amp;lt;/IfModule&amp;gt;&lt;/blockquote&gt; &lt;p&gt;　　当对全局进行限制时，将这段代码放在httpd.conf文件没有VirtualHost的地方，若是对某个虚拟主机进行限制，请将其放在 &amp;lt;VirtualHost xxx.xxx.xxx.xxx&amp;gt;和&amp;lt;/VirtualHost&amp;gt;之间，我们可以通过更改Location以及 MaxConnPerIP方便的控制所限制的目录和并发连接数。 &lt;p&gt;　　最后，只要重新启动Apache服务，并发连接数的限制就可以生效。 &lt;p&gt;&lt;strong&gt;二、使用mod_bandwidth控制Apache的带宽&lt;/strong&gt; &lt;p&gt;　　Apache 1.3.7实际上带有mod_bandwidth支持，只是没有此模块的so文件，我们所做的就是下载mod_bandwidth的源文件进行编译，并对mod_bandwidth进行相应的设置。 &lt;p&gt;　　在下载之前，请先确认自己的Apache配置文件httpd.conf中是否含有 &lt;blockquote&gt;&amp;lt;IfDefine HAVE_BANDWIDTH&amp;gt;&lt;br&gt;LoadModule bandwidth_module modules/mod_bandwidth.so&lt;br&gt;&amp;lt;/IfDefine&amp;gt;&lt;/blockquote&gt; &lt;p&gt;以及 &lt;blockquote&gt;&amp;lt;IfDefine HAVE_BANDWIDTH&amp;gt;&lt;br&gt;AddModule mod_bandwidth.c&lt;br&gt;&amp;lt;/IfDefine&amp;gt;&lt;/blockquote&gt; &lt;p&gt;若是没有，请加上 &lt;blockquote&gt;LoadModule bandwidth_module&lt;br&gt;libexec/apache/mod_bandwidth.so&lt;br&gt;AddModule mod_bandwidth.c&lt;/blockquote&gt; &lt;p&gt;　　并且这两行必须分别加在相应区域的最前面，使得这个模块以最低的优先级运行。（不过1.3.7的Apache应该有，呵呵）。 &lt;p&gt;　　确认后，请输入 wget ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c 将源文件下载到服务器，然后请使用apxs对其进行编译，编译方法和mod_limitipconn的基本相同，如我输入/usr/sbin/apxs -c mod_bandwidth.c -o /usr/lib/apache(Apache的模块目录），编译程序会自动将编译成功的mod_bandwidth.so文件放到Apache的模块目录，您也可以自己确认一下，若是不正常，拷贝过去即可。 &lt;p&gt;　　mod_bandwidth运行时需要一些特定的目录，按照默认情况，请运行以下命令创建并更改目录的权限： &lt;blockquote&gt;mkdir /tmp/apachebw&lt;br&gt;mkdir /tmp/apachebw/link&lt;br&gt;mkdir /tmp/apachebw/master&lt;br&gt;chmod -R 777 /tmp/apachebw&lt;/blockquote&gt; &lt;p&gt;　　然后再打开httpd.conf文件，加上以下内容 &lt;blockquote&gt;&amp;lt;IfModule mod_bandwidth.c&amp;gt;&lt;br&gt;BandWidthDataDir "/tmp/apachebw/"&lt;br&gt;BandWidthModule on&lt;br&gt;&amp;lt;/IfModule&amp;gt;&lt;/blockquote&gt; &lt;p&gt;　　这时，我们就能够对所需要限制带宽的目录进行相应的设置，此处的目录请使用服务器的绝对路径。如我们想限制服务器 /home/www/thinkjam/download/soft目录的下载速度，也就是限制网址http: //download.thinkjam.org/soft目录下软件的下载速度，则为httpd.conf文件增加以下内容 &lt;blockquote&gt;&amp;lt;Directory /home/www/thinkjam/download/soft&amp;gt;&lt;br&gt;BandWidth thinkjam.org 0 #来自thinkjam.org的下载不受速度限制&lt;br&gt;BandWidth 210.51.21 0 #来自210.51.21网段的下载不受速度限制&lt;br&gt;BandWidth all 327680 #来自其它网段的速度都限制为327680Byte，即30KB/s&lt;br&gt;&amp;lt;/Directory&amp;gt;&lt;/blockquote&gt; &lt;p&gt;　　设置完毕后，重新启动Apache服务，即可生效。 &lt;p&gt;　　mod_bandwidth还有许多其它有用的参数，如在中间加上MaxConnection 120则可以限制某个目录的最多连接数，当超过指定连接数时，拒绝新的连接，此参数与mod_limitipconn模块结合可以控制某个目录的最多连接人数。 &lt;p&gt;　　其它的参数请朋友们到其官方网站 http://www.cohprog.com/v3/bandwidth/doc-en.html 察看相关的文档。 &lt;p&gt;　　Apache的功能确实强大，很多功能都可以通过添加模块来实现，在 http://modules.apache.org/ 可以找到更多的模块，我们也可以编写自己的模块来实现相应的功能。&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/03/linuxapache.html' title='转 Linux下Apache并发连接数和带宽控制'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=228118640405413969' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/228118640405413969'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/228118640405413969'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-557103794827732537</id><published>2007-03-27T11:31:00.001+08:00</published><updated>2007-03-27T11:31:39.170+08:00</updated><title type='text'>Updating DirectAdmin Manually</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;If you need to update your copy of DirectAdmin manually, you can do so by running the following commands:  &lt;blockquote&gt; &lt;p&gt;cd /usr/local/directadmin&lt;br&gt;wget -O update.tar.gz https://www.directadmin.com/cgi-bin/daupdate?uid=&lt;b&gt;123&lt;/b&gt;\&amp;amp;lid=&lt;b&gt;1234&lt;/b&gt;&lt;br&gt;tar xvzf update.tar.gz&lt;br&gt;./directadmin p&lt;br&gt;cd scripts&lt;br&gt;./update.sh&lt;br&gt;service directadmin restart&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Where &lt;b&gt;123&lt;/b&gt; and &lt;b&gt;1234&lt;/b&gt; are your Client ID and License ID, respectively. Note that if you are running FreeBSD, you might need to add a \ before the ? character in the wget line. If there are errrors extracting the update.tar.gz file, then run:  &lt;blockquote&gt; &lt;p&gt;head -n 1 update.tar.gz&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;to search for an error. If there is an readble error inside the file, then you'll need to contact sales@directadmin.com to get your license activated or updated.&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/03/updating-directadmin-manually.html' title='Updating DirectAdmin Manually'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=557103794827732537' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/557103794827732537'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/557103794827732537'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-3295378380980806547</id><published>2007-01-24T14:26:00.001+08:00</published><updated>2007-01-24T14:26:43.588+08:00</updated><title type='text'>Proftpd的web管理(2)-proftpd部分</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;tar xfvj proftpd-1.3.0a.tar.gz &lt;br&gt;cd proftpd-1.3.0a &lt;p&gt;# 附带磁盘限额模块&lt;br&gt;./configure --with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql \&lt;br&gt;--with-includes=/usr/local/include/mysql/ --with-libraries=/usr/local/lib/mysql/ &lt;p&gt;make&lt;br&gt;make install&lt;br&gt;#修改/usr/local/etc/proftpd.conf&lt;br&gt;把nogroup改为nobody 因为linux里nobody用户属于nobody组  &lt;p&gt;若需要将proftpd设置为系统启动时自动启动则通过如下命令拷贝启动文件：  &lt;p&gt;cp ./contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd &lt;br&gt;然后修改该脚本的可执行属性： &lt;br&gt;chmod +x /etc/rc.d/init.d/proftpd &lt;br&gt;然后编辑/etc/rc.d/init.d/functions：  &lt;p&gt;修改 export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin" &lt;br&gt;为 export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin" &lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/01/proftpdweb2-proftpd.html' title='Proftpd的web管理(2)-proftpd部分'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=3295378380980806547' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/3295378380980806547'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/3295378380980806547'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-6811736631991090327</id><published>2007-01-22T16:48:00.001+08:00</published><updated>2007-01-24T12:40:10.103+08:00</updated><title type='text'>Proftpd的web管理(1)-mysql部分</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;tar xfvz mysql-5.0.27.tar.gz &lt;br&gt;cd mysql-5.0.27 &lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql  &lt;p&gt;#prefix=/usr/local/mysql mysql安装的目标目录&lt;br&gt;#sysconfdir=/etc my.ini配置文件的路径&lt;br&gt;#localstatedir=/var/lib/mysql 数据库存放的路径  &lt;p&gt;make&lt;br&gt;make install  &lt;p&gt;安装完以后要初始化数据库，当然你是升级的话不用做这步；&lt;br&gt;/usr/local/mysql/bin/mysql_install_db&lt;br&gt;如果系统没有mysql这个用户的话，最好做以下这步：&lt;br&gt;useradd -M -o -r -d /var/lib/mysql -s /bin/bash -c "MySQL Server" -u 27 mysql&lt;br&gt;然后我启动mysql&lt;br&gt;/usr/local/mysql/bin/mysqld_safe &amp;amp;&lt;br&gt;ok，先看看mysql能否正常工作&lt;br&gt;ln -s /usr/local/mysql/bin/mysql /bin/mysql //做一个连接，方便直接输入mysql&lt;br&gt;ln -s /usr/local/mysql/bin/mysqladmin /bin/mysqladmin //同上&lt;br&gt;mysql -u root mysql&lt;br&gt;mysqladmin -u root password 'password' &lt;p&gt;一般情况下都是不能正常链接数据库，错误提示一般为：&lt;br&gt;ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) &lt;br&gt;chown -R mysql:mysql /var/lib/mysql //设置权限  &lt;p&gt;把你编译目录的一个脚本COPY过去&lt;br&gt;cp support-files/mysql.server /etc/rc.d/init.d/mysqld&lt;br&gt;chkconfig --add mysqld&lt;br&gt;用ntsysv设置使mysql每次启动都能自动运行。&lt;br&gt;好了，至此mysql安装完毕，你可以这样起动你的mysql服务&lt;br&gt;/etc/rc.d/init.d/mysqld start  &lt;p&gt;ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql&lt;br&gt;ln -s /usr/local/mysql/include/mysql /usr/include/mysql  &lt;p&gt;编译其他软件的时候自定义myslq的库文件路径，但我还是喜欢把库文件链接到默认的位置，这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/01/proftpdweb1-mysql.html' title='Proftpd的web管理(1)-mysql部分'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=6811736631991090327' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/6811736631991090327'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/6811736631991090327'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-5328446911621884458</id><published>2007-01-21T01:58:00.001+08:00</published><updated>2007-01-21T01:58:03.183+08:00</updated><title type='text'>Contact</title><content type='html'>&lt;p&gt;在睡觉前无聊的搜索者电视节目，忽然发现CCTV-6正在播放&amp;lt;Contact&amp;gt;。一部唤起我儿时记忆的电影。那是小学毕业的暑假，几乎大部分时间都是在奶奶家租录像带度过的。这部电影给我的映像很深刻，小学5、6年级那时候正是我对宇宙科学最感兴趣的那段日子，虽然有着太多的不理解，但是对这个主人公执著的精神所感染。虽然我当时知道E=MC2，但是不知道他是说什么，要是我当时知道并且知道其含义，也许我现在也不会在这里。其实我一直对宇宙科学有着很强的好奇心，但是一个悲剧的事实让我对学习宇宙科学知识失去了信心，也许这是命中注定的吧。哎，不想回忆起往事。思绪还是回到这部电影吧。也是由于这部电影知道了朱迪福斯特，再后来也喜欢上了她的&amp;lt;沉默的羔羊&amp;gt;。我在google上搜索着Contact电影的信息，看到2006年12月20日是Contact原作者Carl Sagan逝世10周年，看来我错过了1个月，还好没有错过太多，这里还是缅怀一下吧！同时也找到了一部纪录片&amp;lt;卡尔萨根的宇宙&amp;gt;。&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/01/contact.html' title='Contact'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=5328446911621884458' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/5328446911621884458'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/5328446911621884458'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-4532087360041561669</id><published>2007-01-18T10:54:00.001+08:00</published><updated>2007-01-18T10:54:01.036+08:00</updated><title type='text'>Windows Mobile 6.0</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;img height="590" src="http://www.pcbeta.com/attachments/2007/01/13336_200701171751511.jpg" width="444" border="0"&gt;&lt;br&gt;&lt;img height="590" src="http://news1.mydrivers.com/pages/images/20070117065121_10947.jpg" width="444" border="0"&gt;&lt;br&gt;&lt;img height="587" alt="Windows" src="http://news1.mydrivers.com/pages/images/20070117065131_11239.jpg" width="444" border="0"&gt;&lt;br&gt;&lt;img height="590" alt="Windows" src="http://news1.mydrivers.com/pages/images/20070117065138_35391.jpg" width="444" border="0"&gt;&lt;br&gt;&lt;img height="589" alt="Windows" src="http://news1.mydrivers.com/pages/images/20070117065144_72660.jpg" width="443" border="0"&gt;&lt;br&gt;&lt;img height="588" alt="Windows" src="http://news1.mydrivers.com/pages/images/20070117065150_56697.jpg" width="443" border="0"&gt;&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/01/windows-mobile-60.html' title='Windows Mobile 6.0'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=4532087360041561669' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/4532087360041561669'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/4532087360041561669'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-7551268834569815569</id><published>2007-01-18T10:33:00.001+08:00</published><updated>2007-01-18T10:33:06.739+08:00</updated><title type='text'>Windows Vista Ultimate 简体中文旗舰版</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;img height="652" alt="" src="http://www.cnbeta.com/ugmbbc/News/vista/Vista1.jpg" width="438" border="0"&gt; &lt;p&gt;&lt;img height="278" alt="" src="http://www.cnbeta.com/ugmbbc/News/vista/Vista2.jpg" width="438" border="0"&gt; &lt;p&gt;&lt;img height="295" alt="" src="http://www.cnbeta.com/ugmbbc/News/vista/Vista3.jpg" width="439" border="0"&gt; &lt;p&gt;&lt;img height="294" alt="" src="http://www.cnbeta.com/ugmbbc/News/vista/Vista4.jpg" width="438" border="0"&gt; &lt;p&gt;&lt;img height="294" alt="" src="http://www.cnbeta.com/ugmbbc/News/vista/Vista5.jpg" width="438" border="0"&gt; &lt;p&gt;&lt;img height="292" alt="" src="http://www.cnbeta.com/ugmbbc/News/vista/Vista6.jpg" width="436" border="0"&gt; &lt;p&gt;&lt;img height="259" alt="" src="http://www.cnbeta.com/ugmbbc/News/vista/System.jpg" width="436" border="0"&gt;&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/01/windows-vista-ultimate.html' title='Windows Vista Ultimate 简体中文旗舰版'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=7551268834569815569' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/7551268834569815569'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/7551268834569815569'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-4893494451810027015</id><published>2007-01-11T10:19:00.001+08:00</published><updated>2007-01-11T10:19:50.852+08:00</updated><title type='text'>MacWorld San Francisco 2007 视频</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;embed src="http://www.tudou.com/player/playlist.swf?lid=30" width="488" height="423" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/01/macworld-san-francisco-2007.html' title='MacWorld San Francisco 2007 视频'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=4893494451810027015' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/4893494451810027015'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/4893494451810027015'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-7669410272033929626</id><published>2007-01-10T19:20:00.001+08:00</published><updated>2007-01-10T19:20:40.391+08:00</updated><title type='text'>iPhone官方图</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;苹果终于在这次的拉斯维加斯CES大展上公布了传闻已久的苹果电话，内置功能异常丰富，我们前面已经针对这款关注度非常高的电话产品提供了相关的综述型介绍，而这里提供的，则是苹果官方的更多清晰产品功能界面照片，这应该可以对于关注苹果电话，希望了解更多apple iPhone的用户有更多帮助作用 &lt;p&gt;&lt;img height="397" src="http://www.8080.net/pics/20071/11014121113.jpg" width="425" border="1"&gt; &lt;p&gt;苹果刚刚发布全的全新产品线，Apple iPhone，和之前多方面流出的猜想有相当大的区别，唯一可以确认的是，苹果终于真的推出自己的电话产品 &lt;p&gt;&lt;img height="468" src="http://www.8080.net/pics/20071/1101414370.jpg" width="425" border="1"&gt; &lt;p&gt;苹果iPhone高度4.5英寸，宽2.4英寸，厚度0.46英寸，配备3.5英寸超大液晶显示屏，分辨率320x480，键盘锁定状态下可以通过手指触摸特定屏幕区域向右按照指示滑动解锁 &lt;p&gt;&lt;img height="522" src="http://www.8080.net/pics/20071/1101412116.jpg" width="425" border="1"&gt; &lt;p&gt;iPhone音乐播放界面类似iPod播放器，看来苹果的移动电话不仅仅是移动电话，将会集成更多具备苹果特制的内容在其中 &lt;p&gt;&lt;img height="526" src="http://www.8080.net/pics/20071/1101412117.jpg" width="425" border="1"&gt; &lt;p&gt;播放列表选择界面 &lt;p&gt;&lt;img height="248" src="http://www.8080.net/pics/20071/1101412118.jpg" width="425" border="1"&gt; &lt;p&gt;通过音乐收藏夹进行横向浏览 &lt;p&gt;&lt;img height="306" src="http://www.8080.net/pics/20071/1101412119.jpg" width="425" border="1"&gt; &lt;p&gt;触摸屏功能界面 &lt;p&gt;&lt;img height="279" src="http://www.8080.net/pics/20071/11014121110.jpg" width="425" border="1"&gt; &lt;p&gt;视频播放 &lt;p&gt;&lt;img height="512" src="http://www.8080.net/pics/20071/11014121111.jpg" width="425" border="1"&gt; &lt;p&gt;电话通信模式界面，可以选择静音，键盘，扬声器，增加对话，暂停，连接模式，提供来电大头贴 &lt;p&gt;&lt;img height="528" src="http://www.8080.net/pics/20071/11014121112.jpg" width="425" border="1"&gt; &lt;p&gt;联系人列表浏览界面 &lt;p&gt;&lt;img height="502" src="http://www.8080.net/pics/20071/1101412110.jpg" width="425" border="1"&gt; &lt;p&gt;检视语音邮件界面 &lt;p&gt;&lt;img height="506" src="http://www.8080.net/pics/20071/1101412111.jpg" width="425" border="1"&gt; &lt;p&gt;照片浏览界面 &lt;p&gt;&lt;img height="516" src="http://www.8080.net/pics/20071/1101426540.jpg" width="425" border="1"&gt; &lt;p&gt;人像浏览界面 &lt;p&gt;&lt;img height="326" src="http://www.8080.net/pics/20071/1101412112.jpg" width="425" border="1"&gt; &lt;p&gt;横向风景照片浏览模式界面 &lt;p&gt;&lt;img height="536" src="http://www.8080.net/pics/20071/1101412113.jpg" width="425" border="1"&gt; &lt;p&gt;互联网浏览界面 &lt;p&gt;&lt;img height="504" src="http://www.8080.net/pics/20071/1101412114.jpg" width="425" border="1"&gt; &lt;p&gt;文本字体大小能够根据显示界面尺寸进行自动调整 &lt;p&gt;&lt;img height="606" src="http://www.8080.net/pics/20071/1101412115.jpg" width="425" border="1"&gt; &lt;p&gt;苹果iPhone内置启用的Google 地图模式&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/01/iphone_3104.html' title='iPhone官方图'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=7669410272033929626' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/7669410272033929626'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/7669410272033929626'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-896876727234648877</id><published>2007-01-10T18:51:00.001+08:00</published><updated>2007-01-10T19:01:33.251+08:00</updated><title type='text'>iTV公布</title><content type='html'>&lt;p&gt;支持USB2 本地网 无线网络 720p高清视频 40G 硬盘&lt;/p&gt; &lt;p&gt;iTV演示放的居然不是24小时，而是Heroes。&lt;/p&gt; &lt;p&gt;USD 299 美元 (CNY 2,338.18, HKD 2,324.06, TWD 9,740.05)&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/01/itv.html' title='iTV公布'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=896876727234648877' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/896876727234648877'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/896876727234648877'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-3365742789356127150</id><published>2007-01-10T18:43:00.001+08:00</published><updated>2007-01-10T18:43:26.330+08:00</updated><title type='text'>Macworld 2007 来了</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;一年一度的Macworld 2007来了，今天是apple公司诞辰30周年。Macworld 大会每年都会给世界带来惊喜。由于保密工作做得非常好，apple的新产品是不会提前公布。而每年发布新产品的最多的时候也就是这个时刻。今年主要猜测的是Apple的手机。这个话题已经讨论很久了。几年前就有传闻Apple要出手机，可是换来的却是Apple和MOTO的混血儿。去年开始，就不断传闻一些代工厂商正在为Apple生产手机，Apple偶尔也放出一点风声，但是一直都没有官方宣布，这是Apple的一贯作风，可信度较高。也许大会上Apple会给我们带来更多的惊喜。我们拭目以待，还有1个小时，很是激动啊。&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/01/macworld-2007.html' title='Macworld 2007 来了'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=3365742789356127150' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/3365742789356127150'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/3365742789356127150'/><author><name>Pretender</name></author></entry><entry><id>tag:blogger.com,1999:blog-8848186256580337710.post-1079650570503118708</id><published>2007-01-10T18:27:00.001+08:00</published><updated>2007-01-10T18:27:35.157+08:00</updated><title type='text'>24小时前4集</title><content type='html'>&lt;p&gt;24小时的前4集已经看完。虽然一切都那么简单，炸得那么简单。总觉得过于简单。一定还有更精彩的在等待我们。&lt;/p&gt;</content><link rel='alternate' type='text/html' href='http://blog.viker.org/2007/01/244_10.html' title='24小时前4集'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8848186256580337710&amp;postID=1079650570503118708' title='0 条评论'/><link rel='replies' type='application/atom+xml' href='http://blog.viker.org/rss.xml' title='帖子评论'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/1079650570503118708'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8848186256580337710/posts/default/1079650570503118708'/><author><name>Pretender</name></author></entry></feed>