2007年2月24日星期六

blogger无法正常发布文件到blogspot的问题

大概2003、2004年我就注册了blogger帐号,具体时间记不请了,不过我的gmail帐号就是从这里来的,后来有人宣传blogger可以自动发布到sitesled,而blogger还支持邮件发布,反正我的blog内容也会用邮件订阅到自己的邮箱,所以我就在sitesled开了个 分店,一直正常使用。

后来,blogger又搞了个beta,我也去趟了趟混水,不过这次没有用ftp发布,而是直接发布到blogger的blogspot上了,这就形成了第二个分店

由于自己的blog一直是在独立域名和空间上挂着,所以这些分店偶尔会少个一两篇文章我也不怎么在意,可是当blogger的beta结束之后,blogger改用了google account帐号登录,我的两个分店也都整合到了一个blogger帐户下,不仅邮件发布地址冲突了(已经更正,没事了),我还发现 sitesled的分店就能够正常发布文章,而blogspot分店在beta结束之前没事,beta结束之后就无法正常发布文章了。

逐项进行检查,邮件发布地址没问题而且不冲突、不重复,转发邮件也没有退信,都正常发出去了,问题出在哪儿呢?碰巧 gfans上也有人反映blogger发布的问题,于是乎我把两个分店的设置逐一对比,终于找到了问题所在。

在能够正常发布的sitesled分店设置页面,"格式设定"中的时区和语言都是中文,而无法正常发布的 blogspot分店,"格式设定"中的时区和语言都是英语,所以把他们更改为中文和香港时间东8区,再次发送邮件,果然能够正常在blogspot发布了。

简单猜测一下原因,是不是blogger在生成发布页面的时候,针对用户所设置的语言来生成页面文件,虽然目标文件是utf8格式的,但是文字内容需要经过从邮件中解码、un-base64等计算,再转换为utf8,如果用户语言设置错误的话,在这些转换的过程中会出错,所以文章根本就没有存到blogger当中,更别提后续的发布操作了。

我还联想到,同样是gfans中有人问,google的spreadsheet&docs生成的pdf文件,中文怎么无法显示或者乱码呢?这个的原因应该就简单了,因为在我们伟大祖国的it领域,没有一款免费的中文矢量字库,google显然不会用盗版,安装windows系列服务器也不现实,所以,生成的pdf中自然就没有中文的身影了,这一点和linux下有些应用程序生成的pdf文档中的中文是一样的情况和道理。

Source:http://www.fwolf.com/blog/post/295

web访问:匿名,穿越,加速,缓存,一个都不能少

导火索是我的foxyproxy不好用了,本来不怎么使用tor的, wikipedia我也不怎么上,可是最近不仅sitesled上不去了,连反spam的 Akismet也上不去,导致spam无法识别,越积越多,只能直接删除了事。edgy中的firefox升级为2.0.0.1,我又把firefox的profile文件夹位置挪动了一下,从那以后foxyproxy 就没有好用过,不是提示莫名其妙的错误,就是丢失配置,连右下角的图标和状态文字都经常消失。foxyproxy的作用也就是在我访问不同网站的时候,判断是否启用tor,原来 说过privoxy也能实现,今天我就小小的研究了一下,并且把相关的匿名web访问、穿越网络屏障、访问缓存及加速串起来,形成一套完整的工具。

我们使用到的工具是privoxy torsquid这三个。

Privoxy是代理转发器,他负责控制那些访问使用代理,使用那个代理。
Tor是socket代理服务器,通过他可以确保目标网站能够访问并且使用者的真实ip不会被记录。
Squid是一个缓存服务器,可以实现访问加速的目的,同时还可以过滤掉广告、js等内容。

Privoxy:

privoxy的主配置文档为/etc/privoxy/config,修改完不用重启privoxy就能生效,在这个文件中添加内容如下:

forward / .
#forward-socks4a .ip109.com localhost:9050 .
#forward-socks4a www.ip109.com localhost:9050 .
#forward-socks4a www.ip1?9.com localhost:9050 .
forward-socks4a .ip1?9.c*:80 localhost:9050 .

privoxy的匹配规则是从大到小的,也就是范围最大的放在前面,范围小规则的放在后面,匹配的时候会从前到后,使用最后有效的规则。所以第一条forward是默认让所有访问都走代理,后面的forward-socks4a则是定义访问指定网站需要使用代理,并且是转发到socket代理服务器tor那里。forward-socks4a规则中需要经常变更的就是target_pattern了,就像我写的那4行,其实都是可用的,"?"可以用来通配单个字符,"*"可以用来通配任意字符,"."放在pattern两端表示之前或之后还有内容,pattern两端是正常字母就说明前面或者后面没有内容了。注意"http://"不能加,否则匹配不上,但是可以用"hostname:80"或者"hostname:443"等方式替代。如果无法访问非443端口的https网站, 可以在default.action文件中把

-limit-connect \

更改为

+limit-connect{80,443,8443} \

就可以了,这是因为provoxy默认限制了对非443端口的https访问,详细的解释在 这里

另外privoxy的default.action文件默认设置屏蔽了很多广告什么的,包括google adsense都显示不出来,建议用空文件替代之,并逐步用自己的规则来完善,所以如果只保留上面对https网站的访问规则,default.action就是:

{+limit-connect{80,443,8443}}
/

Tor:
正常安装,默认配置就可以,监听9050端口。安装完成之后,把浏览器的proxy设置为127.0.0.1:8118,应该就可以访问了。

Squid:

配置文档为/etc/squid/squid.conf,添加如下配置内容:

# 监听端口地址
http_port 127.0.0.1:3128
# 缓存保存位置,1000为缓存总大小(M),16为一级目录个数,256为二级目录个数
cache_dir ufs /var/spool/squid 1000 16 256
# 只允许从本机访问
http_access allow localhost
http_access deny all
# 配置privoxy为squid的上级(squid的出口连接)
cache_peer localhost parent 8118 7 no-query default

visible_hostname localhost
# 全部使用privoxy代理出去,不允许直接连接外网
never_direct allow all

# 显示声明8443端口能够访问,不然这个非标准https端口就又没法用了
acl SSL_ports port 8443
acl Safe_ports port 8443

添加了squid之后,浏览器的代理服务器就不要设置privoxy了,而是要指向Squid:127.0.0.1:3128,这样,我们的web访问会先到squid,如果缓存中没有,再通过privoxy访问外网,并且根据规则使用tor进行匿名加密访问。

现在我们的web访问可以说是无所不能了,并且这三个软件占用系统资源都不多,tor稍微多些,占8.4M内存,privoxy占450+k内存,squid占3.2M内存多,所以对系统的速度影响不大。只是squid服务启停稍微慢一些,不过增加缓存服务器对web访问加速的效果还是很明显的。

一般浏览器的代理设置中,对本机的访问一般都会设置为例外即不使用代理,firefox也是这样,所以对调试本机程序没有什么影响。特殊情况确实需要完全"刷新"页面的,按住"Shift"键再点F5刷新即可,再特殊一点的情况,就把代理更改为privoxy 8118,跳过squid,或者暂时禁用代理就可以了。

另外值得说的是,privoxy和squid都有比较完备的访问控制功能(基于ip或者主机),用来在局域网内架设服务,提供到外网的访问代理服务,是再方便不过的了。什么,sygate、wingate?很久都没有听说过这些名词了,呵呵。

Source:http://www.fwolf.com/blog/post/294

2007年2月20日星期二

Azureus崩溃的解决+2个网站推荐

过年当然要多下点电影看咯,可是Azureus不争气,开了一晚上电脑下电影,早上起来却发现azureus早罢工了,不仅如此,想再次打开也不行!启动之后,就闪一下主界面,就没了,手快的话能够把屏幕截下来,正在下载的种子还都在,系统为ubuntu 6.10 edgy,azureus 2.5.0.0

找到错误信息上网查了查,有说需要升级libstdc++5的,有说需要从azureus网站直接下载jar文件覆盖现有文件的,还有更改环境变量的,不过这些方法感觉都比较悬,有些根本没用,最有有个人出了个招,把$HOME/.azureus/logs下面的文件都删除,就可以了。我试过,还真行,logs目录下只有一些.log文件,不过删除之后azureus确实能够启动正常使用了,并且和全部删除$HOME/.azureus目录的方法相比,用户设置还能够完整得保留下来。

顺便再推荐2个网站:

http://paste.lisp.org/,专门贴代码片段的网站,无需注册便可使用,主要想法是解决在irc讨论中,代码贴到irc频道里面观看不方便的问题,不过由于出身lisp族群,代码显示主要倾向于c, python, lisp, java等。另外对中文的支持也不行,看 我贴的这个vimrc,不仅没有vi那样的语法高亮,连中文都显示不出来。

http://545at.com/htm/jseasy.htm,国人作的一个ajax开源库, 论坛使用的是google groups,看了看在线演示,效果还是不错的,也很实用,小伙儿长得也挺帅:)

Source:http://www.fwolf.com/blog/post/290

[Game]安装automanic&lincity(失败)

EasyWine上看到的这个游戏,觉得和我以前玩的暴力赛车(tdr2000,现在还珍藏着呢,撞车就赚钱,把人家的车都撞坏了就胜利,特过瘾;还有一个更早的,可惜名字实在是忘记了,也找不到安装盘了,主角有两辆车可选,车子正中间都有一道类似嬉皮士头发的"锯齿",当然也可以换用其他车,鼠标是一只断掉了滴着鲜血的手!)有点类似,所以下下来体验一下。

automanic下载后,压缩包中既有源码也有二进制文件,直接运行的话,提示缺包,先是提示缺少libCgGL.so, libCg.so,这个可以从 nvidia官网下载,解压缩后,选择对应的架构,把同名文件ln到/usr/lib即可;然后又提示缺少libode.so,安装源中的libode0c2,然后把libode.so.0 ln为/usr/lib/libode.so;再提示缺少libcal3d.so.11,安装源中的libcal3d11c2a即可。

然后就是个大牌了,提示缺少Crystal Space,于是安装crystalspace相关的包:

aptitude install crystalspace (同时会装上libalut0 libmikmod2)
aptitude install crystalspace-data
aptitude install crystalspace-dev

但是游戏仍然无法运行,没办法,用源码手工编译好了:

./configure …
checking for cel-config… no
configure: error:
*** CEL could not be found or was unusable. The latest version is always
*** available from http://cel.crystalspace3d.org/

看来还缺少cel,大概也是crystalspace项目的一部分,而cel也没有提供二进制文件,源中也没有,所以需要手工编译,从这里下载下来 源文件包,解压缩然后./configure & make & make install。

也可以使用jam安装,crystalspace3d官方文档推荐使用jam,效果是一样的。可是安装完成之后,运行测试程序walktest却出错:

$ walktest
WARNING: could not load plugin 'crystalspace.graphics3d.opengl'
WARNING: failed to initialize plugin 'crystalspace.console.output.standard'
Segmentation fault

关于这个错误信息,这里倒是有个小讨论,解决方法,是安装mesa-dev,而我发现ubuntu中只有libgl1-mesa-dev和libglu1-mesa-dev,所以装上试试,同时还会安装上mesa-common-dev,安装完之后重新编译。。。重新编译以后,错误居然更多了:

$ walktest
WARNING: could not load plugin 'crystalspace.font.server.freetype2′
WARNING: could not load plugin 'crystalspace.font.server.freetype2′
ERROR: Couldn't load plugin with class 'crystalspace.font.server.freetype2′!
WARNING: could not load plugin 'crystalspace.graphics2d.glx'
Error loading Graphics2D plugin.
WARNING: failed to initialize plugin 'crystalspace.graphics3d.opengl'
WARNING: failed to initialize plugin 'crystalspace.console.output.standard'
Segmentation fault

看来问题没有解决,还是把那三个包删除了吧。再回过头看看crystal space所依赖的外部包,逐一检查是否安装正常,问题也许就出在这里。

zlib - zlib1g, zlib1g-dev都已安装
libpng - libpng12-0, libpng12-dev都已安装
libjpeg - libjpeg-progs, libjpeg62都已安装
jam - 也安装上了

再检查一下可选包

freetype2 - libfreetype6装上了,libfreetype6-dev没装,装之
cg - 上面说过了,已经装上了
ode - 同cg
bullet - 源中没找到对应,暂时先不装
cal3d - libcal3d11c2a已装,libcal3d11-dev没装,装之
lib3ds - 源中有lib3ds-dev,未装,装之
ogg/vorbis - libvorbis0a, libvorbisenc2已装,libvorbis-dev未装,先忽略声音问题,暂时先不装
libmng - libmng1已装,libmng-dev未装,装之,同时会捎带装上libjpeg62-dev liblcms1-dev
caca - caca-utils应该不用装吧,libcaca-dev未装,装之,同时会捎带装上libncurses5-dev libslang2-dev libx11-dev libxau-dev libxdmcp-dev libxext-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-xext-dev xtrans-dev
cegui - libcegui-mk2-dev未装,装之,同时会捎带装上libcegui-mk2-0c2a libxerces27 libxerces27-dev
wxWidgets - 看介绍好像没用,不装了
maps - 运行demo所需要的,不装了

。。。上述能装的都装了之后,再./configure,然后查看config.log,结果依然失望:

cs_cv_libCg=no

cs_cv_libgl=no

cs_cv_libode=no

cs_cv_libopenal=no

cs_cv_libsdl=no

这些明明装上了的包也识别不出来,或许是位置不对什么的问题,在config.log搜索glx也没有结果,以我的水平看来无法解决此问题了,就此打住,没用的东西都删掉,这个游戏我不玩了,清闲一点好好过年!

Update:

后来发现,我确实没有安装opengl的library,因为我忘记了凡是手工编译包的情况,都需要安装***-dev包,ev包中含有编译时需要的头文件,不带dev的包都只是二进制文件而已。所以,在安装 lincity的时候就顺利多了,凡是缺少的包我都能装上。不过最终还是没有能安装成功,因为configure之后,需要用jam编译,可我输入jam命令之后,电脑什么都不干,无奈只好再次放弃。下面是一些configure时缺少的包的安装记录:

checking for libxml-2.0 >= 2.6.11… Package libxml-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `libxml-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'libxml- 2.0′ found
configure: error: Library requirements (libxml-2.0 >= 2.6.11) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.

install packages: libglib2.0-dev libglibmm-2.4-dev libsigc++-2.0-dev libxml++2.6-dev libxml++2.6c2a libxml2-dev

checking for OpenGL library… no
configure: error: Couldn't find opengl libraries or headers

install packages: libgl1-mesa-dev mesa-common-dev

checking for sdl-config… no
checking for SDL - version >= 1.2.5… no
*** The sdl-config script installed by SDL could not be found
*** If SDL was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the SDL_CONFIG environment variable to the
*** full path to sdl-config.
configure: error: Please install libsdl >= 1.2.5

install packages: libaa1-dev libartsc0-dev libasound2-dev libaudio-dev libaudiofile-dev
libdirectfb-dev libdirectfb-extra libesd0-dev libfreetype6-dev
libglu1-mesa-dev libice-dev libjpeg62-dev libncurses5-dev libsdl1.2-dev
libslang2-dev libsm-dev libx11-dev libxau-dev libxdmcp-dev libxext-dev
libxt-dev x-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev
x11proto-xext-dev xtrans-dev

checking for SDL_mixer >= 1.2… not found
configure: error: Please install SDLMixer >=1.2.2

install packages: libogg-dev libsdl-mixer1.2-dev libsmpeg-dev libvorbis-dev

checking for SDL_image >= 1.2… not found
configure: error: Please install SDLImage >= 1.2.1

install packages: libsdl-image1.2-dev libtiff4-dev libtiffxx0c2

checking for SDL_ttf >= 2.0.0… not found
configure: error: Please install SDL_ttf >= 2.0.0

install packages: libsdl-ttf2.0-dev

checking for SDL_gfx >= 2.0.13… not found
configure: error: Please install SDL_gfx >= 2.0.13

install packages: libsdl-gfx1.2-4 libsdl-gfx1.2-dev

checking for physfs >= 1.0.0… not found
configure: error: Please install physfs >= 1.0

install packages: libphysfs-dev

再后来。。。我从lincity官网上发现,debian和ubuntu等linux下都有现成的二进制包可用,我居然舍近求远。。。猪年不利啊。。。:( 不过已经没有心情再安装了。

Source:http://www.fwolf.com/blog/post/289

2007年2月17日星期六

愤怒,无奈,失望

在家中实验好ubuntu edgy之后,开始在公司安装,但是,出乎意料的不顺。

本来公司的线路比家里的要好得多,可连接ubuntu官方给出的国内源一个快的也没有,海缆断之前, 都是直接连us.archive.ubuntu.com的,慢但是稳定,但是升级edgy要下载几百m的东西,我可没那个耐心等,前段时间连台大的源非常快,峰值能上5、6百k,但是今天不行了,经常是一大串错误,刚开始还以为是我抓得太快,对方给禁了,后来发现不对劲,直接web一看,原来是连接被reset了,如果是极个别包还好说,我自己上web抓下来放到apt cache里就得了,后来发现很多包都这样,真是气死我了。

连接被reset,原因虽然不很明确,但作者却不言而喻,大好的技术,作点什么不好,搞这些歪门邪道,再说搞也把质量控制好,不要清白不分!

这位弟兄大概也是遇到了和我一样的问题,巧的是,他的网络线路和地理位置和我一样。

实在没办法了,从这里又找了几个源,现在用着亚特兰大的那个,效果还算可以,一会几十k,一会儿能到几百k,大体还能够接受吧。

网通连不上电信也就算了,中国人连国内,包括台湾省,还不如连国外网络快,真是羞死人了。海缆断的一个多月中,好像就新闻上简单报了报,重点分析的就是一些国外留学申请,甚至还不如前几天vista发布在新闻上露脸的机会多,原来网络在我们这里,连P都不算。

鲁迅还能"横眉冷对"一下,我们连指都不知道该指谁。

Source:http://www.fwolf.com/blog/post/288

2007年2月12日星期一

把ubuntu dapper升级到edgy

其实早就该升了的,可是我怕不稳定,所以一直憋到现在,不过话说回来,什么LTS支持5年之类的,对普通桌面用户用处应该不大。

由于咱是老实人,所以还是使用官方提供的方法升级吧:

gksu "update-manager -c"

可是天不遂人愿那,我用的是cn99的源,firefox 1.5.0.8還是1.5.0.9版本有问题,打开有cookie的网站就挂,所以cn99源中大概删除了这个包,可我想用上面命令更新到edgy,就必须先把本机的包更新到最新版本,可这样只会得到错误:

。。。。

原来我搞错了,可以不升级包的,出现"Software Updates"窗口之后,默认会列出可更新的包,不过如果你是用"update-manager -c"命令调出来的,可以点一下下面的"Check"按钮,更新之后就能看到可更新软件列表上面出现了一行"New distribution release '6.10′ is available - Upgrade",点按钮按提示操作就能够升级到edgy了,不用手工修改源那么麻烦。

。。。。

直接升级太慢了,是从国外的archive.ubuntu.com上直接下载的,我還是手动修改源好了:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

。。。。

经过漫长的下载与等待,终于完成了,网速慢的同志们升级可一定要用光盘啊,或者在局域网中作个镜像,不然得下载个几天。兴高采烈的重启机器,求神拜佛保佑不要出现问题。。。可还是在启动的时候停住了,硬盘灯一直不亮,用recove模式启动,发现会停留在"waiting for root file system"错误信息,很长时间不动的话,会返回几乎一个什么都干不了的shell,用另外一台电脑上网查到 这里,用livecd启动进去,chroot some_dir /dev/hda,然后apt-get install udev。。。说实话这个地方我真不知道是怎么弄好的,udev也好,ubuntu-mini也好,我都没有敢实际的安装,因为看到随着安装需要删除的东西太多了。也不知鼓捣了什么,再一重启,居然就可以正常启动了,还有一样莫名其妙的就是启动splash没有啦,变成一行行原始英文往上滚了,中间居然还会变一下字体,寒。下次我再升级另外一台机器的时候,安装完就重新install一下udev,应该就不会出问题了吧?

不过好歹是可以启动了,登录以后,重新配置一下X,基本上使用就正常了,感觉读硬盘的效率高了一些;firefox2很好用;bash字体改变了,需要手工再指定为simsun,不然看着发虚眼睛疼;内嵌的文泉驿字体我没用,用惯ms字体了,不过原来给同时安装的使用用过,超赞的;几十个包无法升级,需要手工aptitude install一下,有些涉及到版本树的分支,其中很多都是python2.4的包变更为python的。

edgy还有一个很不习惯的改变,就是在fstab和grub中引入了uuid这个东西,比如升级后的fstab:

# /dev/hda1 — converted during upgrade to edgy
UUID=7fa1d627-0068-44ec-9beb-1701f1544e88 / ext3 defaults,errors=remount-ro 0 1

不知道uuid这个东东先进在哪里,不过照原来的/dev/hd?相比,直观性差远了,有什么办法调整回去没有?

Source:http://www.fwolf.com/blog/post/287

2007年2月8日星期四

用AWStats统计网站访问情况

AWStats是一款强大的日志分析工具,可以从你保存的服务器日志中分析出类似51.la统计的信息,当然,他的功能可不仅仅是web服务器的日志分析,还可以分析其他服务器比如mail服务器的日志呢。

awstats的官方安装说明繁琐了一些,其实没那么复杂的,也就下面几步。我使用的环境为ubuntu linux,apache2。

首先是awstats的安装,ubuntu直接apt就能装上了,也有用源码包或者源代码安装的,不过其实只是一些文件和perl程序而已,不用编译,放到合适的位置就可以了。/usr/share/awstats是一些语言文件、图标文件、库和插件,/etc/awstats下面是配置文件,核心程序awstats.pl放在/usr/lib/cgi-bin目录下,也就是常用的cgi程序目录,并且设置可执行权限。

然后就要对apache进行一番配置了,首先强烈建议把日志类型从默认的common更改为combined,这样日志文件会记录更详细的信息,便于分析:

CustomLog /var/log/apache2/access.log combined

如果服务器有多个虚拟主机的话,一般建议每个虚拟主机的log文件分别存放,不过awstats也能处理混合在一起的log,前提是combined类型log,common类型的log是不行的。iis系列的设定还是参照 官方安装说明吧,我不熟悉。下面来设置apache,配置web访问相关的设置,根据我的环境,apache的conf中添加如下内容即可:

Alias /awstatsicons "/usr/share/awstats/icon"
ScriptAlias /cgi-bin /usr/lib/cgi-bin
RewriteRule ^/awstats[/]? /cgi-bin/awstats.pl [R]

Options +ExecCGI

加上那句RewriteRule我只是为了访问更方便,以前几乎没有用过cgi程序,习惯http://domain.com/awstats这样的网址了。对apache的更改其实就是cgi运行环境的设定而已。

最后,我们还要针对要统计日志的每个网站,创建配置文档。/etc/awstats/awstats.conf是默认的配置文档模板,里面所有的选项都有详细说明和例子,所以只给出我的一个配置实例(awstats.localhost.conf):

# Basic
# —–

# 要分析的log文件地址
LogFile="/var/log/apache2/access.log"
# W - web log file
LogType=W
# Log format, 1-combined, 4-common
LogFormat=1
# Separator char in log file, default is " "
LogSeparator=" "
# 主机名和别名
SiteDomain="localhost"
HostAliases="127.0.0.1″
# DNS Lookup, 0-no, 1-full, 2-only from static dns cache
DNSLookup=2
# 结果数据存放地点
DirData="/big2/awstats_data/localhost"
# AWStats web-access url
DirCgi="/cgi-bin"
# 图标文件的apache虚拟目录
DirIcons="/awstatsicons"
# Allow update state from web interface, 1 to enable
AllowToUpdateStatsFromBrowser=1
# Allow full-year view function
AllowFullYearView=3

# Optinal
# ——-

# Create a lock file when update stats result, not open when no shell priv
EnableLockForupdate=1
# Static DNS file
DNSStaticCacheFile="/big2/awstats_data/dnscache.txt"
# 只能从以下ip地址访问
AllowAccessFromWebToFollowingIPAddresses="127.0.0.1″
# Xhtml report file instead of html
BuildReportFormat=xhtml
# Purge log file after use
PurgeLogFile=0
# Pic, file only marked hit and not download
NotPageList="css js class gif jpg jpeg png bmp ico swf"
# Include url parameters, but count only some param
URLWithQuery=1
URLWithQueryWithOnlyFollowingParameters=""
# Keep param in referrer urls
URLReferrerWithQuery=1
# Show problems in setup conf file
WarningMessages=1

# Use frame
UseFramesWhenCGI=1
# Open report in new window,0-no, 1-except using frame, 2-always
DetailedReportsOnNewWindows=1
# Show language change link
ShowFlagLinks="en cn"

常用的配置项应该就这么多,稍微重要一点的我都用中文注释上了,注意要确定log文件和储存结果的文件存在并且能够被apache用户www-data访问,配置到这里就基本上结束了,现在打开浏览器,http://localhost/awatats 就可以访问了,当然默认是没有数据的,因为还没有进行分析,如果设置了相应的选项,可以从web页面直接下达更新指令,也可以使用如下命令更新:

perl /usr/lib/cgi-bin/awstats.pl -config=localhost -update

分析完成的结果就可以通过web页面观看了。

在实际应用当中,如果apache日志是不截断的,也就是说所有时间的日志都保存在access.log文件当中,虽然awstats能够自动辨识上次处理的进度,只处理新产生的那一部分日志,但堆一个大文件在这里还是会有些不方便,所以建议把apache日志截断,linux下可以直接把access.log改名,windows下则需要改名并重启apache,不然apache会很聪明的把日志写到改名以后的文件中。这样我们的log文件名中就带有日期了,在conf文件中可以这样指定:

LogFile="/var/log/apache2/access.%YYYY-24%MM-24%DD-24.log"

在这个例子中,我的log文件名类似access.20070206.log的模式,并且把awstats.pl放到cron中,每天都自动处理前一天的日志,所以用"%YYYY-24%MM-24%DD-24"来指定24小时以前日期的年、月、日,只要7号的某个时间执行更新脚本,得到的日期就肯定是6号了。

LogFile理论上还可以识别多个log文件和gz格式的log文件,不过我也不知道怎么写才合适,只有请教过路大侠了。

参考:
Configuring Awstats with Apache 2 on Ubuntu

Source:http://www.fwolf.com/blog/post/286

2007年2月6日星期二

创建本地ubuntu mirror(镜像)

前两天成功"欺骗"一位同事安装了个ubuntu dapper,能够得手的原因主要是他忙于在网上看小说,原来的xp被恶意软件、恶意网站和病毒搞垮了,而我为他安装的linux和firefox对这些都基本免疫,所以才能够得手。如果能够再克服activex和msword两个障碍,就可以推广到更大的范围了。

安装很顺利,不过使用的是外置usb光驱启动安装,所以读盘的速度比较慢,下回我会尝试下载一个server版的光盘安装,会快很多,只是安装完要在手工安装desktop包。另外安装完成以后按照" 官方配置指南"配置中文和java等也需要下载一些东西,我这里是网通的线路,官方的源中很少有快的,除了国立台湾大学的。不过这样总不是办法,随着线路情况的变化,这些源的快慢变化不定,还是局域网内有一个稳定的源最为稳妥,所以萌生了mirror一个ubuntu的念头。

作一个镜像也很简单的,只要有一台ubuntu,配置好apache,安装上rsync程序,准备足够的硬盘空间,就可以了,通过rsync编写一个小的脚本,就可以了,脚本如下:

#! /bin/bash
rsync -aPS –delete-after \
–exclude *amd64* –exclude *ia64* \
–exclude *powerpc* –exclude *sparc* \
–exclude *hoary* –exclude *warty* \
–exclude *breezy* \
–exclude *.iso \
–exclude *.orig.tar.gz –exclude *.diff.gz \
–exclude *.dsc \
rsync://archive.ubuntu.com/ubuntu \
/home/ubuntu

这个例子抄自这里,从hiweed传出来的,不过注释有些小错误,更正如下:

exclude amd64 ia64 powerpc sparc 是去掉不想要的架构
exclude hoary warty breezy 是去掉不想要的发行版本
exclude .iso 是去掉光盘镜像文件
exclude orig diff dsc 是去掉源代码软件包(?)
rsync://… 是镜像来源,和source.list中的一样
/home/ubuntu 是镜像文件保存到哪里

apache配置虚拟目录就不说了,以后局域网的电脑的source.list就简单了,比如deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ dapper main restricted universe multiverse里面,把网址http://…部分更换成内网服务器地址,比如 http://server/ubuntu/就可以了。

crontab -e把这个脚本放到cron中,每天执行,嘿嘿。

# m h dom mon dow command
0 4 * * * /home/fwolf/rsync_ubuntu.sh

镜像不知道需要花费多少空间,有了结果以后再告诉大家。

Source:http://www.fwolf.com/blog/post/285

2007年2月3日星期六

Message rejected for Sector 5 policy reasons

用邮件订阅了一些google groups讨论组,发现有些文章值得保存的话,我会用mail forward转发到自己的另外一个讨论组,这样便于以后查找,可有些邮件在转发的时候会失败,gmail会返回一封"Delivery Status Notification (Failure)"发送失败的邮件,内容如下:
This is an automatically generated Delivery Status Notification

Delivery to the following recipient failed permanently:

somewhere@googlegroups.com

Technical details of permanent failure:
PERM_FAILURE: Message rejected for Sector 5 policy reasons

—– Original message —–
……

退信的原因是"Sector 5",而这个神秘的"Sector 5" google并没有给出详细的内容,哪怕是出处也没有。网上也有很多人遇到了类似的情况,甚至在一些google groups中也有讨论,但都没有结果,google官方也没有出面指明。不过,今天在看某个电影的时候,发现了这个:

FBI WARNING

这是大家常见的"FBI WARNING"信息,就是警告信息,一般正规影碟前面都有的,告诉观众不得非法传播、拷贝,否则最高可以判5年徒刑或者罚款25万美元(够恨的),而在这些的法律依据,就是"Title 17 U.S.Code, Section 501, 506 and 508"。

所以我觉得gmail退信的原因,和这个Section 501等等有关系,没准就是同一部法律,或者类似的条款,都是关于版权保护的内容。gmail在我转发邮件的时候,发现转发的内容不是我写的,并且和其他groups中的文章惊人的相似,所以就以"Sector 5"为由,拒绝我传播"盗版"了。

Source:http://www.fwolf.com/blog/post/284