我使用webpy框架配合nginx以及uwsgi有一段时间了,觉得这个搭配挺爽,nginx负责后台服务,webpy只负责应用程序,中间用uwsgi桥接。
最近业务上需要使用wiki来管理一些松散的知识,因此找到了moinmoin,现在将搭建方法,及wiki使用方法在此记录以便查看。
快速上手请参考这里
moinmoin的官方中文语法目录,这个上面讲了1.9x的语法。这个是完全正确的。其他网上搜索的不一定准确。
国内也有个公司提供了语法,而且baidu,google也基本搜的是这个,但是这个页面上的语法有些是此公司提供给moinmoin使用
的插件,例如showcategory插件,但是此插件只支持到1.8,1.9没有,因此它这个上面的语法也不一定都准确。
关于权限设定,这个博客讲的言简意赅,关于与nginx协作,百度文库有篇文章写的不错,这个篇文章是描述apache2的,但是结合nginx官方wiki,
基本整个思路就清晰了。
桌面版本的运行起来极其简单,直接运行wikiserver.py即可,但是有一个问题,就是只能在本机通过localhost访问。不能通过IP地址访问,哪怕本机
的也不行。因此桌面版的可以作为自己的资料收集或者摸索里面的使用方法使用。部署起来肯定得结合后台服务器。你可以选择nginx或者apache2。我
选择的OS环境是Ubuntu 12.04 server版本,python是2.7和2.6,参考moinmoin2.0计划就知道Pythond的版本支持了。
以下按照上文所说博客梳理一遍
1,安装,
python setup.py install --force --prefix=/usr/local --record=install.log
实际上,--force,--prefix也可以不写。好像也是一样,自动默认安装到/usr/local目录。record的好处是你可以查看Install.log看看安装过程究竟做了些
什么事情。
2,一般会安装到/usr/local/share/moin目录下,在次目录下将自己的wiki建一个新目录,例如mywiki,目的是以后整理资料方便,所有文档都在这个目录下。
将moin目录下的,data,underlay文件夹以及config/wikiconfig.py和server/moin.wsgi拷贝到mywiki目录下
将静态文件拷贝到moin下,原位置在/usr/local/lib/python2.7/dist-packages/MoinMoin/web/static/htdocs,将htdocs拷贝到moin目录下。
我不需要改这些文件的权限,因为我的nginx设置的权限组比较高。
以上文件的作用是
data:用户博客资料
underlay:主题
wikiconfig.py,配置文件,包括权限控制,首页等等,这里面还包含data和underlay资源的搜索路径
moin.uwsgi,nginx执行后台应用程序的桥梁,脚本。
htdocs,wiki框架文件,支撑页面显示布局的。
还需要在moin.wsgi中设置Python脚本wikiconfig.py的搜索路径。即:sys.path.insert(0, '/path/to/wikiconfigdir')
经过以上步骤,moin这边的配置基本搞完。
3,nginx配置
其实nginx关于Moinmoin的wiki页面,已经说的很核心了,但是说的不够清楚,这里贴下我更改后的代码
in moin.wsgi,这个没啥好说的。
app = make_application(shared=False)
这里面的第一个location是说上文所说的基本网页文件的位置。moin_static196是moinmoin的自身请求路径,看下nginx的accee.log和error.log就知道
第二个location是你所要设定的wiki站点路径,我就设置为根目录,在里面设置好根目录,moin.wsgi脚本目录,uwsgi_pass即可
这里说下uwsg_pass后,可以用127.0.0.1:9000或者一个unix套接字。
location moin_static196 {
alias /path/to/MoinMoin/web/static/htdocs;
}
location / {
gzip off;
include uwsgi_params;
uwsgi_param UWSGI_SCRIPT moin.wsgi;
uwsgi_param UWSGI_CHDIR /usr/local/share/moin/mywiki;
uwsgi_modifier1 30;
uwsgi_pass unix:/path/to/uwsgi.socket;
}
uwsgi,启动命令
./uwsgi -s /tmp/uwsg.socket --wsgi-file /usr/local/share/moin/mywiki/moin.wsgi
第二部分:使用方法,主要是权限控制
一、这里主要配置wikiconfig.py
1,设置超级帐号#superuser = [u"YourName", ]
2,设置允许acl权限控制列表,acl_enabled =1
3,设置acl_rights_before,这个简单的理解就是第一匹配原则,就是说这个里面设置的权限是不会被覆盖的。
包括不会被页面中用acl语句设置所覆盖。
acl_rights_before = u"YourName:read,write,delete,revert,admin"
4,设置默认acl_rights_default,这里配置默认全局权限,包括各种组。
Known表示已注册用户,DevGroup表示开发组,AdminGroup表示管理组,All表示所有匿名用户。
acl_rights_default = u"Known:read DevGroup:read,write,revert AdminGroup:read,write,revert All:read"
5,设置语言 language_default = 'zh'
5,设置显示第一个页面page_front_page。默认情况下,monimoin开始会显示lanauagesetup页面,这个很讨厌,
你可以设置为page_front_page=u'index。即/index,这个页面你可以理解为首页。
6,设置你想要一直显示的标签页,在navi_bar上自己增加即可,一般建议不超过6个
二、浏览器端配置。
1,浏览器端访问后,如果在一个页面上单独加权限可以这样,在此页面的第一行顶格写。
#acl +yourname:read,write,delete,revert All:read
#acl DevGroup:read,write,delete,revert All:read
3,想给某个用户加到一个组,例如dev1用户加到DevGroup组,因为这个组的权限已经在wikiconfig.py中设置好了,我们只需要建立
DevGroup的页面,在这个页面一定按照这样的格式写。*前后只空一格,不一定要顶格。
* Dev1
* Dev2
3.1 ,,当然DevGroup页面也是可以添加权限控制,比如只有这个用户组的人才能有权限看这个页面。
这个就和上面说的方法一样。顶格写
#acl +DevGroup:read,write,delete,revert All:
3.2 ,,管理员用户因为是
acl_rights_before
所以肯定能看到,否则即使设置了超级用户也没有用。
这一点很迷惑人,我此前一直把acl_rights_default 、acl_rights_before,和页面中的#acl权限控制,以及用户组的加入搞混淆了
4,其他:除此之外,类似于页面分类之类的都在浏览器端完成了。这个可以参考前两段给出的参考资料。