<?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>开源小站 &#187; FreeBSD</title>
	<atom:link href="http://www.litrin.net/tag/freebsd/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.litrin.net</link>
	<description>It is Cool to OpenSource</description>
	<lastBuildDate>Fri, 03 Feb 2012 04:33:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>LAMP的常用扩展安装</title>
		<link>http://www.litrin.net/2011/05/16/lamp%e7%9a%84%e5%b8%b8%e7%94%a8%e6%89%a9%e5%b1%95%e5%ae%89%e8%a3%85/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lamp%25e7%259a%2584%25e5%25b8%25b8%25e7%2594%25a8%25e6%2589%25a9%25e5%25b1%2595%25e5%25ae%2589%25e8%25a3%2585</link>
		<comments>http://www.litrin.net/2011/05/16/lamp%e7%9a%84%e5%b8%b8%e7%94%a8%e6%89%a9%e5%b1%95%e5%ae%89%e8%a3%85/#comments</comments>
		<pubDate>Mon, 16 May 2011 01:57:56 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[DataBase]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1467</guid>
		<description><![CDATA[之前已经弄过许多篇关于LAMP搭建的东西，都是基于最简单包的，这次说说几个比较常用扩展的安装： FreeBSD + Apache + PHP + Mysql (恶搞版) FreeBSD + Apache + PHP + Mysql + Oracle Ubuntu + Apache + PHP + Mysql ，比较简单，正常server版安装结束的最后一步可以选择安装LAMP Ubuntu + nginx + php Ubuntu + php + Oracle Memcache 说起Memcache，这年头稍微大点的网站几乎是必不可少的。内存Key-value一对一数据库，但数据易失。新浪的团队也有个项目是memcachedb，就是以速度为代价，部分数据回写硬盘。但似乎不是memcache的本意，个人觉得不如直接写sql，仁者见仁吧。 For Ubuntu apt-get install memcached php5-memcache /etc/init.d/memcached start For FreeBSD cd /usr/ports/databases/memcached make install clean cd /usr/ports/databases/pecl-memcache make [...]]]></description>
			<content:encoded><![CDATA[<p>之前已经弄过许多篇关于LAMP搭建的东西，都是基于最简单包的，这次说说几个比较常用扩展的安装：</p>
<ul>
<li><a title="用FreeBSD的ports安装apache+php+mysql" href="http://www.litrin.net/2005/11/09/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql/" target="_blank">FreeBSD + Apache + PHP + Mysql</a> (<a title="用FreeBSD的ports安装apache+php+mysql·改" href="http://www.litrin.net/2007/08/01/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql%c2%b7%e6%94%b9/" target="_blank">恶搞版</a>)</li>
<li><a title="FreeBSD+apache+PHP+OCI支持Oracle" href="http://www.litrin.net/2009/06/15/freebsdapachephpoci%e6%94%af%e6%8c%81oracle/" target="_blank">FreeBSD + Apache + PHP + Mysql + Oracle</a></li>
<li>Ubuntu + Apache + PHP + Mysql ，比较简单，正常server版安装结束的最后一步可以选择安装LAMP</li>
<li><a title="Ubuntu下安装Nginx+php(FastCGI)" href="http://www.litrin.net/2010/10/27/ubuntu%e4%b8%8b%e5%ae%89%e8%a3%85nginxphpfastcgi/" target="_blank">Ubuntu + nginx + php</a></li>
<li><a title="配置Ubuntu的php支持OCI8" href="http://www.litrin.net/2009/09/15/%e9%85%8d%e7%bd%aeubuntu%e7%9a%84php%e6%94%af%e6%8c%81oci8/" target="_blank">Ubuntu + php + Oracle</a></li>
</ul>
<p><span id="more-1467"></span></p>
<p><strong>Memcache</strong></p>
<p>说起Memcache，这年头稍微大点的网站几乎是必不可少的。内存Key-value一对一数据库，但数据易失。新浪的团队也有个项目是memcachedb，就是以速度为代价，部分数据回写硬盘。但似乎不是memcache的本意，个人觉得不如直接写sql，仁者见仁吧。</p>
<ul>
<li>For Ubuntu<br />
apt-get install memcached php5-memcache<br />
/etc/init.d/memcached start</li>
<li>For FreeBSD<br />
cd /usr/ports/databases/memcached<br />
make install clean<br />
cd /usr/ports/databases/pecl-memcache<br />
make install clean<br />
echo”memcached_enable=YES” &gt;&gt; /etc/rc.conf<br />
/usr/local/etc/rc.d/memcached start</li>
</ul>
<p><strong>Redis</strong></p>
<p>也是一个Key-value数据库，比起Memcache速度慢一点，但会回写硬盘，数据不丢失。处理Feed之类SQL吃上劲的应用必备。</p>
<ul>
<li>For Ubuntu //11.04可行，8.04不行，官方似乎从904以后才加入的。之前的版本不妨用<a rel="nofollow" target="_blank" href="http://ftp.us.debian.org/debian/pool/main/r/redis/" target="_blank">debian包<br />
</a>apt-get install redis-server php-redis //同样的<a rel="nofollow" target="_blank" href="http://ftp.us.debian.org/debian/pool/main/p/php-radius/" target="_blank">debian包下载</a><br />
/etc/init.d/redis-server start</li>
<li>For Freebsd<br />
cd /usr/ports/databases/redis<br />
make install clean<br />
echo &#8216;redis_enable=”YES”&#8216; &gt;&gt; /etc/rc.conf<br />
/usr/local/etc/rc.d/redis restart<br />
cd /usr/ports/databases/php5-redis<br />
make install clean //敲的条件反射了</li>
</ul>
<p>说起redis的PHP支持类，由于redis是明文的传输，所以很多人会选择<a rel="nofollow" target="_blank" href="https://github.com/jdp/redisent" target="_blank">redisend</a>这类基于socket连接方式的php类——说白了就是模拟telnet 6379。根据实际测试的结果，C扩展至少有40%以上的提升，而且内存更少，加包和拆包的过程更迅速。更何况redisend的前一个版本一堆问题，后一个版本又是php5.3 only的天上一脚，地上一脚的维护也是麻烦。不是万不得已还是少用为妙。</p>
<p><strong>PHP-FPM</strong></p>
<p>这个是给Nginx做fastcgi扩展的，相比php-cgi, spawn-cgi不但性能上有提升，配置上也灵活的多，但FreeBSD不支持，Ubuntu也不官方推荐。这里使用了ubuntu的非官方库。</p>
<p>echo “deb <a rel="nofollow" target="_blank" href="http://php53.dotdeb.org">http://php53.dotdeb.org</a> stable all” &gt;&gt; /etc/apt/sources.list<br />
apt-get update; apt-get upgrade<br />
apt-get install php5-fpm</p>
<p>会直接覆盖之前官方支持的PHP包，请慎重考虑。</p>
<p>/etc/init.d/php5-fpm start</p>
<p><strong>PHP-GD</strong></p>
<p>最常见的缺失，但很容易。</p>
<ul>
<li>For Ubuntu<br />
apt-get install php5-gd</li>
<li>For FreeBSD<br />
cd /usr/ports/graphics/php5-gd<br />
make install clean</li>
</ul>
<p><strong>Minify</strong></p>
<p>Minify是一个基于PHP5的CSS/JS优化包，其实这不属于Php的扩展。</p>
<ol>
<li><a rel="nofollow" target="_blank" href="http://code.google.com/p/minify/">http://code.google.com/p/minify/</a> 下载最新的minify，解压后，将min目录拷贝至网站根目录下。</li>
<li>确认是否开启了apache 的mod_rewrite，Ubuntu默认不开启，需要a2enmod,选择rewrite后,/etc/init.d/apache2 restart 重起apache</li>
<li>网站根目录下编辑.htaccess内容如下：
<pre>RewriteEngine On
        RewriteBase /
         RewriteRule ^(.*\.(css|js))\S?$ min/index.php?f=$1 [L]</pre>
</li>
<li>如果系统已经安装了memcache包，不妨用MC替代文件方式存储优化后的信息，编辑min/config.php，末尾添加
<pre class="php">require 'lib/Minify/Cache/Memcache.php';
$memcache = new Memcache;
$memcache-&gt;connect('localhost', 11211); //根据本地配置调整
$min_cachePath = new Minify_Cache_Memcache($memcache);</pre>
</li>
</ol>
<p><strong>TokyoTyrant (ttServer)</strong></p>
<p>TykyoTyrant想必web game, social game的公司用的很多，大概是由于某家企鹅公司的框架所限吧。这东西就是一个“支持lua扩展并可持续化”的key-value。个人觉得完全可以通过memcache + redis两者取代。</p>
<ul>
<li>for Ubuntu (natty ok, hardy not support)<br />
apt-get install tokyotyrant<br />
/etc/init.d/tokyotyrant 52~53行稍作修改：<br />
52 #SERVERHOST=”$RUNDIR/$NAME.sock”<br />
53 SERVERPORT=1978<br />
即可通过/etc/init.d/tokyotyrant start命令启动1978端口的监听</li>
</ul>
<ul>
<li>for Freebsd<br />
cd /usr/ports/databases/tokyotyrant/<br />
make install clean</li>
</ul>
<div>tokyotyrant有自己的php模块，但习惯上都是通过memcache模块进行操作的，命令等价于memcahce的操作。</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/05/16/lamp%e7%9a%84%e5%b8%b8%e7%94%a8%e6%89%a9%e5%b1%95%e5%ae%89%e8%a3%85/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD ZFS版本升级的问题</title>
		<link>http://www.litrin.net/2010/09/10/freebsd-zfs%e7%89%88%e6%9c%ac%e5%8d%87%e7%ba%a7%e7%9a%84%e9%97%ae%e9%a2%98/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=freebsd-zfs%25e7%2589%2588%25e6%259c%25ac%25e5%258d%2587%25e7%25ba%25a7%25e7%259a%2584%25e9%2597%25ae%25e9%25a2%2598</link>
		<comments>http://www.litrin.net/2010/09/10/freebsd-zfs%e7%89%88%e6%9c%ac%e5%8d%87%e7%ba%a7%e7%9a%84%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 09:32:34 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[网络和安全]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1308</guid>
		<description><![CDATA[之前的文章,介绍FreeBSD下的ZFS。 FreeBSD 8.1比较吸引我的一个重要更新就是将ZFS从测试模块升级到了正式模块。这意味着Zfs已经足够的成熟和稳定了。 闲话不说，我这台主机是用zfs来做nfs服务器。刚升级到了FreeBSD 8.1 stable的版本。 首先，升级zpool的版本 #zpool upgrade -a 接着，升级zfs版本 #zfs upgrade -a 正常情况下zfs的升级就完成了。中间几乎没有延时。 由于zfs需要使用nfs，而且随着zfs成为了正式版本，原本有一个垃圾设置（设不设没效果）sharenfs 已经正式实现了。不去修改的话就会出现nfs被挂装但是无法访问文件的问题。 # zfs set sharenfs=yes  /YOURPATCH 由于默认i386默认没有为zfs开启prefetch（预读），需要在/boot/load.conf中加入vfs.zfs.prefetch_disable=0。 同时，系统vm.kmem_size_max和vm.kmem_size两个设置如果过大的话可能会在系统拷贝大文件时吃光所有内存，设置请慎重。]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.litrin.net/2008/11/19/freebsd%e7%9a%84zfs/" target="_blank">之前的文章,介绍FreeBSD下的ZFS。</a></p>
<p>FreeBSD 8.1比较吸引我的一个重要更新就是将ZFS从测试模块升级到了正式模块。这意味着Zfs已经足够的成熟和稳定了。</p>
<p>闲话不说，我这台主机是用zfs来做nfs服务器。刚升级到了FreeBSD 8.1 stable的版本。</p>
<p><span id="more-1308"></span></p>
<p>首先，升级zpool的版本</p>
<p>#zpool upgrade -a</p>
<p>接着，升级zfs版本</p>
<p>#zfs upgrade -a</p>
<p>正常情况下zfs的升级就完成了。中间几乎没有延时。</p>
<p>由于zfs需要使用nfs，而且随着zfs成为了正式版本，原本有一个垃圾设置（设不设没效果）sharenfs 已经正式实现了。不去修改的话就会出现nfs被挂装但是无法访问文件的问题。</p>
<p># zfs set sharenfs=yes  /YOURPATCH</p>
<p>由于默认i386默认没有为zfs开启prefetch（预读），需要在/boot/load.conf中加入vfs.zfs.prefetch_disable=0。</p>
<p>同时，系统vm.kmem_size_max和vm.kmem_size两个设置如果过大的话可能会在系统拷贝大文件时吃光所有内存，设置请慎重。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/09/10/freebsd-zfs%e7%89%88%e6%9c%ac%e5%8d%87%e7%ba%a7%e7%9a%84%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>通过motd信息简化巡检操作</title>
		<link>http://www.litrin.net/2010/08/17/%e9%80%9a%e8%bf%87motd%e4%bf%a1%e6%81%af%e7%ae%80%e5%8c%96%e5%b7%a1%e6%a3%80%e6%93%8d%e4%bd%9c/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e9%2580%259a%25e8%25bf%2587motd%25e4%25bf%25a1%25e6%2581%25af%25e7%25ae%2580%25e5%258c%2596%25e5%25b7%25a1%25e6%25a3%2580%25e6%2593%258d%25e4%25bd%259c</link>
		<comments>http://www.litrin.net/2010/08/17/%e9%80%9a%e8%bf%87motd%e4%bf%a1%e6%81%af%e7%ae%80%e5%8c%96%e5%b7%a1%e6%a3%80%e6%93%8d%e4%bd%9c/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 01:57:41 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[桌面应用]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1300</guid>
		<description><![CDATA[作为一个Unix系统的管理员，手工巡检几乎成了工作中一个重要的部分。这里不放使用Linux的motd通告信息实现简单的信息通告，至少能省去了不少手工命令的时间。 motd即Message Of ToDay，每天的信息。大部分的固定文本信息放置在/etc/motd下，如果没有你可以直接创建一个，然后修改其中的内容制作一个主机登录Banner以便于区分多台主机。对于Ubuntu来说，特别是启用了server中“landscope管理系统”后，这里没有效果，你需要修改的文件为/etc/motd.tail。 对于部分相对比较保守的Unix版本而言剩下可供修改的并不多，只有通过/etc/issue的方法，除了使用现有的字符，issue还支持参数如下： /l 显示终端机接口号 /m 显示内核的硬件版本 /n 显示主机名 /o 显示 域名 /r 显示操作系统的版本，类似于uname -r  /t 显示本地端时间 /s 操作系统的名称 /v 操作系统的版本 对于比较激进的操作系统（ubuntu就曾经因为motd爆出安全漏洞）那就更灵活了。 Ubuntu： 修改/etc/init.d/bootmisc.sh脚本，其中： uname -snrvm &#62; /var/run/motd         [ -f /etc/motd.tail ] &#38;&#38; cat /etc/motd.tail &#62;&#62; /var/run/motd 我要加入uptime和df -h的信息就修改为： uname -snrvm &#62; /var/run/motd         [ -f /etc/motd.tail ] &#38;&#38; cat /etc/motd.tail &#62;&#62; /var/run/motd [...]]]></description>
			<content:encoded><![CDATA[<p>作为一个Unix系统的管理员，手工巡检几乎成了工作中一个重要的部分。这里不放使用Linux的motd通告信息实现简单的信息通告，至少能省去了不少手工命令的时间。</p>
<p>motd即Message Of ToDay，每天的信息。大部分的固定文本信息放置在/etc/motd下，如果没有你可以直接创建一个，然后修改其中的内容制作一个主机登录Banner以便于区分多台主机。对于Ubuntu来说，特别是启用了server中“landscope管理系统”后，这里没有效果，你需要修改的文件为/etc/motd.tail。</p>
<p><span id="more-1300"></span></p>
<p>对于部分相对比较保守的Unix版本而言剩下可供修改的并不多，只有通过/etc/issue的方法，除了使用现有的字符，issue还支持参数如下：</p>
<p>/l 显示终端机接口号<br />
/m 显示内核的硬件版本<br />
/n 显示主机名<br />
/o 显示 域名<br />
/r 显示操作系统的版本，类似于uname -r <br />
/t 显示本地端时间<br />
/s 操作系统的名称<br />
/v 操作系统的版本</p>
<p>对于比较激进的操作系统（ubuntu就曾经因为motd爆出安全漏洞）那就更灵活了。</p>
<p>Ubuntu：</p>
<p>修改/etc/init.d/bootmisc.sh脚本，其中：</p>
<pre class="bash" name='code'>        uname -snrvm &gt; /var/run/motd
        [ -f /etc/motd.tail ] &amp;&amp; cat /etc/motd.tail &gt;&gt; /var/run/motd</pre>
<p>我要加入uptime和df -h的信息就修改为：</p>
<pre class="bash" name='code'>        uname -snrvm &gt; /var/run/motd
        [ -f /etc/motd.tail ] &amp;&amp; cat /etc/motd.tail &gt;&gt; /var/run/motd
        uptime &gt;&gt; /var/run/motd
        df -h &gt;&gt; /var/run/motd</pre>
<p>重启服务：</p>
<p>/etc/init.d/bootmisc.sh stop<br />
/etc/init.d/bootmisc.sh start // 不支持restart reload等操作</p>
<p>登录查看，成功！</p>
<p>FreeBSD：</p>
<p>其实是一个原理，方式类似：</p>
<p>ee /etc/rc.d/motd</p>
<pre class="bash" name='code'>        uname -v | sed -e 's,^\([^#]*\) #\(.* [1-2][0-9][0-9][0-9]\).*/\([^\]*\) $,\1 (\3) #\2,' &gt; ${T}
        awk '{if (NR == 1) {if ($1 == "FreeBSD") {next} else {print "\n"$0}} else {print}}' &lt; /etc/motd &gt;&gt; ${T}</pre>
<p>改为：</p>
<pre class="bash" name='code'>        uname -v | sed -e 's,^\([^#]*\) #\(.* [1-2][0-9][0-9][0-9]\).*/\([^\]*\) $,\1 (\3) #\2,' &gt; ${T}
        awk '{if (NR == 1) {if ($1 == "FreeBSD") {next} else {print "\n"$0}} else {print}}' &lt; /etc/motd &gt;&gt; ${T}

        uptime &gt;&gt; ${T}
        df -h &gt;&gt; ${T} </pre>
<p>重启</p>
<p> /etc/rc.d/motd stop;  /etc/rc.d/motd start</p>
<p>成功！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/08/17/%e9%80%9a%e8%bf%87motd%e4%bf%a1%e6%81%af%e7%ae%80%e5%8c%96%e5%b7%a1%e6%a3%80%e6%93%8d%e4%bd%9c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个怪异的Cron问题</title>
		<link>http://www.litrin.net/2010/08/13/%e4%b8%80%e4%b8%aa%e6%80%aa%e5%bc%82%e7%9a%84cron%e9%97%ae%e9%a2%98/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25b8%2580%25e4%25b8%25aa%25e6%2580%25aa%25e5%25bc%2582%25e7%259a%2584cron%25e9%2597%25ae%25e9%25a2%2598</link>
		<comments>http://www.litrin.net/2010/08/13/%e4%b8%80%e4%b8%aa%e6%80%aa%e5%bc%82%e7%9a%84cron%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 03:24:22 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1297</guid>
		<description><![CDATA[一个朋友向我咨询他遇到的一个问题。 Centos的操作系统，自然是主流应用的WWW。近期无缘无故的Cron失效，所有的任务都无法执行。多次重启主机，重启Cron服务均是如此。 起先我由于没有拿到控制台，怀疑是Cron经典的环境变量问题，修改了半天也是白忙。总算此兄开恩，将root的权限给了我。:) 登入主机，crontab -l，所有命令都正常，单独执行也都OK。跑到/var/spool/cron下也没有发现有什么文件权限之类的问题。 每天都被cron mail挤爆信箱的我觉的从邮件入手吧。谁知那位兄弟没有配置邮件系统，而且直接disable了sendmail服务。 这里需要说明的是，Crontab 默认会将定时执行的结果通过mail返回给用户。如果没有启动Sendmail服务，系统（确切的应该是sendmail程序）将会把每一个结果保存为一个文件，放置在/var/spool/clientmqueue下。 cd /var/spool/clientmqueue 呵呵，果然！等了半个多小时愣是没有给list出来。du -sh 也是个费时费力的操作了。 mv * 太慢，直接 ls &#124; xargs rm 操作，清空了所有的文件，重试了一下，搞定！ 解决此类方法的建议： 开启sendmail服务，这是最佳途径。 每条命令使用 &#8216;&#62;&#62;&#8217;  指向一个日志文件，如果觉得返回没有必要，就直接  &#62;&#62; /dev/null 2&#62;&#38;1 丢弃掉。 更加变态的方式就是再加一条cron，定期清空 /var/spool/clientmqueue PS： 之前没有弄过，完成测试的时候才理清的一个Cron问题： 30 3 * * 1 dosomething ,是每周一3点半执行是确信无疑的了。 30 3 1 * 1 dosomething, 是当1号是周一的时候执行吗？不是！是1号，或者周一的时候执行。crontab中的星期是一个“或”的概念，而非其他的“和”的概念。]]></description>
			<content:encoded><![CDATA[<p>一个朋友向我咨询他遇到的一个问题。</p>
<p>Centos的操作系统，自然是主流应用的WWW。近期无缘无故的Cron失效，所有的任务都无法执行。多次重启主机，重启Cron服务均是如此。</p>
<p>起先我由于没有拿到控制台，怀疑是Cron经典的环境变量问题，修改了半天也是白忙。总算此兄开恩，将root的权限给了我。:)</p>
<p><span id="more-1297"></span></p>
<p>登入主机，crontab -l，所有命令都正常，单独执行也都OK。跑到/var/spool/cron下也没有发现有什么文件权限之类的问题。</p>
<p>每天都被cron mail挤爆信箱的我觉的从邮件入手吧。谁知那位兄弟没有配置邮件系统，而且直接disable了sendmail服务。</p>
<p>这里需要说明的是，Crontab 默认会将定时执行的结果通过mail返回给用户。如果没有启动Sendmail服务，系统（确切的应该是sendmail程序）将会把每一个结果保存为一个文件，放置在/var/spool/clientmqueue下。</p>
<p>cd /var/spool/clientmqueue 呵呵，果然！等了半个多小时愣是没有给list出来。du -sh 也是个费时费力的操作了。</p>
<p>mv * 太慢，直接 ls | xargs rm 操作，清空了所有的文件，重试了一下，搞定！</p>
<p>解决此类方法的建议：</p>
<ol>
<li>开启sendmail服务，这是最佳途径。</li>
<li>每条命令使用 &#8216;&gt;&gt;&#8217;  指向一个日志文件，如果觉得返回没有必要，就直接  &gt;&gt; /dev/null 2&gt;&amp;1 丢弃掉。</li>
<li>更加变态的方式就是再加一条cron，定期清空 /var/spool/clientmqueue</li>
</ol>
<p>PS：</p>
<p>之前没有弄过，完成测试的时候才理清的一个Cron问题：</p>
<p>30 3 * * 1 dosomething ,是每周一3点半执行是确信无疑的了。<br />
30 3 1 * 1 dosomething, 是当1号是周一的时候执行吗？不是！是1号，或者周一的时候执行。crontab中的星期是一个“或”的概念，而非其他的“和”的概念。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/08/13/%e4%b8%80%e4%b8%aa%e6%80%aa%e5%bc%82%e7%9a%84cron%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>用ssh tunnel打造安全邮件系统</title>
		<link>http://www.litrin.net/2010/02/03/%e7%94%a8ssh-tunnel%e6%89%93%e9%80%a0%e5%ae%89%e5%85%a8%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e7%2594%25a8ssh-tunnel%25e6%2589%2593%25e9%2580%25a0%25e5%25ae%2589%25e5%2585%25a8%25e9%2582%25ae%25e4%25bb%25b6%25e7%25b3%25bb%25e7%25bb%259f</link>
		<comments>http://www.litrin.net/2010/02/03/%e7%94%a8ssh-tunnel%e6%89%93%e9%80%a0%e5%ae%89%e5%85%a8%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 14:33:01 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[桌面应用]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1156</guid>
		<description><![CDATA[近期，甚至于连Google这样的企业也感觉到了邮件系统的安全问题。这里采用了相对实现成本较低的方式，通过ssh的tunnel达到邮件在传输的过程中不会受到中间人攻击造成数据泄露。 故名思义，tunnel就是在邮件服务器和企业防火墙之后设置一条逻辑上的隧道。这条隧道一方面为了数据安全，另一方面，由于ssh的压缩功能也能在一定程度上减少邮件这类纯文本传输的网络需求。 先决条件： Unix like的邮件系统，并安装了ssh-server，本例中假定邮件服务器ip为1.2.3.4 企业路由器和内网：路由最好有vpn和防火墙功能。 内网的 一台主机，配置不必太高（我用了虚拟机，64M内存已经足够近百人使用），安装有ssh-client，如果是win主机，推荐使用putty的安装版本。经过测试，个人觉得FreeBSD下的性能较好。考虑到安全，这台主机尽量不要安装远程控制台并尽可能上锁。本例假定ip 192.168.1.1。 注意整个系统的安全策略，账户策略等，相比中间人攻击这样的“高级”黑客行为，破解密码，利用漏洞永远是成本最低的方法。 第一步：设置公钥方式登录： 内网主机上运行mkdir -p ~/.ssh;cd ~/.ssh;ssh-keygen –d，如果变态一点可以使用ssh-keygen -b 4096 -d增加强度，之后 不要输入任何信息，一律回车带过，很多人不能实现ssh的无验证通过，大多是因为这里没有弄好。这样~/.ssh目录下将会出现id_dsa 和id_dsa.pub两个文件。 将内网主机的id_dsa.pub文件拷贝邮件服务器，并在邮件服务器上执行cat id_dsa.pub &#62;&#62; ~/.ssh/authorized_keys 。尝试在内网主机上执行 ssh A主机的IP ，成功地话应该没有提示密码（即直接得到A主机的控制台）。 如果经常来小站做客的朋友会觉得这段很熟，没错它贴自这里，如果你用了windows作为内网主机，请参考这里的内容。 第二步：配置管道： 写个脚本 vi /usr/sbin/ssh_tunnel #!/bin/sh localIP='192.168.1.1' removteIP='1.2.3.4' ports='25 80 110' #3个端口，smtp http pop3 for port in $ports do /usr/bin/ssh -C -N -f -L $localIP:$port:$removteIP:$port root@$removteIP [...]]]></description>
			<content:encoded><![CDATA[<p>近期，甚至于连Google这样的企业也感觉到了邮件系统的安全问题。这里采用了相对实现成本较低的方式，通过ssh的tunnel达到邮件在传输的过程中不会受到中间人攻击造成数据泄露。</p>
<p>故名思义，tunnel就是在邮件服务器和企业防火墙之后设置一条逻辑上的隧道。这条隧道一方面为了数据安全，另一方面，由于ssh的压缩功能也能在一定程度上减少邮件这类纯文本传输的网络需求。</p>
<p>先决条件：</p>
<ol>
<li>Unix like的邮件系统，并安装了ssh-server，本例中假定邮件服务器ip为1.2.3.4</li>
<li>企业路由器和内网：路由最好有vpn和防火墙功能。</li>
<li>内网的 一台主机，配置不必太高（我用了虚拟机，64M内存已经足够近百人使用），安装有ssh-client，如果是win主机，推荐使用putty的安装版本。经过测试，个人觉得FreeBSD下的性能较好。考虑到安全，这台主机尽量不要安装远程控制台并尽可能上锁。本例假定ip 192.168.1.1。</li>
<li>注意整个系统的安全策略，账户策略等，相比中间人攻击这样的“高级”黑客行为，破解密码，利用漏洞永远是成本最低的方法。</li>
</ol>
<p><span id="more-1156"></span></p>
<div id="attachment_1161" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2010/02/ssh_tunnel.gif"><img class="size-medium wp-image-1161" title="ssh_tunnel" src="http://www.litrin.net/wp-content/uploads/2010/02/ssh_tunnel-300x115.gif" alt="SSH隧道实现安全mail" width="300" height="115" /></a><p class="wp-caption-text">SSH隧道实现安全Mail系统示意</p></div>
<p>第一步：设置公钥方式登录：</p>
<p>内网主机上运行mkdir -p ~/.ssh;cd ~/.ssh;<em>ssh-keygen –d，</em>如果变态一点可以使用ssh-keygen -b 4096 -d增加强度，之后<em> </em>不要输入任何信息，<strong>一律回车带过</strong>，很多人不能实现ssh的无验证通过，大多是因为这里没有弄好。这样~/.ssh目录下将会出现id_dsa 和id_dsa.pub两个文件。</p>
<p>将内网主机的id_dsa.pub文件拷贝邮件服务器，<strong>并在邮件服务器</strong><strong>上执行</strong><em>cat id_dsa.pub &gt;&gt; ~/.ssh/authorized_keys 。</em><strong>尝试在内网主机</strong><strong>上执行</strong> <em>ssh A</em><em>主机的IP </em>，成功地话应该没有提示密码（即直接得到A主机的控制台）。</p>
<p>如果经常来小站做客的朋友会觉得这段很熟，没错它贴自<a href="http://www.litrin.net/2007/09/29/%E6%90%AD%E5%BB%BA%E9%80%9A%E8%BF%87ssh%E5%8A%A0%E5%AF%86%E9%AA%8C%E8%AF%81%E7%9A%84rsync/" target="_blank">这里</a>，如果你用了windows作为内网主机，请参考<a href="http://www.litrin.net/2006/04/10/%E7%94%A8publickey%E9%AA%8C%E8%AF%81%E7%99%BB%E5%BD%95ssh%E6%9C%8D%E5%8A%A1%E5%99%A8/" target="_blank">这里的内容</a>。</p>
<p>第二步：配置管道：</p>
<div id="_mcePaste">写个脚本 vi /usr/sbin/ssh_tunnel</div>
<pre name=code class=bash>
#!/bin/sh
localIP='192.168.1.1'
removteIP='1.2.3.4'
ports='25 80 110' #3个端口，smtp http pop3
for port in $ports
do
    /usr/bin/ssh -C -N -f -L $localIP:$port:$removteIP:$port root@$removteIP  &#038;
done
chmod 755 /usr/sbin/ssh_tunnel
</pre>
<p>修改rc.local文件，在其中加入 /usr/sbin/ssh_tunnel，当然要放在exit那条之前。</p>
<p>windows不是很熟，写个笨蛋批处理吧ssh_tunnel.cmd</p>
<pre name=code class=bash>
start /min cmd /c 'C:\Program Files\PuTTY\plink.exe' -C -N -f -L 192.168.1.1:25:1.2.3.4:25 root@1.2.3.4
start /min cmd /c 'C:\Program Files\PuTTY\plink.exe' -C -N -f -L 192.168.1.1:80:1.2.3.4:80 root@1.2.3.4
start /min cmd /c 'C:\Program Files\PuTTY\plink.exe' -C -N -f -L 192.168.1.1:110:1.2.3.4:110 root@1.2.3.4
</pre>
<p>其实putty的那个plink效果完全等同于ssh，当然，win下面主要是用里面的窗口程序，大多数人不怎么用而已。win下比较烦的是每次重起后都要手工加载key，执行这个批处理。希望对win熟的朋友可以提供自动解决方法。</p>
<p>第三步：设置邮件服务器防火墙</p>
<p>通过邮件服务的防火墙关闭除25和22之外的所有端口。这样做是最安全的，但这样的后果是在企业局域网之外只能发不能收邮件。VPN是比较好的折中方案。当然，如果你的邮件系统只需要内部收发邮件（那还要什么邮件系统？），你尽可以连25号也封上。</p>
<p>第四步：设置本地邮件客户端</p>
<p>将局域网内所有邮件客户端的smtp和pop都设置为192.168.1.1即可。我这里由于用了webmail，webmail同样也通过192.168.1.1访问<br />
如果企业有自己的DNS服务器，甚至整个公司都在域管理模式之下。不妨通过本地的DNS服务器用本地IP覆盖掉外网真实IP。这样即便没有vpn，只要不封邮件服务器的110端口，在邮件客户端中设置域名，对用户来说在任何地方都是透明的。</p>
<p>总结：</p>
<ul>
<li>这种模式，从邮件服务器到企业局域网内的传输是加密透明的，外部很难窃取，如果定期为两边的ssh更换强化的秘钥，效果几乎可以达到变态的要求。据说4096位的秘钥的破解成本已经到了天文数字。</li>
<li>这种方式相对成本较低，不需要太多的投入，特别是在多个分支机构之间成本优势更加突出。本想通过smtp的tls和pop的SSL进行加密，可outlook下对没有根秘证书签名的秘钥会弹出讨厌的警告框，反而增加了用户的不安。申请根证书的签名价格也不菲。</li>
<li>由于企业的邮件系统最多的邮件往往来自于内部，这种方式可以减少差不多一半以上的互联网带宽。把带宽留给更重要的应用。</li>
<li>同理，利用此种方式可以实现其他多种安全方案，达到双宿主机或者多机虚拟的效果，进而可以为企业节约宝贵的外网IP资源。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/02/03/%e7%94%a8ssh-tunnel%e6%89%93%e9%80%a0%e5%ae%89%e5%85%a8%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>FreeBSD+apache+PHP+OCI支持Oracle</title>
		<link>http://www.litrin.net/2009/06/15/freebsdapachephpoci%e6%94%af%e6%8c%81oracle/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=freebsdapachephpoci%25e6%2594%25af%25e6%258c%2581oracle</link>
		<comments>http://www.litrin.net/2009/06/15/freebsdapachephpoci%e6%94%af%e6%8c%81oracle/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 10:08:54 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/2009/06/15/freebsdapachephpoci%e6%94%af%e6%8c%81oracle/</guid>
		<description><![CDATA[由于FreeBSD的Port中自带了oracle-client可用，但仅支持i386的平台，故此文仅针对于i386，AMD64无法实现oci的连接库。 首先，确定你已经安装好apache + php，没有安装的可以参考这里或者文学化的这里 安装php5-oci8 cd /usr/ports/database/php5-oci8 make install clean 安装到这里，Php的OCI8库已经安装成功，但需要对oracle-client进行设置，否则无法使用。 将tnsnames.ora拷贝到/usr/local/oracle8-client/network/admin/ 目录下 内容大致如下： ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL) ) ) 由于php默认只会在/etc目录下查找该目录，这里我做了一个手工链接 ln -s /usr/local/oracle8-client/network/admin/tnsnames.ora /etc/tnsnames.ora tnsnames已经配置完成，但对于非ASCII字符集最容setenv NLS_LANG 易出现的问题就是乱码了，这里要设置一下。 killall httpd //杀掉httpd进程，我曾经碰到过apachectl无效的情况 ee /usr/local/sbin/apachectl 在第二行加入： setenv american_america.UTF8 setenv ORACLE_HOME [...]]]></description>
			<content:encoded><![CDATA[<p>由于FreeBSD的Port中自带了oracle-client可用，但仅支持i386的平台，故此文仅针对于i386，AMD64无法实现oci的连接库。</p>
<p>首先，确定你已经安装好apache + php，没有安装的可以参考<a href="http://www.litrin.net/2005/11/09/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql/comment-page-1/#comment-1345" target="_blank">这里</a>或者文学化的<a href="http://www.litrin.net/2007/08/01/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql%c2%b7%e6%94%b9/" target="_blank">这里</a></p>
<p>安装php5-oci8</p>
<p>cd /usr/ports/database/php5-oci8<br />
make install clean</p>
<p>安装到这里，Php的OCI8库已经安装成功，但需要对oracle-client进行设置，否则无法使用。</p>
<p>将tnsnames.ora拷贝到/usr/local/oracle8-client/network/admin/ 目录下<br />
内容大致如下：<span id="more-1026"></span></p>
<p>ORCL =<br />
(DESCRIPTION =<br />
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))<br />
(CONNECT_DATA =<br />
(SERVER = DEDICATED)<br />
(SERVICE_NAME = ORCL)<br />
)<br />
)<br />
<!--break--><br />
由于php默认只会在/etc目录下查找该目录，这里我做了一个手工链接<br />
ln -s /usr/local/oracle8-client/network/admin/tnsnames.ora /etc/tnsnames.ora</p>
<p>tnsnames已经配置完成，但对于非ASCII字符集最容setenv NLS_LANG<br />
易出现的问题就是乱码了，这里要设置一下。<br />
killall httpd //杀掉httpd进程，我曾经碰到过apachectl无效的情况<br />
ee /usr/local/sbin/apachectl<br />
在第二行加入：<br />
setenv american_america.UTF8<br />
setenv ORACLE_HOME /usr/local/oracle8-client</p>
<p>开启apache<br />
apachectl start</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/06/15/freebsdapachephpoci%e6%94%af%e6%8c%81oracle/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>踩到雷</title>
		<link>http://www.litrin.net/2009/03/20/%e8%b8%a9%e5%88%b0%e9%9b%b7/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e8%25b8%25a9%25e5%2588%25b0%25e9%259b%25b7</link>
		<comments>http://www.litrin.net/2009/03/20/%e8%b8%a9%e5%88%b0%e9%9b%b7/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 00:55:36 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Mail]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=857</guid>
		<description><![CDATA[公司的邮件服务器升级了一下perl，从5.8.8到5.8.9。只为更好的支持更新版本的webmail程序。按理说作为FreeBSD系统，升级下perl不是什么困难的事情，可真正的问题才刚刚开始。 首先是要伴随perl升级一系列的模块，这似乎也不是难事。然后是执行perl-after-upgrade。一切似乎很顺利。随意习惯性的top了一下，发觉负载已经高达60%以上，而且是邮件系统的MailScanner的进程奇高。考虑到MailScanner引用了perl，很明显的需要restart一下。这时候问题来了。 restart之后，邮件不能正常接收，检查原因，发觉邮件在MailScanner中不停的check。赶紧检查日志，很明显的报错： MailScanner[66402]: Could not use Custom Function code /usr/local/lib/MailScanner/MailScanner/CustomFunctions/GenericSpamScanner.pm, it could not be “require”d. Make sure the last line of the file says “1 调用万能的google，关键字perl5.8.9 MailScanner，发觉通篇都是与我一样的报错，最新的记录似乎也没多远。貌似是我幸运的踩到了雷。 临时处理方法其实也是非常简单的——退回到perl5.8.8就OK。]]></description>
			<content:encoded><![CDATA[<p>公司的邮件服务器升级了一下perl，从5.8.8到5.8.9。只为更好的支持更新版本的webmail程序。按理说作为FreeBSD系统，升级下perl不是什么困难的事情，可真正的问题才刚刚开始。</p>
<p>首先是要伴随perl升级一系列的模块，这似乎也不是难事。然后是执行perl-after-upgrade。一切似乎很顺利。随意习惯性的top了一下，发觉负载已经高达60%以上，而且是邮件系统的MailScanner的进程奇高。考虑到MailScanner引用了perl，很明显的需要restart一下。这时候问题来了。</p>
<p>restart之后，邮件不能正常接收，检查原因，发觉邮件在MailScanner中不停的check。赶紧检查日志，很明显的报错：</p>
<p><strong>MailScanner[66402]: Could not use Custom Function code /usr/local/lib/MailScanner/MailScanner/CustomFunctions/GenericSpamScanner.pm, it could not be “require”d. Make sure the last line of the file says “1</strong></p>
<p>调用万能的google，关键字perl5.8.9 MailScanner，发觉通篇都是与我一样的报错，最新的记录似乎也没多远。貌似是我幸运的踩到了雷。</p>
<p>临时处理方法其实也是非常简单的——退回到perl5.8.8就OK。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/03/20/%e8%b8%a9%e5%88%b0%e9%9b%b7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD的ZFS</title>
		<link>http://www.litrin.net/2008/11/19/freebsd%e7%9a%84zfs/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=freebsd%25e7%259a%2584zfs</link>
		<comments>http://www.litrin.net/2008/11/19/freebsd%e7%9a%84zfs/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 14:29:14 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=497</guid>
		<description><![CDATA[ZFS是sun跟随opensolaris项目一并开源的存储解决方案。具体的优势可以参考这里 。 本文不做累述。总之，使用ZFS可以将所有系统的裸存储设备都利用起来&#8212;&#8212;小到磁盘，大到盘柜，都不需要考虑具体的容量分配。相对来说是低成本的存储解决方案。 Freebsd近期也引入了ZFS这一存储格式，作为存储服务器，个人觉得用Solaris远没有Freebsd成本来的低。具体操作如下： 首先，照例的更新版本库，升级内核 ＃cvsup -h cvsup.cn.freebsd.org /usr/share/examples/cvsup/stable-supfile&#160; //漫长的等待 ＃cd /usr/src #make buildkernel ; make installkernel //更加漫长的等待 ＃halt 关机后为系统安装磁盘，这边由于是测试环境，采用了一个磁盘的两个分区为例。如果是生产环境，建议采用至少2块以上的硬盘作为ZFS的物理设备。 ＃echo &#34;zfs_enable=YES&#34; &#62;&#62; /etc/rc.conf # /etc/rc.d/zfs start //启用ZFS服务 # echo ”daily_status_zfs_enable=&#34;YES&#34;” &#62;&#62; /etc/periodic.conf //自动更新 开始设置ZFS库 #zpool zpool create zfs raidz ad7s1 ad7s2 这里要注意的是raidz参数可以用mirror、raidz1（raidz默认）、raidz2来代替，分别相当于传统上的Raid 1 Raid5和Raid6 # zpool status zfs &#160; pool: zfs &#160;state: ONLINE &#160;scrub: [...]]]></description>
			<content:encoded><![CDATA[<p>ZFS是sun跟随<a rel="nofollow" target="_blank" href="http://www.opensolaris.org" target="_blank">opensolaris</a>项目一并开源的存储解决方案。具体的优势可以参考<a rel="nofollow" target="_blank" target="_blank" href="http://blog.ccw.com.cn/blog.php?do-showone-uid-143215-itemid-13017-type-blog-type-blog.html">这里</a> 。 本文不做累述。总之，使用ZFS可以将所有系统的裸存储设备都利用起来&mdash;&mdash;小到磁盘，大到盘柜，都不需要考虑具体的容量分配。相对来说是低成本的存储解决方案。</p>
<p><a rel="nofollow" target="_blank" href="http://www.freebsd.org" target="_blank">Freebsd</a>近期也引入了ZFS这一存储格式，作为存储服务器，个人觉得用Solaris远没有Freebsd成本来的低。具体操作如下：</p>
<p>首先，照例的更新版本库，升级内核</p>
<p><em>＃cvsup -h cvsup.cn.freebsd.org /usr/share/examples/cvsup/stable-supfile&nbsp; //漫长的等待</em></p>
<p><em>＃cd /usr/src</em></p>
<p><em>#make buildkernel ; make installkernel //更加漫长的等待</em></p>
<p><em>＃halt</em></p>
<p>关机后为系统安装磁盘，这边由于是测试环境，采用了一个磁盘的两个分区为例。如果是生产环境，建议采用至少2块以上的硬盘作为ZFS的物理设备。</p>
<p><em>＃echo &quot;zfs_enable=YES&quot; &gt;&gt; /etc/rc.conf<br />
</em></p>
<p><em># /etc/rc.d/zfs start //启用ZFS服务<br />
</em></p>
<p><em># echo ”daily_status_zfs_enable=&quot;YES&quot;” &gt;&gt; /etc/periodic.conf //自动更新</em></p>
<p>开始设置ZFS库</p>
<p><em>#zpool zpool create zfs <u>raidz</u> ad7s1 ad7s2 </em></p>
<p>这里要注意的是raidz参数可以用mirror、raidz1（raidz默认）、raidz2来代替，分别相当于传统上的Raid 1 Raid5和Raid6</p>
<p><em># zpool status zfs<br />
&nbsp; pool: zfs<br />
&nbsp;state: ONLINE<br />
&nbsp;scrub: scrub completed with 0 errors on Wed Nov 19 05:11:29 2008<br />
config:</p>
<p>&nbsp;&nbsp;&nbsp; NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STATE&nbsp;&nbsp;&nbsp;&nbsp; READ WRITE CKSUM<br />
&nbsp;&nbsp;&nbsp; zfs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ONLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
&nbsp;&nbsp;&nbsp; &nbsp; raidz1&nbsp;&nbsp;&nbsp; ONLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ad7s1&nbsp;&nbsp; ONLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ad7s2&nbsp;&nbsp; ONLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0</p>
<p>errors: No known data errors</em><br />
&nbsp;</p>
<p>恭喜，ZSF pool已经成功！</p>
<p>然后是创建文件系统：<em><br />
</em></p>
<p><em>＃ zfs create zfs/www</em></p>
<p>如果成功，系统将会出现/zfs/www目录</p>
<p><em># mount<br />
/dev/ad4s1a on / (ufs, local)<br />
devfs on /dev (devfs, local)<br />
/dev/ad4s1g on /data (ufs, local, soft-updates)<br />
/dev/ad4s1e on /tmp (ufs, local, soft-updates)<br />
/dev/ad4s1f on /usr (ufs, local, soft-updates)<br />
/dev/ad4s1d on /var (ufs, local, soft-updates)<br />
zfs on /zfs (zfs, local)<br />
zfs/www on /zfs/www (zfs, local)<br />
</em></p>
<p>设置文件系统参数： <em> </em></p>
<p><em>#zfs set compression=gzip zfs/www //设置自动做gzip</em></p>
<p>设置NFS共享：</p>
<p><em>＃zfs share zfs/www</em></p>
<p>搞定！</p>
<p>具体命令解释可以参考<a rel="nofollow" target="_blank" target="_blank" href="http://docs.sun.com/app/docs/doc/819-7065">SUN的官方文档</a></p>
<p>题外话：</p>
<p>总觉的ZFS的思想有些超前，128位的文件系统倒可以先不谈。光是自动设置gzip这一项，可真是考验机器的设置。4核的Xeon搞个500M左右的文件竟然花费了n久，何况几年前？SUN的技术始终是这么的接近于&rdquo;实现的边缘&ldquo;也难怪SUN这些日子可不是那么好过。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2008/11/19/freebsd%e7%9a%84zfs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>用FreeBSD的ports安装apache+php+mysql·改</title>
		<link>http://www.litrin.net/2007/08/01/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql%c2%b7%e6%94%b9/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e7%2594%25a8freebsd%25e7%259a%2584ports%25e5%25ae%2589%25e8%25a3%2585apachephpmysql%25c2%25b7%25e6%2594%25b9</link>
		<comments>http://www.litrin.net/2007/08/01/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql%c2%b7%e6%94%b9/#comments</comments>
		<pubDate>Wed, 01 Aug 2007 01:10:17 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=459</guid>
		<description><![CDATA[ 正如我一贯习惯于规律性的工作和生活一样，昨天，我按照惯例在以往的时间，用电脑里的outlook软件收信——天热，纵然室内空调的温度已经远远低于官方标准的26度，人毕竟还是没有冷天来的那么清醒。如果从心理学的角度上讲，也许那时的我正处在“意识朦胧状态”。除了正如以往枯燥的工作E-mail之外，我收到了一封网友的E-mail。出乎意料的是，不同于往常访客在浏览了我的个人网页以后会在文章后面发表评论，这次却是发了mail。既然如此，我觉得mail一定是重要的，至少体现了相当一部分访客的心情吧。 那篇E-mail不长，在我的电脑上显示下来仅仅只有三行不到的样子，大抵的内容无非是说本站如何如何的帮了忙，我不免沾沾自喜起来——正如往常的沾沾自喜一样，mail的结尾处指出了小站的几个问题，最重要的是说很多文章过于流程化了，没有一点文字上的修饰和润色，言外之意是字里行间缺乏应有的优雅和细致。要指明的是，所谓优雅和细致，正是目前白领文学或者说白领文化所擅长的。说到白领文化的代表，我想村上春树的小说（或者说林少华翻译的日本小说）、伍佰的歌词、汪家卫的台词、小女人的blog绝对可以作为代表。作为我，从来没有当作自己是白领的一员——乏味的代码、吵闹的机房、灰尘遍布的机架，也许能跟这些词句联系上的只有“体力劳动”一个词了。我固然写不出优雅和细致，字里行间唯独只有王朔依稀的身影。于是我决定做一个尝试，既然有这样的需求，按照目前常说的一句话似乎叫做“需求第一”吧，我决定润色并重写本站访问量最高的那篇文章……   以上，正如以往话剧前面总有一个人上来讲述故事背景一样，是本文的开场白，别急，正剧马上就要开始了，当然希望您读的时候也要用优雅而细致的语调默默的朗读。 那时大概在前年的下班年，我一个正处在技术大崩溃边缘的技术人员，为了给自己制作一个技术性的网站（正如您现在看到的那样，就是本站了），要用FreeBSD平台的操作系统build一个万维网系统。 在此之前，看了网上很多安装apache php以及mysql的文章，唯独可惜是，其中大多都是用在林纳克斯的OS中的，不知为何，大多是用源代码编译的步骤教程，而其余的，Rpm（redhat programs manager )又占去了绝大部分。几乎寻觅不到FreeBSD平台下有关于Ports安装的一点讯息。于是我决定写一篇这样的东西，以免让大家舍近求远。 需要在所有的工作开始之前confirm的是，将您的主机连接到互联网之上且网路配置吻合，虽然这是句笑话，但似乎很多人都在这里遇到了坎坷。 连接好控制台，轻击键盘，键入命令： cvsup -h cvsup.freebsd.org /usr/share/example/cvsup/ports-supfile 这条命令的大体意思是从互联网上同步一下ports，以防止后续的工作中出现不必要的麻烦。 接下来的步骤就是要安装database了，Mysql纵然在严酷而恶劣下的环境还可以迅即的完成数据检索，为此Mysql成了我的首选。我的手指轻轻滑过键盘，屏幕出现了： cd /usr/ports/databases/mysql50-server/ make install clean ;rehash 不知过了多久，在我回忆了我虚度的童年时光之后——也许吧，可能时光流逝的还要慢一点，总之，一阵漫长的时光度过之后，Mysql已经成为了电脑中的一分子。接下来呢？配置mysql吧：cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf 可见我电脑中资源少的可怜，我仅仅只有权力使用小内存模式启动mysql，如果条件允许您这样做的话，您可以尝试 my-big.cnf 甚至于 my-huge.cnf mysql_install_db -u mysql ; mysqld_safe -u mysql &#38; 看看mysql是否已经能够start]]></description>
			<content:encoded><![CDATA[<p> 正如我一贯习惯于规律性的工作和生活一样，昨天，我按照惯例在以往的时间，用电脑里的outlook软件收信——天热，纵然室内空调的温度已经远远低于官方标准的26度，人毕竟还是没有冷天来的那么清醒。如果从心理学的角度上讲，也许那时的我正处在“意识朦胧状态”。除了正如以往枯燥的工作E-mail之外，我收到了一封网友的E-mail。出乎意料的是，不同于往常访客在浏览了我的个人网页以后会在文章后面发表评论，这次却是发了mail。既然如此，我觉得mail一定是重要的，至少体现了相当一部分访客的心情吧。</p>
<p>那篇E-mail不长，在我的电脑上显示下来仅仅只有三行不到的样子，大抵的内容无非是说本站如何如何的帮了忙，我不免沾沾自喜起来——正如往常的沾沾自喜一样，mail的结尾处指出了小站的几个问题，最重要的是说很多文章过于流程化了，没有一点文字上的修饰和润色，言外之意是字里行间缺乏应有的优雅和细致。要指明的是，所谓优雅和细致，正是目前白领文学或者说白领文化所擅长的。说到白领文化的代表，我想村上春树的小说（或者说林少华翻译的日本小说）、伍佰的歌词、汪家卫的台词、小女人的blog绝对可以作为代表。作为我，从来没有当作自己是白领的一员——乏味的代码、吵闹的机房、灰尘遍布的机架，也许能跟这些词句联系上的只有“体力劳动”一个词了。我固然写不出优雅和细致，字里行间唯独只有王朔依稀的身影。于是我决定做一个尝试，既然有这样的需求，按照目前常说的一句话似乎叫做“需求第一”吧，我决定润色并重写本站访问量最高的<a href="http://www.litrin.net/2005/11/09/%E7%94%A8freebsd%E7%9A%84ports%E5%AE%89%E8%A3%85apachephpmysql/" target="_blank">那篇文章……</a></p>
<p> <span id="more-459"></span></p>
<p>以上，正如以往话剧前面总有一个人上来讲述故事背景一样，是本文的开场白，别急，正剧马上就要开始了，当然希望您读的时候也要用优雅而细致的语调默默的朗读。</p>
<p>那时大概在前年的下班年，我一个正处在技术大崩溃边缘的技术人员，为了给自己制作一个技术性的网站（正如您现在看到的那样，就是本站了），要用FreeBSD平台的操作系统build一个万维网系统。</p>
<p>在此之前，看了网上很多安装apache php以及mysql的文章，唯独可惜是，其中大多都是用在林纳克斯的OS中的，不知为何，大多是用源代码编译的步骤教程，而其余的，Rpm（redhat programs manager )又占去了绝大部分。几乎寻觅不到FreeBSD平台下有关于Ports安装的一点讯息。于是我决定写一篇这样的东西，以免让大家舍近求远。</p>
<p>需要在所有的工作开始之前confirm的是，将您的主机连接到互联网之上且网路配置吻合，虽然这是句笑话，但似乎很多人都在这里遇到了坎坷。</p>
<p>连接好控制台，轻击键盘，键入命令：<br />
cvsup -h cvsup.freebsd.org /usr/share/example/cvsup/ports-supfile<br />
这条命令的大体意思是从互联网上同步一下ports，以防止后续的工作中出现不必要的麻烦。</p>
<p>接下来的步骤就是要安装database了，Mysql纵然在严酷而恶劣下的环境还可以迅即的完成数据检索，为此Mysql成了我的首选。我的手指轻轻滑过键盘，屏幕出现了：<br />
cd /usr/ports/databases/mysql50-server/<br />
make install clean ;rehash<br />
不知过了多久，在我回忆了我虚度的童年时光之后——也许吧，可能时光流逝的还要慢一点，总之，一阵漫长的时光度过之后，Mysql已经成为了电脑中的一分子。接下来呢？配置mysql吧：cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf<br />
可见我电脑中资源少的可怜，我仅仅只有权力使用小内存模式启动mysql，如果条件允许您这样做的话，您可以尝试 my-big.cnf 甚至于 my-huge.cnf<br />
mysql_install_db -u mysql ; mysqld_safe -u mysql &amp;<br />
看看mysql是否已经能够start</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2007/08/01/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql%c2%b7%e6%94%b9/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>使用带有Dtrace的FreeBSD</title>
		<link>http://www.litrin.net/2006/10/11/%e4%bd%bf%e7%94%a8%e5%b8%a6%e6%9c%89dtrace%e7%9a%84freebsd/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bd%25bf%25e7%2594%25a8%25e5%25b8%25a6%25e6%259c%2589dtrace%25e7%259a%2584freebsd</link>
		<comments>http://www.litrin.net/2006/10/11/%e4%bd%bf%e7%94%a8%e5%b8%a6%e6%9c%89dtrace%e7%9a%84freebsd/#comments</comments>
		<pubDate>Wed, 11 Oct 2006 08:07:45 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=406</guid>
		<description><![CDATA[Dtrace( Dynamic tracing ),原本是Solaris 10中的新特性。它允许用户跟踪系统内核以及用户进程。是非常优秀的诊断工具。自从OpenSolaris之后，这种特性也被移植到了FreeBSD。需要说明的是，Dtrace的操作均通过内核中的prob来进行的，这需要新的内核，故Dtrace功能的内核不会出现在6.X版本中，要想体验Dtrace，目前还必须使用特殊的FreeBSD内核。 编辑特殊的cvsup ： *default host=cvsup10.freebsd.org*default base=/usr*default prefix=/usr/src*default release=cvs*default delete use-rel-suffixp4-cvs-dtrace Dtarce For FreeBSD正处于测试阶段，故目前仅有cvsup10.freebsd.org一台主机提供同步。 CVSUP并成功编译后，重启主机。注意的是由于该代码树并非stable，并不保证内核能够通过编译。如果采用最保守的编译方式仍不能通过，建议还是等几天再同步一下看看。 正常的话会出现第6项Boot FreeBSD with DTrace enabled。 建立一个dtrace脚本 hello.d： BEGIN { trace(&#34;Hello world !&#34;); exit(0); } &#160; Dtrace -s hello.d]]></description>
			<content:encoded><![CDATA[<p>Dtrace( Dynamic tracing ),原本是Solaris 10中的新特性。它允许用户跟踪系统内核以及用户进程。是非常优秀的诊断工具。自从OpenSolaris之后，这种特性也被移植到了FreeBSD。需要说明的是，Dtrace的操作均通过内核中的prob来进行的，这需要新的内核，故Dtrace功能的内核不会出现在6.X版本中，要想体验Dtrace，目前还必须使用特殊的FreeBSD内核。</p>
<p>编辑特殊的cvsup ：</p>
<pre>*default host=cvsup10.freebsd.org*default base=/usr*default prefix=/usr/src*default release=cvs*default delete use-rel-suffixp4-cvs-dtrace</pre>
<p>
Dtarce For FreeBSD正处于测试阶段，故目前仅有cvsup10.freebsd.org一台主机提供同步。</p>
<p>CVSUP并成功编译后，重启主机。<font color="#ff0000">注意的是由于该代码树并非stable，并不保证内核能够通过编译。如果采用最保守的编译方式仍不能通过，建议还是等几天再同步一下看看。</font></p>
<p>正常的话会出现第6项Boot FreeBSD with DTrace enabled。</p>
<p>建立一个dtrace脚本 hello.d：</p>
<pre>BEGIN { trace(&quot;Hello world !&quot;); exit(0); }

&nbsp;</pre>
<p>Dtrace -s hello.d</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/10/11/%e4%bd%bf%e7%94%a8%e5%b8%a6%e6%9c%89dtrace%e7%9a%84freebsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD ports的修复</title>
		<link>http://www.litrin.net/2006/08/18/freebsd-ports%e7%9a%84%e4%bf%ae%e5%a4%8d/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=freebsd-ports%25e7%259a%2584%25e4%25bf%25ae%25e5%25a4%258d</link>
		<comments>http://www.litrin.net/2006/08/18/freebsd-ports%e7%9a%84%e4%bf%ae%e5%a4%8d/#comments</comments>
		<pubDate>Fri, 18 Aug 2006 02:10:35 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=384</guid>
		<description><![CDATA[习惯上用portupgrade -a命令升级全部软件包。可是近期有两个库一直跟我过不去GD和Jpeg，系统提示pkgdb.db文件的依赖性有问题，需要修复。 按照提示输入pkgdb -F修复了半天，回答的问题一道道，像是考试一样，很烦，于是杀掉后，pkgdb -aF自动修复得了，谁知这下玩了蛋，系统提示： &#8212;&#62;&#160; Updating the pkgdb [Rebuilding the pkgdb &#60;format:bdb_btree&#62; in /var/db/pkg ... /var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument: Cannot update the pkgdb!] 呵呵，损坏了！ 在man里面找了半天，得出了解决方法。 rm /var/db/pkg/pkgdb.db 删除pkgdb.db软件包数据库。俗话说：旧的不去，新的不来。 portversion 重建软件包数据库。 所有问题迎刃而解，就是这么简单！]]></description>
			<content:encoded><![CDATA[<p>习惯上用portupgrade -a命令升级全部软件包。可是近期有两个库一直跟我过不去GD和Jpeg，系统提示pkgdb.db文件的依赖性有问题，需要修复。</p>
<p>按照提示输入pkgdb -F修复了半天，回答的问题一道道，像是考试一样，很烦，于是杀掉后，pkgdb -aF自动修复得了，谁知这下玩了蛋，系统提示：</p>
<p>&#8212;&gt;&nbsp; Updating the pkgdb<br />
[Rebuilding the pkgdb &lt;format:bdb_btree&gt; in /var/db/pkg ... /var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument: Cannot update the pkgdb!]</p>
<p>呵呵，损坏了！</p>
<p>在man里面找了半天，得出了解决方法。</p>
<ul>
<li><span class="postbody">rm /var/db/pkg/pkgdb<span style="color: rgb(255, 163, 79);"></span>.db <br />
    删除pkgdb.db软件包数据库。俗话说：旧的不去，新的不来。</span></li>
<li><span class="postbody">portversion<br />
    重建软件包数据库。</span></li>
</ul>
<p>所有问题迎刃而解，就是这么简单！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/08/18/freebsd-ports%e7%9a%84%e4%bf%ae%e5%a4%8d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>给FreeBSD Ports加速的方法</title>
		<link>http://www.litrin.net/2006/08/09/%e7%bb%99freebsd-ports%e5%8a%a0%e9%80%9f%e7%9a%84%e6%96%b9%e6%b3%95/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e7%25bb%2599freebsd-ports%25e5%258a%25a0%25e9%2580%259f%25e7%259a%2584%25e6%2596%25b9%25e6%25b3%2595</link>
		<comments>http://www.litrin.net/2006/08/09/%e7%bb%99freebsd-ports%e5%8a%a0%e9%80%9f%e7%9a%84%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Wed, 09 Aug 2006 02:05:43 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=380</guid>
		<description><![CDATA[使用代理。 在/etc/make.conf中设置： FETCH_ENV= &#34;HTTP_PROXY=IP[:端口]&#34; 如果需要，在FETCH_ENV值后面加入空格， HTTP_PROXY_AUTH=basic:*:user:password 利用其他机器下载的文件&#8230; 首先，请确保2台机器cvsup的一致，然后将A机的/usr/ports/distfiles拷贝至B机的相同位置。 更有甚者&#8230;&#8230;开NFS吧。 方法c:使用wget/axel加速你的port下载 以下所述功能均通过修改make.conf实现 对于wget ======== FETCH_CMD= wget FETCH_BEFORE_ARGS= -c -t 1 FETCH_AFTER_ARGS= DISABLE_SIZE=yes #这行是必要的，否则&#8230; 前面3行也可以换成 FETCH_CMD=wget -c -t 1 如果你要wget穿透代理服务器，请加上下面两行 FETCH_ENV=http_proxy=http://proxy2.zsu.edu.cn:3128 FETCH_ENV=ftp_proxy=http://proxy2.zsu.edu.cn:3128 或者使用其他的穿越代理工具例如proxychains 或者socks5(runsocks) 则FETCH_CMD=proxychains wget或者runsocks wget 什么？不知道wget是什么？那就先 cd /usr/ports/ftp/wget/ make install clean 对于axel ======== 同样，也可以使用axel来替换fetch来进行多线程下载 FETCH_CMD=axel FETCH_BEFORE_ARGS= -a FETCH_AFTER_ARGS= DISABLE_SIZE=yes 或者只写一行 FETCH_CMD=axel -a axel 穿透代理服务器的方法与wget一致 axel在/usr/ports/ftp/axel位置 [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><strong>使用代理。</strong></li>
</ul>
<p>在/etc/make.conf中设置：<br />
FETCH_ENV= &quot;HTTP_PROXY=IP[:端口]&quot;<br />
如果需要，在FETCH_ENV值后面加入空格，<br />
HTTP_PROXY_AUTH=basic:*:user:password</p>
<ul>
<li><strong>利用其他机器下载的文件</strong>&#8230;
    </li>
</ul>
<p>首先，请确保2台机器cvsup的一致，然后将A机的/usr/ports/distfiles拷贝至B机的相同位置。<br />
更有甚者&hellip;&hellip;开NFS吧。</p>
<p>
<strong>方法c:使用wget/axel加速你的port下载</strong></p>
<p>
以下所述功能均通过修改make.conf实现</p>
<p>对于wget<br />
========<br />
FETCH_CMD= wget<br />
FETCH_BEFORE_ARGS= -c -t 1<br />
FETCH_AFTER_ARGS=<br />
DISABLE_SIZE=yes #这行是必要的，否则&#8230;</p>
<p>前面3行也可以换成<br />
FETCH_CMD=wget -c -t 1</p>
<p>如果你要wget穿透代理服务器，请加上下面两行<br />
FETCH_ENV=http_proxy=http://proxy2.zsu.edu.cn:3128<br />
FETCH_ENV=ftp_proxy=http://proxy2.zsu.edu.cn:3128</p>
<p>或者使用其他的穿越代理工具例如proxychains 或者socks5(runsocks)<br />
则FETCH_CMD=proxychains wget或者runsocks wget</p>
<p>什么？不知道wget是什么？那就先<br />
cd /usr/ports/ftp/wget/<br />
make install clean</p>
<p>对于axel<br />
========<br />
同样，也可以使用axel来替换fetch来进行多线程下载<br />
FETCH_CMD=axel<br />
FETCH_BEFORE_ARGS= -a<br />
FETCH_AFTER_ARGS=<br />
DISABLE_SIZE=yes<br />
或者只写一行<br />
FETCH_CMD=axel -a</p>
<p>axel 穿透代理服务器的方法与wget一致</p>
<p>axel在/usr/ports/ftp/axel位置</p>
<p></p>
<ul>
<li>添加更快的port下载站点</li>
</ul>
<p>在make.conf文件中使用配置MASTER_SITE_OVERRIDE参数，可自行增加软件镜像以及修改镜像服务器的优先级。<br />
如，以下是解决教育网用户下载慢的问题<br />
MASTER_SITE_OVERRIDE= <br />
ftp://ftp2.tsinghua.edu.cn/mirror/FreeBSD/ports/distfiles/ <br />
ftp://freebsd.csie.nctu.edu.tw/pub/FreeBSD/ports/distfiles/ <br />
ftp://ftp.hk.freebsd.org/pub/FreeBSD/ports/distfiles/ <br />
ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/08/09/%e7%bb%99freebsd-ports%e5%8a%a0%e9%80%9f%e7%9a%84%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FreeBSD下整合Apache和Tomcat</title>
		<link>http://www.litrin.net/2006/07/18/freebsd%e4%b8%8b%e6%95%b4%e5%90%88apache%e5%92%8ctomcat/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=freebsd%25e4%25b8%258b%25e6%2595%25b4%25e5%2590%2588apache%25e5%2592%258ctomcat</link>
		<comments>http://www.litrin.net/2006/07/18/freebsd%e4%b8%8b%e6%95%b4%e5%90%88apache%e5%92%8ctomcat/#comments</comments>
		<pubDate>Tue, 18 Jul 2006 03:39:13 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=368</guid>
		<description><![CDATA[首先，建议大家检查 /etc/rc.conf，看看有没有开启Linux二进制兼容模式！ 代码: &#160; linux_enable=&#34;YES&#34; 安装之前，需要你安装JDK &#8211; Java Develop Kit，对应的需求如下： Tomcat 4.x.x 以下版本 &#8211; JDK 1.3.X ~ JDK1.4.X Tomcat 5.0.x 版本 &#8211; JDK 1.4.X or upper Tomcat 5.5.x 版本 &#8211; JDK 5.0 自从发布了JDK的官方For FreeBSD版本后，安装JDK变得容易了许多。 下面开始进行&#8230;.首先，请针对所需要安装的ports进行cvsup ！ （1）安装Apache Web Server 代码: &#160; # cd /usr/ports/www/apache13/ &#160; # make &#160; # make install 完成后，请在 /etc/rc.conf 加入如下内容： 代码: [...]]]></description>
			<content:encoded><![CDATA[<p>首先，建议大家检查 /etc/rc.conf，看看有没有开启Linux二进制兼容模式！ </p>
<p><!--break--></p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; linux_enable=&quot;YES&quot; 
            </td>
</tr>
</tbody>
</table>
<p>
安装之前，需要你安装JDK &#8211; Java Develop Kit，对应的需求如下： </p>
<ul></p>
<li> Tomcat 4.x.x 以下版本 &#8211; JDK 1.3.X ~ JDK1.4.X 
    </li>
<li> Tomcat 5.0.x 版本 &#8211; JDK 1.4.X or upper 
    </li>
<li> Tomcat 5.5.x 版本 &#8211; JDK 5.0 
    </li>
</ul>
<p>自从发布了JDK的官方For FreeBSD版本后，安装JDK变得容易了许多。</p>
<p>下面开始进行&#8230;.<span style="font-weight: bold;"><span style="color: red;">首先，请针对所需要安装的ports进行cvsup ！</span></span> </p>
<p>（1）安装Apache Web Server </p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; # cd /usr/ports/www/apache13/ <br />
            &nbsp; # make <br />
            &nbsp; # make install 
            </td>
</tr>
</tbody>
</table>
<p><span class="postbody"> <br />
完成后，请在 /etc/rc.conf 加入如下内容： <br />
</span></p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; apache_enable=&quot;YES&quot; 
            </td>
</tr>
</tbody>
</table>
<p><span class="postbody"> </p>
<p>（2）安装Apache Tomcat <br />
</span></p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; # cd /usr/ports/www/jakarta-tomcat5/ <br />
            &nbsp; # make <br />
            &nbsp; # make install 
            </td>
</tr>
</tbody>
</table>
<p><span class="postbody"> <br />
安装完成后，请确认是存在<span style="color: blue;">/usr/local/bin/tomcat50ctl</span>！并确认server.xml是有开启AJP1.3的： <br />
</span></p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; &lt;Connector port=&quot;8009&quot; protocol=&quot;AJP/1.3&quot; protocolHandlerClassName=&quot;org.apache.jk.server.JkCoyoteHandler&quot; redirectPort=&quot;8443&quot;&gt; 
            </td>
</tr>
</tbody>
</table>
<p><span class="postbody"> </p>
<p>（3）配置一些环境变量 </p>
<p>图简单可以把它们放在/etc/rc.conf中！ <br />
</span></p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; export JAVA_HOME=/usr/local/jdk1.5.0 <br />
            &nbsp; export CATALINA_HOME=/usr/local/jakarta-tomcat5.0 <br />
            &nbsp; export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
            </td>
</tr>
</tbody>
</table>
<p><span class="postbody"> </p>
<p>（4）阶段性测试 </p>
<p>看看Tomcat是否正常： <br />
</span></p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; # cd /usr/local/jakarta-tomcat5.0/bin/ <br />
            &nbsp; # ./startup.sh 
            </td>
</tr>
</tbody>
</table>
<p><span class="postbody"> <br />
应该看到如下的内容，并请你用Web浏览器测试Tomcat！ <br />
</span></p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; Using CATALINA_BASE:&nbsp; &nbsp;/usr/local/jakarta-tomcat5.0 <br />
            &nbsp; Using CATALINA_HOME:&nbsp; &nbsp;/usr/local/jakarta-tomcat5.0 <br />
            &nbsp; Using CATALINA_TMPDIR:&nbsp; &nbsp;/usr/local/jakarta-tomcat5.0/temp <br />
            &nbsp; Using JAVA_HOME:&nbsp; &nbsp;/usr/local/jdk1.5.0 
            </td>
</tr>
</tbody>
</table>
<p><span class="postbody"> </p>
<p>（5）开始进行整合Apache &amp; Tomcat </p>
<p>首先安装mod_jk： <br />
</span></p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; # cd /usr/ports/www/mod_jk <br />
            &nbsp; # make <br />
            &nbsp; # make install 
            </td>
</tr>
</tbody>
</table>
<p><span class="postbody"> <br />
完成后，请修改/usr/local/etc/apache/httpd.conf，找到下面2行，把行首的注释符号<span style="font-weight: bold;">#</span>去掉！ <br />
</span></p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; LoadModule jk_module&nbsp; libexec/apache/mod_jk.so <br />
            &nbsp; AddModule&nbsp; mod_jk.c 
            </td>
</tr>
</tbody>
</table>
<p><span class="postbody"> <br />
新增下面的配置内容： <br />
</span></p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; Include /usr/local/etc/apache/mod_jk.conf 
            </td>
</tr>
</tbody>
</table>
<p><span class="postbody"> <br />
修改/usr/local/etc/apache/mod_jk.conf的内容： <br />
</span></p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; &nbsp;&lt;IfModule mod_jk.c&gt; <br />
            &nbsp; &nbsp; &nbsp; &nbsp;JkWorkersFile /usr/local/etc/apache/workers.properties <br />
            &nbsp; &nbsp; &nbsp; &nbsp;JkLogFile&nbsp; /var/log/mod_jk.log <br />
            &nbsp; &nbsp; &nbsp; &nbsp;JkLogLevel warn <br />
            &nbsp; &nbsp; &nbsp; &nbsp;JkMount /*.jsp default <br />
            &nbsp; &nbsp; &nbsp; &nbsp;JkMount /servlet/* default <br />
            &nbsp; &nbsp; &nbsp; &nbsp;JkMount /examples/* default <br />
            &nbsp; &nbsp;&lt;/IfModule&gt; 
            </td>
</tr>
</tbody>
</table>
<p><span class="postbody"> <br />
接下来，需要修改/usr/local/etc/apache/workers.properties （<span style="color: blue;">注意2个文件中的default只是一个代号！</span>）： <br />
</span></p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; workers.tomcat_home=/usr/local/jakarta-tomcat5.0 <br />
            &nbsp; workers.java_home=$JAVA_HOME <br />
            &nbsp; ps=/ <br />
            &nbsp; worker.list=default <br />
            &nbsp; worker.default.port=8009 <br />
            &nbsp; worker.default.host=localhost <br />
            &nbsp; worker.default.type=ajp13 <br />
            &nbsp; worker.default.lbfactor=1 
            </td>
</tr>
</tbody>
</table>
<p><span class="postbody"> </p>
<p>好，到这里配置基本上完成了，接下来开始祈祷并运行吧！ <br />
</span></p>
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tbody>
<tr>
<td><span class="genmed"><strong>代码:</strong></span></td>
</tr>
<tr>
<td class="code">
            &nbsp; # touch /var/log/mod_jk.log <br />
            &nbsp; # /usr/local/bin/tomcat50ctl start <br />
            &nbsp; # /usr/local/sbin/apachectl start 
            </td>
</tr>
</tbody>
</table>
<p><span class="postbody"> </p>
<p>写一个测试的test.jsp放到/usr/local/jakarta-tomcat5.0/webapps/ROOT/，用 <a rel="nofollow" target="_blank" target="_blank" href="http://localhost/test.jsp">http://localhost/test.jsp</a> 看看！ </p>
<p>更多信息，请参考：<a rel="nofollow" target="_blank" class="postlink" target="_blank" href="http://www.apachetomcat.com/home">ApacheTomcat.com FlashGuides</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/07/18/freebsd%e4%b8%8b%e6%95%b4%e5%90%88apache%e5%92%8ctomcat/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>”httpready” Accept Filter</title>
		<link>http://www.litrin.net/2006/06/26/httpready-accept-filter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=httpready-accept-filter</link>
		<comments>http://www.litrin.net/2006/06/26/httpready-accept-filter/#comments</comments>
		<pubDate>Mon, 26 Jun 2006 00:48:20 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=358</guid>
		<description><![CDATA[在FreeBSD下使用ports安装apache22会出现类似的warming：No such file or directory: Failed to enable the ”httpready” Accept Filter 解决方法是：#kldload accf_http 并将/boot/defaults/loader.conf中，以便下次启动自动装载模块 accf_data_load=&#34;YES&#34; accf_http_load=&#34;YES&#34;个人觉得这好像是一个apache22的bug，不能启动FreeBSD自带的一个基于http端口过滤的模块。这个模块的作用很不错&#8212;&#8212;检查HTTP请求是否完整，符合规则accpt一个Http进程，否则就扔掉。 linux下也有一个类似的东西，工作在 accept 的 socket 上面。代码： val = 5; setsockopt(srv_socket-&#62;fd, SOL_TCP, TCP_DEFER_ACCEPT, &#38;val, sizeof(val)) ;]]></description>
			<content:encoded><![CDATA[<p>在FreeBSD下使用ports安装apache22会出现类似<span class="postbody">的warming：<br />No such file or directory: Failed to enable the ”httpready” Accept Filter</p>
<p>解决方法是：<br /></span><span class="postbody">#kldload accf_http </p>
<p>并将/boot/defaults/loader.conf中，以便下次启动自动装载模块 <br />  </span>accf_data_load=&quot;YES&quot;  <br /> accf_http_load=&quot;YES&quot;<br /><span class="postbody"><br />个人觉得这好像是一个apache22的bug，不能启动FreeBSD自带的一个基于http端口过滤的模块。这个模块的作用很不错&mdash;&mdash;检查HTTP请求是否完整，符合规则accpt一个Http进程，</span><span class="postsign">否则就扔掉。</p>
<p></span>linux下也有一个类似的东西，工作在 accept 的 socket 上面。代码：</p>
<pre>val = 5;      setsockopt(srv_socket-&gt;fd, SOL_TCP, TCP_DEFER_ACCEPT, &amp;val, sizeof(val)) ;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/06/26/httpready-accept-filter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>六大商业Unix操作系统</title>
		<link>http://www.litrin.net/2006/05/19/%e5%85%ad%e5%a4%a7%e5%95%86%e4%b8%9aunix%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%2585%25ad%25e5%25a4%25a7%25e5%2595%2586%25e4%25b8%259aunix%25e6%2593%258d%25e4%25bd%259c%25e7%25b3%25bb%25e7%25bb%259f</link>
		<comments>http://www.litrin.net/2006/05/19/%e5%85%ad%e5%a4%a7%e5%95%86%e4%b8%9aunix%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f/#comments</comments>
		<pubDate>Fri, 19 May 2006 02:05:44 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[solaris]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=324</guid>
		<description><![CDATA[Unix是IT世界仅存的几个神话之一，自1969年诞生以来，它就一直被人们使用着。它过去的历史，简直就像一个民族的历史。我们应该庆幸，全体的Unix使用者终于安全渡过了它成长中的阵痛。那些曾经被忽略的用户则开始安装最新的Unix。Unix不是一个急功近利的奋斗者。要把Unix的执行效率和稳定性调整到最优状态，需要几个月的时间。它和硬件间令人难以捉摸的联系、众多的版本和补钉都会让人生畏。Unix之所以能长久使用，是由于其强大的自我调整能力，可以承载任何负荷。它可以一直运行，直到机器的某个部件被烧毁。 很多人认为，免费Linux 对于多年来以昂贵著称的商业Unix操作系统是一种伤害。对于SCO和SGI而言，这的确不错，然而，对于IBM、Sun 和HP来说，Linux则给Unix带来了复兴和繁荣。使用Linux作为教学工具，使大学里开始有大量的具有Unix管理能力及开发能力的大学生和研究生。虽然Linux的知识不能直接应用于企业Unix系统，但是应用Linux的经验给企业级的应用培训打下了坚实的基础，同时也使人们明白了为什么 Linux不能代替Unix。商业Unix的开发、改进，尤其是错误的修正，都是由整个公司、整个生产线来保证的。 　　SGI Irix 　　目前状况：一般 　　当前版本：Irix 6.5 　　硬件平台：SGI MIPS 服务器和工作站 　　遵循标准：Unix 95 　　优势：Irix可扩展到512个CPU和1TB的RAM，它可以达到惊人的服务器I/O处理能力，并且Irix在SGI上拥有高端和数字媒体的市场。 　　劣势：缓慢的MIPS CPU和在PC领域的失败；其兼容性和工具问题妨碍了其商业开发。&#160;　　前景展望：SGI公司试图使其脱离MIPS处理器，并且其Irix OS也将移植到Intel PC、Windows和Linux。它们放弃了SGI现存的Irix用户。SGI在创建高速服务器I/O子系统方面能力有限。这项服务是SGI的传统市场（电影和电视动画、医学和科学的可视化高端数字媒体），但是这个领域要想维持SGI还是显得太小。 　　我们可以看出，Irix已经只是在艰难维生。它的用户群将很有可能支持基于Linux或者其它操作系统的服务器。 　　IBM AIX 　　目前状况：好 　　当前版本：AIX 5L 　　硬件平台：IBM RS/6000和其它使用IBM Power 和PowerPC系列处理器的系统，Intel IA-64版。 　　遵循标准：Unix 98 　　优势：强大、稳固的IBM 64位Power/PowerPC CPU；一个操作系统可用于整个RS6000生产线；Linux代码移植是一个标准选项；IBM的Visual Age Java 和C/C++工具非常利于开发。 　　劣势：企业计划使用IA-64和Linux系统时需要考虑 RS/6000 和 AIX。 　　前景展望：AIX 5L，代号&#8220;Montery 项目&#8221;，借鉴了其它一些Unix，创建了一个通用的、高度兼容的操作环境。IBM想使其和Linux成为统一的操作系统，并且承诺将开发基于Intel的64位 CPU体系结构的AIX。 　　这不由得让人对IBM给AIX和RS/6000的承诺产生怀疑。不过AIX的用户不用担心，Linux或者Intel要达到IBM目前企业级Unix 的标准，还要很长的时间。　　IBM有很多合作伙伴，但是IBM一般是不会通过改变自己的策略去取悦他们，所以，相信AIX将会继续存在下去。 　　Compaq Tru64 Unix 　　目前状况：良 　　当前版本：Tru64 Unix [...]]]></description>
			<content:encoded><![CDATA[<p>Unix是IT世界仅存的几个神话之一，自1969年诞生以来，它就一直被人们使用着。它过去的历史，简直就像一个民族的历史。我们应该庆幸，全体的Unix使用者终于安全渡过了它成长中的阵痛。那些曾经被忽略的用户则开始安装最新的Unix。Unix不是一个急功近利的奋斗者。要把Unix的执行效率和稳定性调整到最优状态，需要几个月的时间。它和硬件间令人难以捉摸的联系、众多的版本和补钉都会让人生畏。Unix之所以能长久使用，是由于其强大的自我调整能力，可以承载任何负荷。它可以一直运行，直到机器的某个部件被烧毁。 </p>
<p>很多人认为，免费Linux 对于多年来以昂贵著称的商业Unix操作系统是一种伤害。对于SCO和SGI而言，这的确不错，然而，对于IBM、Sun 和HP来说，Linux则给Unix带来了复兴和繁荣。使用Linux作为教学工具，使大学里开始有大量的具有Unix管理能力及开发能力的大学生和研究生。虽然Linux的知识不能直接应用于企业Unix系统，但是应用Linux的经验给企业级的应用培训打下了坚实的基础，同时也使人们明白了为什么 Linux不能代替Unix。商业Unix的开发、改进，尤其是错误的修正，都是由整个公司、整个生产线来保证的。 </p>
<p>　　<strong>SGI Irix <br /></strong>　　目前状况：一般 </p>
<p>　　当前版本：Irix 6.5 </p>
<p>　　硬件平台：SGI MIPS 服务器和工作站 </p>
<p>　　遵循标准：Unix 95 </p>
<p>　　优势：Irix可扩展到512个CPU和1TB的RAM，它可以达到惊人的服务器I/O处理能力，并且Irix在SGI上拥有高端和数字媒体的市场。 <br />　　劣势：缓慢的MIPS CPU和在PC领域的失败；其兼容性和工具问题妨碍了其商业开发。&nbsp;<br />　　前景展望：SGI公司试图使其脱离MIPS处理器，并且其Irix OS也将移植到Intel PC、Windows和Linux。它们放弃了SGI现存的Irix用户。SGI在创建高速服务器I/O子系统方面能力有限。这项服务是SGI的传统市场（电影和电视动画、医学和科学的可视化高端数字媒体），但是这个领域要想维持SGI还是显得太小。 <br />　　我们可以看出，Irix已经只是在艰难维生。它的用户群将很有可能支持基于Linux或者其它操作系统的服务器。 </p>
<p>　　<strong>IBM AIX</strong> <br />　　目前状况：好 </p>
<p>　　当前版本：AIX 5L </p>
<p>　　硬件平台：IBM RS/6000和其它使用IBM Power 和PowerPC系列处理器的系统，Intel IA-64版。 </p>
<p>　　遵循标准：Unix 98 </p>
<p>　　优势：强大、稳固的IBM 64位Power/PowerPC CPU；一个操作系统可用于整个RS6000生产线；Linux代码移植是一个标准选项；IBM的Visual Age Java 和C/C++工具非常利于开发。 <br />　　劣势：企业计划使用IA-64和Linux系统时需要考虑 RS/6000 和 AIX。 <br />　　前景展望：AIX 5L，代号&ldquo;Montery 项目&rdquo;，借鉴了其它一些Unix，创建了一个通用的、高度兼容的操作环境。IBM想使其和Linux成为统一的操作系统，并且承诺将开发基于Intel的64位 CPU体系结构的AIX。 <br />　　这不由得让人对IBM给AIX和RS/6000的承诺产生怀疑。不过AIX的用户不用担心，Linux或者Intel要达到IBM目前企业级Unix 的标准，还要很长的时间。<br />　　IBM有很多合作伙伴，但是IBM一般是不会通过改变自己的策略去取悦他们，所以，相信AIX将会继续存在下去。 </p>
<p>　　<strong>Compaq Tru64 Unix</strong> <br />　　目前状况：良 </p>
<p>　　当前版本：Tru64 Unix 5.1 </p>
<p>　　硬件平台：Compaq Alpha 工作站和服务器 </p>
<p>　　遵循标准：Unix 95 </p>
<p>　　优势：Tru64使用的是强大、精巧的Carnegie-Mellon Mach内核；对于中小型服务器而言，64位的Alpha CPU的利用率是最高的；它遵循Digital Equipment遗留下来的传统：能创建强大的、用户能够支付得起的服务器系统。 <br />　　劣势：在Intel 的服务器市场上，Compaq缺乏经验和信誉；在Alpha用户中，Linux非常的流行；系统V中的兼容性漏洞有时会使应用程序碰到困难。<br />　　前景展望：Alpha 遵循一流的SPEC（Standard Performance Evaluation Corporation）标准，对于特定的时钟频率，它是最快的CPU。Compaq把名字由Digital Unix改为Tru64 Unix是为了强调Alpha芯片是真正的64位的家族。对于Compaq来说，现在所要做的是要占领更大的服务器市场份额。<br />　　Compaq在PC机上的声望对其似乎有害无益。与专有的Tru64相比，Linux和成熟的OpenVMS可能会更多地赢得企业的青睐。Intel 则会毫无疑问地建议Compaq转去使用IA-64而不是Alpha。Tru64 Unix在Alpha上有上佳的表现，但是其前景还要等到IA-64推出时Compaq会有何举动才能定论。 </p>
<p>　　<strong>Hewlett-Packard HP-UX</strong> <br />　　目前状况：好 </p>
<p>　　当前版本：HP-UX 11i </p>
<p>　　硬件平台：HP 9000服务器 </p>
<p>　　遵循标准：Unix 95 </p>
<p>　　优势：HP在可靠性和服务方面的声誉人所共知；HP-UX和一个丰富、实用的操作系统包一起推出，它包括Web server、C/C++、 Windows网络、 WAP (无线应用协议) 服务、 Linux APIs、 iPlanet 目录服务器和 Veritas文件系统。 <br />　　劣势：相对于竞争者而言，HP PA-RISC体系结构在性能上有待改进。<br />　　前景展望：HP很少是第一或者是最快的，但是它在其Unix产品中捆绑了很多有价值的东西。就整体而言，HP-UX和Linux非常的接近。时间将证明，企业工具和服务应该包括在一起。HP有真正的日志文件系统，这使HP-UX 11i表现不俗。<br />　　可以相信，一旦HP在性能上赶上其竞争对手并使其HP-UX顺应Unix 98，那么它将可以超过Sun和IBM。 </p>
<p>　　<strong>SCO UnixWare</strong> <br />　　目前状况：一般 </p>
<p>　　当前版本：UnixWare 7.3</p>
<p>　　硬件平台：Intel PC工作站和服务器 </p>
<p>　　遵循标准：Unix 95 </p>
<p>　　优势：SCO是Unix System V源代码的所有者；UnixWare是最强大的，也是最完善的PC Unix；它有优秀的、价格合理的开发工具。<br />　　劣势：近来开发停滞不前；销售上也受到了Linux和Solaris的强烈冲击；很多功能强大的应用程序，它都不支持。<br />　　前景展望：因为持有Unix System V的源代码，所以UnixWare 7.1是我们所能看到的Unix中最正宗的Unix，并且SCO环境里有一些很不错的工具和服务。然而，这并没有使SCO的情况有所好转。PC Unix的市场空间一直以来都非常的狭小。如今，Linux正在被公众所认可，而Sun又将其Solaris的源代码开放，显而易见，SCO将从原有的市场中被排挤出来。<br />　　除非能够开发出一种强大的基于Web的应用服务器，否则这位PC Unix的先驱将有可能消亡。 </p>
<p>　　<strong>Sun Microsystems Solaris <br /></strong>　　目前状况：好 </p>
<p>　　当前版本：Solaris 10</p>
<p>　　硬件平台：Sun Sparc、Intel PC工作站和服务器 </p>
<p>　　遵循标准：Unix 98 </p>
<p>　　优势：其光辉的市场业绩使Solaris成为了事实上的Unix；Sparc和Intel版是同一个操作系统；对于基于Unix的商业应用系统，Solaris可以提供最广泛的支持。<br />　　劣势：Sparc处理器的可伸缩性不如其竞争对手；具良好伸缩性的Sun系统以昂贵而著称；Solaris本身所带标准软件贫乏，而其可选软件包又非常昂贵。<br />　　前景展望：牢固的市场和及时的开发，使得Sun身处第一的位置，这个位置Sun一直在小心翼翼地保护着。很简单，Solaris取得了领先的位置是因为Sun保证了所有的应用系统都可以在其上运行。 去年的OpenSolaris计划，也使Sun从开源社区中获得了大量的软件支持，以弥补其自身的不足。<br />　　Sun的顾客从它的训练有素的员工处获益。它有优秀的业务咨询员。Sun对Solaris错误的修正也非常的快。此外，Sun是Java的所有者。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/05/19/%e5%85%ad%e5%a4%a7%e5%95%86%e4%b8%9aunix%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD6.1 Released</title>
		<link>http://www.litrin.net/2006/05/08/freebsd61-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=freebsd61-released</link>
		<comments>http://www.litrin.net/2006/05/08/freebsd61-released/#comments</comments>
		<pubDate>Mon, 08 May 2006 07:11:18 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=315</guid>
		<description><![CDATA[最新版本的FreeBSD6.1现在已经推出，没什么好介绍的了，本站现已提供本地下载，需要的朋友赶快了！]]></description>
			<content:encoded><![CDATA[<p>最新版本的FreeBSD6.1现在已经推出，没什么好介绍的了，本站现已提供本地下载，需要的朋友赶快了！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/05/08/freebsd61-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>关于Ports的“牢骚”</title>
		<link>http://www.litrin.net/2006/03/24/%e5%85%b3%e4%ba%8eports%e7%9a%84%e2%80%9c%e7%89%a2%e9%aa%9a%e2%80%9d/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%2585%25b3%25e4%25ba%258eports%25e7%259a%2584%25e2%2580%259c%25e7%2589%25a2%25e9%25aa%259a%25e2%2580%259d</link>
		<comments>http://www.litrin.net/2006/03/24/%e5%85%b3%e4%ba%8eports%e7%9a%84%e2%80%9c%e7%89%a2%e9%aa%9a%e2%80%9d/#comments</comments>
		<pubDate>Fri, 24 Mar 2006 01:41:30 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=284</guid>
		<description><![CDATA[公司里的文件服务器操作系统为FreeBSD,安装Samba3作为文件服务。为了便于共享打印，又特别安装了HPIJS的驱动程序，驱动一台HP LaserJet1010。 按道理来讲，比较简单的系统了，没有什么难度。可前一段时间老是随机性打印出现乱码。本以为就是客户端出了问题，可近一周，几乎所有的机器全都轮了个遍。问题肯定出现在服务器上了。 事先说明的是，这台机器，我为了维护起来偷懒，特别每个礼拜天自动CVSUP，并portupgrade，反查过去的更新日志，发现第一次出现打印错误的前一天正好升级过Samba，于是到Samba的论坛上询问，正巧碰到有不少人发现类似的问题，于是提交了一份错误报告给Samba，几天后，Samba回复大意：&#8220;没有在打印模块作实质上的改动&#8221;，言外之意，不是他们的问题。弄得我很是尴尬。 回到起点，继续反查。那天同时升级的还有perl，Perl是samba的一个依赖包，同时也是HPIJS的一个依赖包。一番测试总算发现：新版本的perl跟HPIJS的兼容性有点问题，这就是该Bug的来源！ ports的优势就是在于它能够自动解决依赖包问题&#8212;&#8212;几乎大多数*nix系统都很难摆脱的阴影。可现在的状况到有点类似于当初win下的&#8220;dll陷阱了&#8221;，可能是HPIJS这个包太长时间没有人维护的缘故（几乎现在大多数linux的发行版都选用了HPLIP），对于新版本的perl没有彻底测试。过度依赖于旧的软件包的确叫人头痛不已。]]></description>
			<content:encoded><![CDATA[<p>公司里的文件服务器操作系统为FreeBSD,安装Samba3作为文件服务。为了便于共享打印，又特别安装了HPIJS的驱动程序，驱动一台HP LaserJet1010。</p>
<p>按道理来讲，比较简单的系统了，没有什么难度。可前一段时间老是随机性打印出现乱码。本以为就是客户端出了问题，可近一周，几乎所有的机器全都轮了个遍。问题肯定出现在服务器上了。</p>
<p>事先说明的是，这台机器，我为了维护起来偷懒，特别每个礼拜天自动CVSUP，并portupgrade，反查过去的更新日志，发现第一次出现打印错误的前一天正好升级过Samba，于是到Samba的论坛上询问，正巧碰到有不少人发现类似的问题，于是提交了一份错误报告给Samba，几天后，Samba回复大意：&ldquo;没有在打印模块作实质上的改动&rdquo;，言外之意，不是他们的问题。弄得我很是尴尬。</p>
<p>回到起点，继续反查。那天同时升级的还有perl，Perl是samba的一个依赖包，同时也是HPIJS的一个依赖包。一番测试总算发现：新版本的perl跟HPIJS的兼容性有点问题，这就是该Bug的来源！</p>
<p>ports的优势就是在于它能够自动解决依赖包问题&mdash;&mdash;几乎大多数*nix系统都很难摆脱的阴影。可现在的状况到有点类似于当初win下的&ldquo;dll陷阱了&rdquo;，可能是HPIJS这个包太长时间没有人维护的缘故（几乎现在大多数linux的发行版都选用了HPLIP），对于新版本的perl没有彻底测试。过度依赖于旧的软件包的确叫人头痛不已。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/03/24/%e5%85%b3%e4%ba%8eports%e7%9a%84%e2%80%9c%e7%89%a2%e9%aa%9a%e2%80%9d/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>恶搞的df命令</title>
		<link>http://www.litrin.net/2006/02/06/%e6%81%b6%e6%90%9e%e7%9a%84df%e5%91%bd%e4%bb%a4/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e6%2581%25b6%25e6%2590%259e%25e7%259a%2584df%25e5%2591%25bd%25e4%25bb%25a4</link>
		<comments>http://www.litrin.net/2006/02/06/%e6%81%b6%e6%90%9e%e7%9a%84df%e5%91%bd%e4%bb%a4/#comments</comments>
		<pubDate>Mon, 06 Feb 2006 05:06:21 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=232</guid>
		<description><![CDATA[用portupgrad更新FreeBSD的软件包无法更新，报错：&#8220;/usr: write failed, filesystem is full&#34;。（/usr分区已满），用df -h查看得到结果：# # df -h Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1a 496M 59M 397M 13% / devfs 1.0K 1.0K 0B 100% /dev /dev/ad0s1f 66G 28G 33G 46% /data /dev/ad0s1e 496M 406K 456M 0% /tmp /dev/ad0s1g 3.4G 3.3G -174M 105% /usr /dev/ad0s1d 1.2G 76M 1.0G 7% /var 何以谓之&#34;-174M&#34;?]]></description>
			<content:encoded><![CDATA[<p>用portupgrad更新FreeBSD的软件包无法更新，报错：&ldquo;/usr: write failed, filesystem is full&quot;。（/usr分区已满），用df -h查看得到结果：#</p>
<pre># df -h Filesystem     Size    Used   Avail Capacity  Mounted on /dev/ad0s1a    496M     59M    397M    13%    / devfs          1.0K    1.0K      0B   100%    /dev /dev/ad0s1f     66G     28G     33G    46%    /data /dev/ad0s1e    496M    406K    456M     0%    /tmp /dev/ad0s1g    3.4G    3.3G   -174M   105%    /usr /dev/ad0s1d    1.2G     76M    1.0G     7%    /var </pre>
<p>何以谓之&quot;-174M&quot;?<img src="/modules/fckeditor/lib/editor/images/smiley/msn/teeth_smile.gif" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/02/06/%e6%81%b6%e6%90%9e%e7%9a%84df%e5%91%bd%e4%bb%a4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>FreeBSD下使用HP LaserJet</title>
		<link>http://www.litrin.net/2006/01/16/freebsd%e4%b8%8b%e4%bd%bf%e7%94%a8hp-laserjet/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=freebsd%25e4%25b8%258b%25e4%25bd%25bf%25e7%2594%25a8hp-laserjet</link>
		<comments>http://www.litrin.net/2006/01/16/freebsd%e4%b8%8b%e4%bd%bf%e7%94%a8hp-laserjet/#comments</comments>
		<pubDate>Mon, 16 Jan 2006 12:39:03 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[HP]]></category>
		<category><![CDATA[samba]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=216</guid>
		<description><![CDATA[按：这个方法是原先我在FB下架设Samba服务器，为实现与windows用户共享打印时，参考了HP英文官方站点（中文站点没有提供相应的解决方案，很是气人）总结出来的。安装驱动程序HPILJS #cd /usr/ports/print/hpijs # make install clean 比较漫长的等待 设置远程控制cupsd cupsd是一个*nix下管理打印机的小工具，如果起初没有安装的话，利用比较懒汉化的ports到这一步应该已经自动添加了cupsd包，你可以采用pkg_info &#124;&#160; grep cups命令确认一下。cupsd提供也一个web界面的管理工具，但默认只允许用户从本地登录，如不得不从远程登录（比如只安装了控制台界面），需要修改一下 /usr/local/etc/cupsd.conf :添加BrowseAddress *并将类似于（2处）：Order Deny,AllowDeny From AllAllow From 127.0.0.1改为：Order Deny,AllowAllow From All 重启服务#killall cupsd#cupsd cupsd设置本地打印用浏览器访问631端口 http://服务器地址:631/浏览器会提示你输入口令和密码，用户名为root，密码是你的root密码。 单击&#8220;printers&#34; 单击&#34;add printers&#34; Name 打印机名称，可以随便写，但不允许有空格. location : 端口，新的打印机都是USB口的了吧？ Description随便随便，不写都成. Continue. 在上图所示的地方填入hp:/usb/你的打印机型号?serial=打印机序列号，打印机序列号贴在机器背面，如果没有请参见说明书。 厂商：本文介绍的就是HP喽。题外话：看到一篇报道，有超过70%的打印机不提供linux的驱动程序，而相对于其他打印机厂商，HP对于linux的支持还是非常不错的。如果你需要买一款linux支持的比较好的打印机，推荐购买HP的laser jet系列（广告之嫌）。 选择型号，不用多说，不过好像没有一个型号拥有中文的驱动，很是郁闷。Continue 添加结束，来张测试？添加网络打印机 其实上面添加打印机的过程中你已经可以看到location下拉中有网络的选项了。选择后：选择&#34;AppScoket/HP JetDirect&#34; URI地址写成: hp:/net/打印机型号?ip=打印服务器IP&#34; 照旧 还是照旧]]></description>
			<content:encoded><![CDATA[<p>按：这个方法是原先我在FB下架设Samba服务器，为实现与windows用户共享打印时，参考了HP英文官方站点（中文站点没有提供相应的解决方案，很是气人）总结出来的。<br /><br style="font-weight: bold;" /><span style="font-weight: bold;">安装驱动程序HPILJS</p>
<p></span>#cd /usr/ports/print/hpijs <br /># make install clean</p>
<p>比较漫长的等待</p>
<p><span style="font-weight: bold;">设置远程控制cupsd</p>
<p></span>cupsd是一个*nix下管理打印机的小工具，如果起初没有安装的话，利用比较懒汉化的ports到这一步应该已经自动添加了cupsd包，你可以采用pkg_info |&nbsp; grep cups命令确认一下。<br />cupsd提供也一个web界面的管理工具，但默认只允许用户从本地登录，如不得不从远程登录（比如只安装了控制台界面），需要修改一下 /usr/local/etc/cupsd.conf :<br />添加BrowseAddress *<br />并将类似于（2处）：<br />Order Deny,Allow<br />Deny From All<br />Allow From 127.0.0.1<br />改为：<br />Order Deny,Allow<br />Allow From All</p>
<p>重启服务<br />#killall cupsd<br />#cupsd</p>
<p><span style="font-weight: bold;">cupsd设置本地打印<br /></span>用浏览器访问631端口 http://服务器地址:631/<br />浏览器会提示你输入口令和密码，用户名为root，密码是你的root密码。</p>
<p><img width="400" height="212" src="/UserFiles/Image/hp_printer/631_opening.gif" alt="" /><br />单击&ldquo;printers&quot;</p>
<p><img src="/UserFiles/Image/hp_printer/631_device_list.gif" alt="" /></p>
<p><span style="font-weight: bold;"></span><strong>单击&quot;add printers&quot; <br /> </strong></p>
<ol>
<li type="a">Name 打印机名称，可以随便写，但不允许有空格.</li>
<li type="a">location : 端口，新的打印机都是USB口的了吧？</li>
<li type="a">Description随便随便，不写都成.</li>
<li type="a">Continue.</li>
</ol>
<p>在上图所示的地方填入hp:/usb/你的打印机型号?serial=打印机序列号，打印机序列号贴在机器背面，如果没有请参见说明书。<br /><span style="font-weight: bold;"><br /></span><img width="400" height="236" src="/UserFiles/Image/hp_printer/631_model_list.gif" alt="" /></p>
<p>厂商：本文介绍的就是HP喽。<br />题外话：看到一篇报道，有超过70%的打印机不提供linux的驱动程序，而相对于其他打印机厂商，HP对于linux的支持还是非常不错的。如果你需要买一款linux支持的比较好的打印机，推荐购买HP的laser jet系列（广告之嫌）。<span style="font-weight: bold;"></span><br /><img width="400" height="238" src="/UserFiles/Image/hp_printer/631_printer_model.gif" alt="" /></p>
<p>选择型号，不用多说，不过好像没有一个型号拥有中文的驱动，很是郁闷。<br /><strong style="font-weight: normal;">Continue</strong> 添加结束，来张测试？<br /><br style="font-weight: bold;" /><span style="font-weight: bold;">添加网络打印机</p>
<p></span>其实上面添加打印机的过程中你已经可以看到location下拉中有网络的选项了。选择后：<br /><img width="400" height="174" src="/UserFiles/Image/hp_printer/631_network_appssocket.gif" alt="" /><br />选择&quot;AppScoket/HP JetDirect&quot;</p>
<p><img width="400" height="237" src="/UserFiles/Image/hp_printer/631_network_device_uri.gif" alt="" /><br />URI地址写成: hp:/net/打印机型号?ip=打印服务器IP&quot;</p>
<p><img width="400" height="198" src="/UserFiles/Image/hp_printer/631_network_model_list.gif" alt="" /><br />照旧</p>
<p><img width="400" height="233" src="/UserFiles/Image/hp_printer/631_network_device_list.gif" alt="" /></p>
<p>还是照旧</p>
<p><span style="font-weight: bold;"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/01/16/freebsd%e4%b8%8b%e4%bd%bf%e7%94%a8hp-laserjet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>合理使用FreeBSD降低你的服务器成本</title>
		<link>http://www.litrin.net/2006/01/09/%e5%90%88%e7%90%86%e4%bd%bf%e7%94%a8freebsd%e9%99%8d%e4%bd%8e%e4%bd%a0%e7%9a%84%e6%9c%8d%e5%8a%a1%e5%99%a8%e6%88%90%e6%9c%ac/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%2590%2588%25e7%2590%2586%25e4%25bd%25bf%25e7%2594%25a8freebsd%25e9%2599%258d%25e4%25bd%258e%25e4%25bd%25a0%25e7%259a%2584%25e6%259c%258d%25e5%258a%25a1%25e5%2599%25a8%25e6%2588%2590%25e6%259c%25ac</link>
		<comments>http://www.litrin.net/2006/01/09/%e5%90%88%e7%90%86%e4%bd%bf%e7%94%a8freebsd%e9%99%8d%e4%bd%8e%e4%bd%a0%e7%9a%84%e6%9c%8d%e5%8a%a1%e5%99%a8%e6%88%90%e6%9c%ac/#comments</comments>
		<pubDate>Mon, 09 Jan 2006 03:51:07 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=200</guid>
		<description><![CDATA[BSD 和 SYSV 是世上最正统的 UNIX 操作系统，在 LINUX 出现之前，他们统治了整个 UNIX 世界。也正因为此，这两个最正统的 UNIX 核心流派都在实践中积累丰富的经验。SYSV 偏向于商业，BSD 更偏向于自由和实用。 现在，本文只讨论 BSD 流派最活跃的发行版 FreeBSD。FreeBSD 作为最重要的一个 BSD 发行版，它保持了 BSD 自由和实用的原则。但亦因为此而忽略很多商业的考虑的相应的功能。凭藉我自己多年 UNIX 的使用经验，列出一些 BSD 的优势与不足，希望以此作为读者的参考。&#160; 不足之处： 文件系统： FreeBSD 的文件系统属于中上水平，但未达至企业级的应用需求。主要体现于文件系统本身存在的脆弱性。在高负载的情况下，文件系统存在有崩溃的可能性。需要注意的 是，导致这样的结果，也有可能由于磁盘控制器（SCSI, RAID 等等）驱动程序本身导致的。没有原厂设备驱动程序是个比较大的问题。 网络： FreeBSD 的网络性能是无用置疑的！但是网卡驱动（是的，设备驱动是个很重要的因素）不完善会导致性能和稳定性大打节扣。虽然这与 FreeBSD 的核心没有关系，但对于一个可提供服务的整体来说，驱动程序却是一个很重要的组成部份。 另外，由于一个网卡接口上的线的松动，有可能导致网络中断。而一些商业化的 UNIX 操作系统可以在当主网卡不可用时将该网卡上的 IP 转移至可提供正确连接的网卡上。 多处理器（超线程）支持： 在 6.0 出版之前，FreeBSD 对多处理器支持是不尽人意的。INTEL CPU 提供有 HT（超线程）功能。FreeBSD 在 HT 开启的状态下会比在关闭的状态下差。我忘记了超线程的原理，只记得拥有超线程功能的 [...]]]></description>
			<content:encoded><![CDATA[<p>BSD 和 SYSV 是世上最正统的 UNIX 操作系统，在 LINUX 出现之前，他们统治了整个 UNIX 世界。也正因为此，这两个最正统的 UNIX 核心流派都在实践中积累丰富的经验。<br />SYSV 偏向于商业，BSD 更偏向于自由和实用。 <br /> 现在，本文只讨论 BSD 流派最活跃的发行版 FreeBSD。FreeBSD 作为最重要的一个 BSD 发行版，它保持了 BSD 自由和实用的原则。但亦因为此而忽略很多商业的考虑的相应的功能。凭藉我自己多年 UNIX 的使用经验，列出一些 BSD 的优势与不足，希望以此作为读者的参考。<br />&nbsp;<br /><span style="font-weight: bold; font-style: italic;"> 不足之处： </span></p>
<p> 文件系统： <br /> FreeBSD 的文件系统属于中上水平，但未达至企业级的应用需求。主要体现于文件系统本身存在的脆弱性。在高负载的情况下，文件系统存在有崩溃的可能性。需要注意的 是，导致这样的结果，也有可能由于磁盘控制器（SCSI, RAID 等等）驱动程序本身导致的。没有原厂设备驱动程序是个比较大的问题。 </p>
<p> 网络： <br />     FreeBSD 的网络性能是无用置疑的！但是网卡驱动（是的，设备驱动是个很重要的因素）不完善会导致性能和稳定性大打节扣。虽然这与 FreeBSD 的核心没有关系，但对于一个可提供服务的整体来说，驱动程序却是一个很重要的组成部份。 <br />     另外，由于一个网卡接口上的线的松动，有可能导致网络中断。而一些商业化的 UNIX 操作系统可以在当主网卡不可用时将该网卡上的 IP 转移至可提供正确连接的网卡上。 </p>
<p> 多处理器（超线程）支持： <br /> 在 6.0 出版之前，FreeBSD 对多处理器支持是不尽人意的。INTEL CPU 提供有 HT（超线程）功能。FreeBSD 在 HT 开启的状态下会比在关闭的状态下差。我忘记了超线程的原理，只记得拥有超线程功能的 CPU 在过多的切换情况下性能就会降低，不过在什么时候切换和切换些什么我忘记了。FreeBSD 在开启 HT 后性能会变差，可能与这个有关。 </p>
<p><span style="font-weight: bold; font-style: italic;"> 出众之处： </span></p>
<p> 网络： <br /> FreeBSD 的网络性能非常好，可以同时处理海量的网络请求，这使 BSD 非常适合作为防火墙的环境。另外，在网络聊天服务器，如 IM 这种应用上，FreeBSD 也是很合适的选择。网易的 POPO 聊天软件服务器端就是在 FreeBSD 下开发并投入到实际环境中使用的，通过对内核的修改，可以轻松支持数以万计的用户连接，要注意，是永久性的连接，除非用户点击注销按钮。 </p>
<p> 内存： <br /> 你会发现你服务器上的内存会被 FreeBSD 很好地利用，以使你的服务达至最佳的状态。FreeBSD 不会因为将过多的内存用于磁盘 CACHE 而使更重要的程序获取不到物理内存而让系统使用 SWAP。在实际的环境中，我就遇到过 LINUX 为保持磁盘的 CACHE，而让新任务使用 SWAP，导致新任务执行时间大大拉长。在执行 swapoff -a 操作后，运行同样的新任务只需要原来时间的一半。而系统并没有因为关闭 SWAP 而停机，表示物理内存并没有因为新任务而被耗尽。 </p>
<p> 一个例子： <br />     Memcached 是一个非常出众的基于内存的缓存服务器。它可以为被其支持的程序语言提供串行化数据保存的功能，这样可以让同一份数据被多台服务器共享，而更重要的是，它的速度非常快。 我可以利用 PHP 或 JAVA 从数据库中获取数据结果集，然后将结果集的内容保存进 Memcached，其他服务器上的程序同样可以相应的 key 从 Memcached 中获得相同的拷贝。在分布式的环境，这种需求非常明显。我自己也尝试当 SESSION 数据保存至 Memcached 而无需为共享 SESSION 数据而专门架设一台 MYSQL 数据库。 <br /> 在利用 Memcached 作为数据的中心点，网络的流量会非常大，内存的使用会非常频繁，基本上不与磁盘打交道，而且整个系统的稳健性要求非常高。在这种应用需求下， FreeBSD 自然地成为首选。因为它为高效的网络性能，更合理的内存利用率，和稳健的系统基础。</p>
<p> 展望： </p>
<p>     由于 JAVA 在 FreeBSD 上并不是太优秀，因此我正在考虑和尝试在 FreeBSD 的系统上布署基于 python 的应用。 </p>
<p>     大致是：FreeBSD + Python + Memcached + PostgreSQL</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/01/09/%e5%90%88%e7%90%86%e4%bd%bf%e7%94%a8freebsd%e9%99%8d%e4%bd%8e%e4%bd%a0%e7%9a%84%e6%9c%8d%e5%8a%a1%e5%99%a8%e6%88%90%e6%9c%ac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

