'wiki' Tag

  • MoinMoin 与 Nginx, fastcgi 与 uwsgi 的配置

    October 13, 2010

    给自己架了个Wiki http://wiki.ptsang.net作为自己的知识管理工具。虽然这个博客本来就是工具之一,也累积了快两年了,但经常碰到有些小东西,不值得为之写篇博客,很有用,但用完就忘记。个人wiki适合做写细小的笔记,当累积一定的时候还可以整理成博客。 Wiki我选择了用Python的MoinMoin,一定程度上受CPYUG社区 ZoomQuiet 大妈的推荐影响,首次试用感觉非常impresive,所以就定了。再加上 GraphViz 工具的支持,实在的强大。 在vps上服务,肯定是无视apache的,内存有限。之前架设过用来上Twitter奶瓶腿,是Nginx + php-cgi的方案,nginx是必须的。 Python跟web前端的架构方式有太多选择了,五花八门,MoinMoin的发行包里面都提供了moin.cgi moin.scgi moin.ajp moin.fcgi moin.wsgi等多种启动方式。MoinMoin里面全部通过内置的flup作为中间件提供这些接口,目前我仅尝试使用了fastcgi和wsgi。 虽然解压了moin的源码包就可以直接运行里面的wikiserver.py来本地访问了,但在服务器上通常是由nginx/lighttpd等服务来综合转发。php的话是通过spawn-fcgi启动一些php-cgi的进程,服务器接受到动态的请求就通过本地socket跟php-cgi通讯,返回的结果展现回给客户。php-cgi是使用FastCGI协议的。 MoinMoin 源码当中wiki/server/moin.fcgi就是一个类似php-cgi功能的fastcgi服务,类似地可以使用spawn-fcgi来启动moin.fcgi,作为后端的处理进程。 Running MoinMoin Wiki with Nginx via FastCGI and Flup该文章很形象解释了fastcgi的角色,以及提供了一段很方便的服务脚本来启动spawn-fcgi。 Client ----> Nginx Web Frontend -----------+ | fastcgi_pass \|/ +-------------------------+ moin.fcgi | spawn-fcgi-moin.socket | spawn-fcgi ---------------> | or | | localhost:port | +-------------------------+ 但是文章当中的nginx配置不完整,而且复杂了,这是我的配置: server { listen 80; [...]

  • Google Code项目Wiki页在SVN仓库被复位后无法修改的Bug

    October 27, 2009

    update:2010.1.25这个问题的状态终于被改成Fixed。 Google Code的项目控制因为其简洁深受很多开源作者的喜欢,PT好几个项目都是存放在Google Code上,不过之前遇到了一个些少恼人的Bug: 当建立了Wiki页,因为某种原因重置了SVN仓库,那原来的Wiki页将无法修改、无法删除(返回500 Server Error)。 重置SVN一般属于特殊情况,比如要把另外一个服务器的SVN仓库搬到另外一个SVN,而只保留后来的版本数据,才需要重置SVN仓库。我当时的情况是,不小心把包含自己帐号密码的测试脚本提交了上去SVN;版本管理的特点是版本修改是无法被抹除的,情急之下只好放弃版本痕迹,备份了文件,请求了SVN重置;之后就发现原先的Wiki页无法修改了。 一番查找后,发现Google Code自身的Support里面早有人发现了这个问题,可以看到,这个Bug第一次在2007年11月就有人提出了,一直到现在都陆续有人确认Bug依然存在……所以当时我就没管那个有问题的Ghost Page了,任其放着;两年都没有修复的bug看了没什么好指望的了; 不过最近这个问题有人提出了个颇为纠结的解决办法:创建wiki/the_page文件(跟之前的wikipage同名),然后不断修改递交svn,当svn的revision版本号高于重置之前wiki page最后修改的版本号,就可以修改或者删除这个Ghost Page了…… 想到我那个项目现在的版本号早就超过了之前重置SVN仓库时候的版本号,直接跑去wikipage点Delete this page,哈,直接搞定了! 从这个Bug可以透视到Google Code的Wiki页构建机制:Wiki页跟SVN仓库内相应文件是紧密互动的,在Web对Wiki页的修改就相对于直接提交了相应SVN内的文件,当直接修改SVN内的Wiki文件时候,Web上的Page自动根据SVN刷新WEB页的缓冲,并记录文件的修改版本号;而重置了SVN仓库将导致SVN的版本号从0重新开始,这样Wiki页的缓冲模块没法找到相应的版本号对应的wiki文件进行操作,所以报告500错误;只能当版本号重新达到原先的最后修改时,Wiki Web才能正常的和SVN交互。 另外有趣的是,Google的程序员似乎对修复这个Bug没什么兴趣;可能容易引起新的bug吧,呵呵。

Page optimized by WP Minify WordPress Plugin

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org