﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-tech.cap-随笔分类-linux</title><link>http://www.blogjava.net/cap/category/6122.html</link><description>我在一望无际的路上</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 05:55:45 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 05:55:45 GMT</pubDate><ttl>60</ttl><item><title>Fastcgi到底是什么样的技术</title><link>http://www.blogjava.net/cap/archive/2006/02/06/29672.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Mon, 06 Feb 2006 03:22:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2006/02/06/29672.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/29672.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2006/02/06/29672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/29672.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/29672.html</trackback:ping><description><![CDATA[<p>    Fastcgi到底是什么样的技术 </p><p>    注:本人对LAMP,python了解不是很多,此文是我的个人理解,如果有误忘告知 </p><p>    自从接触rubyonrails以来,fastcgi这个技术标准就进入了我的视线,从技术角度看,fastcgi的优点还是很多的,作为一种替代cgi的技术标准, fastcgi有如下优点(稳定,安全,高性能,方便扩展) </p><ul>    <li>        <p>            从稳定性上看, fastcgi是以独立的进程池运行来cgi,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑.         </p>    </li>    <li>        <p>            从安全性上看, fastcgi和宿主的server完全独立, fastcgi怎么down也不会把server搞垮,         </p>    </li>    <li>        <p>            从性能上看, fastcgi把动态逻辑的处理从server中分离出来, 大负荷的IO处理还是留给宿主server, 这样宿主server可以一心一意作IO,对于一个普通的动态网页来说, 逻辑处理可能只有一小部分, 大量的图片等静态IO处理完全不需要逻辑程序的参与(注1)         </p>    </li>    <li>        <p>            从扩展性上讲, fastcgi是一个中立的技术标准, 完全可以支持任何语言写的处理程序(php,java,python...)         </p>    </li></ul><p>    但是让我感到迷惑不解的是,apache对fastcgi的支持mod_fastcgi简直就是一塌糊涂, 最新的稳定版本居然还是2003年的,snap也只到2004年, 在1.3下面还勉强可以用, 在apache2.0上更是被报告无法稳定运行.fastcgi在[lighttpd][]上表现还算不错, 但是lighttpd在用户群,兼容性上还不够主流(也就在linux上面表现不错, 没有正式的windows版本, solaris下面也有bug). 另外fastcgi也缺乏发展,让人有被废弃掉了的感觉.(ruby的dbi也是这个状况). 和其他日新月异的技术标准比, fastcgi地位尴尬 </p><p>    &#160;</p><p>    直到我看到这篇<a href="http://www.vmunix.com/mark/blog/archives/2006/01/02/fastcgi-scgi-and-apache-background-and-future/">文章</a>才明白,fastcgi真是的命苦.(呵呵,以下的内容取自该文章) </p><p>    &#160;</p><p>    从名字上看fastcgi是fast的cgi的,属于改良派.从理论上,他可以很多程序语言接口来开发动态web,但是这些程序语言每一个都是走完全革命的道路. java阵营就自己搞了一套j2ee server标准,要协作也直接找apache或者IIS谈,瞧不上fastcgi. aspx直接和IIS是亲兄弟,没有fastcgi的份. 剩下的php因为太流行(LAMP),和apache是铁哥们,一个mod_php就解决了,简单方便, python社区的牛人太多,精力旺盛,人家搞了个SCGI玩,和fastcgi比是有过之而无不及. 等到rails出山的时候, fastcgi真的算是老态龙钟了. </p><p>    &#160;</p><p>    rails的出现使得fastcgi重新焕发了青春, apache也开始重新构建新的mod_proxy_fcgi,但是它的前途还不能说是一片光明, 我觉得至少有以下几个问题 </p><ul>    <li>        目前的fastcgi和server沟通还不够智能,一个fastcgi进程如果执行时间过长会被当成是死进程杀掉重起,这样在处理长时间任务的时候很麻烦.这样做也使得fastcgi无法允许联机调试.     </li>    <li>        SCGI等类似技术的都可以替换fastcgi, SCGI在python中很成功,功能完备,目前SCGI也开始支持rails了     </li>    <li>        随着rails的流行,一个独立的mod_rails是可能出现的,而且ruby自身的webserver也开始涌现,以后极有可能自己搞一套东西连接主流的webserver.fastcgi设计的时候是想作common gateway interface(cgi)的,但是这个目标的现在看来已经不适合了     </li></ul><p>    总结: 我觉得fastcgi的前途不明朗, 但是目前来说,他也是rails唯一可以进入生产环境的工具,只用搞懂怎么配就可以了,没有必要深入研究. </p><p>    注1: 有时候逻辑也会参与图片的生成,这时候图片的IO处理就需要动态程序介入了,此时fastcgi技术上的优势虽然体现不出来,但是也不会比其他技术标准差 </p><img src ="http://www.blogjava.net/cap/aggbug/29672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2006-02-06 11:22 <a href="http://www.blogjava.net/cap/archive/2006/02/06/29672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>lighttpd 安装配置</title><link>http://www.blogjava.net/cap/archive/2005/12/18/24526.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Sun, 18 Dec 2005 13:26:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/12/18/24526.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/24526.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/12/18/24526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/24526.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/24526.html</trackback:ping><description><![CDATA[<h1>lighttpd 安装配置</h1>

<h3>前提条件 需要安装pcre</h3>

<p>pcre是一个和perl兼容的正规表达式库, 当然不安装他lighttpd也可以正常运行,但是这样一来就无法使用正则来进行复杂配置了, pcre对于支持rails,虚拟主机还是很有必要的, pcre的<a href="http://www.pcre.org">主站</a> ,linux下面本人的机器默认有安装, solaris上没有内置,需要下载安装, solaris到<a href="http://www.sunfreeware.com/">这里</a>找对应的版本</p>

<h3>安装lighttpd</h3>

<p>到<a href="http://lighttpd.net/download/lighttpd-1.4.8.tar.gz">这里</a>下载lighttpd ,目前版本为1.4.8. </p>

<pre><code>wget http://lighttpd.net/download/lighttpd-1.4.8.tar.gz
tar -xzvf lighttpd-1.4.8.tar.gz
cd lighttpd-1.4.8
./configure --prefix=/usr/local/lighttpd
</code></pre>

<p>注意configure结束的时候会打印出当前的模块和plugin支持情况, 从这里可以看出是否有什么遗漏.</p>

<pre><code>Plugins:

enabled: 
  ...
disabled: 
  ...

Features:

enabled: 
  ...
disabled: 
  ...
</code></pre>

<p>然后再</p>

<pre><code>make
make install
cd ..
</code></pre>

<p>现在为lighttpd建立一个配置文件, lighttpd安装目录下doc目录中有lighttpd.conf是现成的,修改一下就可以了</p>

<pre><code>cd /usr/local/lighttpd
mkdir conf
cp /path/to/lighttpd-1.4.8/doc/lighttpd.conf /usr/local/lighttpd/conf/
..edit it ..
</code></pre>

<p>简单的配置一下就可以测试,基本的配置默认的注释都解释得很清除, 因为lighttpd本身很简洁, 要查看文档的看<a href="http://www.lighttpd.net/documentation/">这里</a>
启动lighttpd是使用主目录下sbin中的lighttpd -f conf/xxx.conf来启动, </p>

<pre><code>cd /usr/local/lighttpd
sbin/lighttpd -f conf/lighttpd.conf #自动到后台运行
或者
sbin/lighttpd -f conf/lighttpd.conf -D #启动在前台,可以用Ctrl-C中止,方便调试
</code></pre>

<p>如果图方便, 可以把lighttpd/sbin加入到PATH中</p>

<h3>安装ruby版本的fastcgi</h3>

<p>1 安装fastcgi,到<a href="http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz">这里</a>下载</p>

<pre><code>wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
tar xzvf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure --prefix=/usr/local
make
make install
cd ..
</code></pre>

<p>2 安装ruby-fastcgi的绑定库,到<a href="http://sugi.nemui.org/pub/ruby/fcgi/ruby-fcgi-0.8.6.tar.gz">这里</a>下载</p>

<pre><code>wget http://sugi.nemui.org/pub/ruby/fcgi/ruby-fcgi-0.8.6.tar.gz
tar -xzvf ruby-fcgi-0.8.6.tar.gz
cd ruby-fcgi-0.8.6
ruby install.rb config --prefix=/usr/local
ruby install.rb setup
ruby install.rb install
cd ..
</code></pre>

<p>3 使用gem来安装fcgi,如果前面两步失败, gem 的install也会报错的</p>

<pre><code>gem install fcgi
</code></pre>

<h3>给lighttpd配置 ruby</h3>

<pre><code>    研究中.....
</code></pre><img src ="http://www.blogjava.net/cap/aggbug/24526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-12-18 21:26 <a href="http://www.blogjava.net/cap/archive/2005/12/18/24526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>awstats在lighttpd下的安装配置 </title><link>http://www.blogjava.net/cap/archive/2005/12/18/24524.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Sun, 18 Dec 2005 13:24:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/12/18/24524.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/24524.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/12/18/24524.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/24524.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/24524.html</trackback:ping><description><![CDATA[<h1>awstats在lighttpd下的安装配置 笔记</h1>

<p>本人对perl一窍不通,为了awstats,捣鼓了半天,特记录如下</p>

<p><a href="http://awstats.sourceforge.net/">awstats</a>是一个很好用的站点日志统计工具, 本身是用perl实现的, lighttpd也可以使用awstats来进行统计工作</p>

<h3>前提条件</h3>

<p>机器上需要perl (废话).版本最好新一点,虽然awstats对版本要求不高,但awstats提供了一些很有用的plugin,这些plugin对perl的module和版本都有一些要求
所以最好先升级到最新的5.x</p>

<h4>安装新perl</h4>

<ul>
<li>linux: 下载<a href="http://www.perl.com/CPAN/src/stable.tar.gz">最新的stable</a>包....懒得写了</li>
<li>solaris:直接去sunfreeware下载<a href="ftp://ftp.sunfreeware.com/pub/freeware/sparc/9/perl-5.8.7-sol9-sparc-local.gz">现成</a>的,下载下来 gunzip 以后用pkgadd -d 添加,注意要使新perl生效需拿/usr/local/bin/perl覆盖/usr/bin/perl,也可以在PATH中把/usr/local/bin提到/usr/bin前面</li>
</ul>

<h3>下载awstats</h3>

<p>到<a href="http://prdownloads.sourceforge.net/awstats/awstats-6.4.tgz">这里</a>下载</p>

<pre><code>wget http://mesh.dl.sourceforge.net/sourceforge/awstats/awstats-6.4.tgz
tar -xzvf awstats-6.4.tgz
cd  awstats-6.4
</code></pre>

<h3>lighttpd 配置</h3>

<p>lighttpd.conf中, 以下module需要打开(反注释掉即可)</p>

<pre><code>mod_cgi
mod_access
mod_accesslog
</code></pre>

<p>添加对cgi的配置, 下面具体perl的目录视环境而定</p>

<pre><code>cgi.assign = ( ".pl" =&gt; "/usr/bin/perl",".cgi" =&gt; "/usr/bin/perl" )
</code></pre>

<h3>awstats 配置</h3>

<p>1 修改awstats.model.conf的名字, 变更model为你自己的一个配置名字,下面提到的配置文件就是这个文件</p>

<pre><code>mv wwwroot/cgi-bin/awstats.model.conf wwwroot/cgi-bin/awstats.myname.conf
</code></pre>

<p>2 配置awstat,确保如下修改,</p>

<pre><code>LogFile="/path/to/access.log"  #和lighttpd中的accesslog地址一致,也就是实际上的accesslog文件路径

LogType=W 

LogFormat=1 #采用apache那样的日志格式

LogFormat = "%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot" #日志的字段配置

DirIcons="/awstats-support/icon" #这样是避免awstats用到的图片文件和原来的冲突

DirCgi="/cgi-bin-dir"  #替换默认的cgi-bin, 不知道为什么,反正我不喜欢cgi-bin这个名字

DirData="/path/to/yourdatadir" #数据文件存放地址,任意

SiteDomain="yourdomain" #改为你自己的域名
</code></pre>

<p>3 组装awstats,假定<strong>/path/to/yourwebdir</strong>是你的web根目录(对应"/")</p>

<pre><code>mv wwwroot/cgi-bin/ /path/to/yourwebdir/cgi-bin-dir #和DirCgi 一致

mkdir /path/to/yourwebdir/awstats-support/ #和DirIcons一致

mv wwwroot/* /path/to/yourwebdir/awstats-support/ #复制资源
</code></pre>

<p>这些操作的结果是</p>

<ul>
<li>把awstats安装目录下的wwwroot/cgi-bin 放到 <strong>/path/to/yourwebdir</strong>/<strong>cgi-bin-dir</strong></li>
<li>把awstats安装目录下wwwroot/其他目录 放到 <strong>/path/to/yourwebdir</strong>/awstats-support</li>
</ul>

<p>此时简单的awstats已经配置好, 重新启动以下lighttpd,然后执行</p>

<p>perl <strong>/path/to/yourwebdir</strong>/<strong>cgi-bin-dir</strong>/awstats.pl -update -config=myname</p>

<p>如果没有错误报告,就可以使用http://mydomain/<strong>cgi-bin-dir</strong>/awstats.pl?config=myname访问了 </p>

<h3>中文化</h3>

<p>awstats自带中文化界面,通过</p>

<p>perl <strong>/path/to/yourwebdir</strong>/<strong>cgi-bin-dir</strong>/awstats.pl -update -config=myname -lang=cn </p>

<p>可以强制使用中文,当然在配置文件里面也有一行Lang="auto" 可以修改为Lang="cn"</p>

<p>剩下的是搜索引擎中文化, 需要在配置文件里面打开这项<code>LoadPlugin="decodeutfkeys"</code>,不过打开这项需要perl有两个module: Encode 和 URI::Escape,现在得安装它们了
到[cpan]里面查找, 然后下载到<a href="http://cpan.linuxforum.net/authors/id/G/GA/GAAS/URI-1.35.tar.gz">URI</a> 和<a href="http://search.cpan.org/CPAN/authors/id/D/DA/DANKOGAI/Encode-2.12.tar.gz">Encode</a>
安装很简单, 步骤如下</p>

<pre><code>tar -xzvf xxx.tar.gz
cd xxx
perl Makefile.PL
make
make test #保险起见
make install
</code></pre>

<p>理论上应该都OK,有错误先check自己的perl版本</p>

<p>感谢<a href="http://www.chedong.com">chedong</a>提供的一个有中国特色的<a href="http://www.chedong.com/tech/search_engines.pm">search_engines.pm</a>, 覆盖<strong>cgi-bin-dir</strong>/lib下面的同名文件.然后重新使用awstats就OK了</p>

<p>最后在crontab中加上任务即可</p>

<img src ="http://www.blogjava.net/cap/aggbug/24524.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-12-18 21:24 <a href="http://www.blogjava.net/cap/archive/2005/12/18/24524.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>