« February 2006 | Main | September 2006 »
August 20, 2006
配置Mediawiki支持短URL
为了美化URL,今天花了巨多时间在这个看似简单又讨厌的问题上面。中午觉也没有睡。首先来个惯例的Step by step 安装步骤吧。
1.下载mediawiki
由于测试机是php4.3.9,为了不麻烦,偷懒用了个1.6.8的版本,支持php4.x
2.解包
tar xfz mediawiki-1.6.8.tar.gz
mv mediawiki-1.6.8 /var/www/extsuite/mediawiki
3.设计站点URL
计划要用http://wiki.extmail.org来访问整个wiki,因此所有的http://wiki.extmail.org/index.php?title=article_title 需要影射成为http://wiki.extmail.org/article_title
4.参考
http://meta.wikimedia.org/wiki/Using_a_very_short_URL
注意这个链接访问不了,必须使用代理才能访问,在这里,感叹一下我们的自由是多么脆弱。一点小小信息都不能看,Damn it :-(
5.实施
Apache的虚拟主机配置:
ServerName wiki.extmail.org
DocumentRoot /var/www/extsuite/mediawiki
Options MultiViews
AllowOverride None
Order allow,deny
Allow from all
Options FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php?title=$1 [L,QSA]
Options MultiViews
AllowOverride None
Order allow,deny
Allow from all
# avoid execution of PHP scripts in upload directory
AddType text/plain .php
AddType text/plain .phps
chmod a+w config
然后访问http://wiki.extmail.org/config/
配置完毕,生成数据库后:
mv config/LocalSettings.php .
配置LocalSettings.php
正常默认就是下面:
$wgScriptPath = "";
$wgScript = "$wgScriptPath/";
$wgRedirectScript = "$wgScriptPath/redirect";
然后修改下面:
$wgArticlePath = "$wgScriptPath/$1";
include "extensions/GeshiHighlight.php";
6.配置使用/wiki/的方法
希望访问wiki 的url为http://www.extmail.org/wiki/xxx
1-5的步骤略去。给出apache 的配置:
ServerName www2.extmail.org
DocumentRoot /var/www/extsuite/html
Alias /mediawiki /var/www/extsuite/mediawiki
Alias /wiki /var/www/extsuite/mediawiki/index.php
Options MultiViews
AllowOverride None
Order allow,deny
Allow from all
Options FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php?title=$1 [L,QSA]
LocalSettings.php:
$wgScriptPath = "/mediawiki";
$wgScript = "/wiki";
$wgRedirectScript = "/wiki/redirect";
$wgArticlePath = "$wgScript/$1";
include_once("extensions/GeshiHighlight.php");
唯一的缺点是在登陆或退出时,URL是http://www2.extmail.org/wiki?title=xxx&xxxx=xxx
因为apache配置里将/wiki => index.php了,所以wiki?参数就和index.php?参数一致了。嘿嘿。
Posted by hzqbbc at 05:02 PM | Comments (0)
August 06, 2006
IPtables 规则错误导致DNS查询失败之解决办法
受朋友之托,检查其主机上的iptables规则引起的dns问题。主要现象是打开了如下的规则后,squid就不能正常的查找主机的ip地址,dns解析试销。
# Generated by iptables-save v1.3.4 on Sun Aug 6 11:28:42 2006 *nat :PREROUTING ACCEPT [293:39183] :POSTROUTING ACCEPT [5:299] :OUTPUT ACCEPT [5:299] COMMIT # Completed on Sun Aug 6 11:28:42 2006 # Generated by iptables-save v1.3.4 on Sun Aug 6 11:28:42 2006 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [949:834012] -A INPUT -p tcp -m multiport --dports 21,25,80,81,110,143,3128 -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT -A INPUT -p udp -m udp --dport 53 -j ACCEPT #-A INPUT -p udp -m udp -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec --limit-burst 10 -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m state --state INVALID,NEW -j DROP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP -A INPUT -p udp -m udp -j DROP COMMIT # Completed on Sun Aug 6 11:28:42 2006
当屏蔽了上述规则中#-A INPUT -p udp -m udp -j ACCEPT 的规则后,squid就无法正常工作了。在机器上用nslookup 查询主机名 + 外部dns ip,发现timeout,应该是udp包无法发送到对方的dns服务器53端口。
后来man了一下iptables,发现可以用LOG来记录ip包的情况,于是打开log,增加了如下的规则集:
-A INPUT -j LOG -p udp -m udp --log-prefix "DNS monitor: "
重新启动iptables,在/var/log/message里看到如下信息:
注意这里的SPT=53 DPT=33036,检查一下规则发现放行的是目的地53口,没有发行源端口(即sport),估计问题在这里,于是增加一条记录:
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
重新启动后,正常了。看来,没有log的帮助还一时搞不明白为什么。也怪平时没仔细研究iptables,嘿嘿,通过这次也受到教训了:-)
Posted by hzqbbc at 12:01 PM | Comments (3)