升级到 typecho 0.9,以及typecho在kangle下伪静态问题的解决

今天正好在折腾服务器,想起来了自己的typecho一直无法禁用启用插件。后来跑去Google查了一下,发现这其实是普遍问题,比如说官方论坛的帖子kangle服务器下启用伪静态的一个bug,以及无法激活主题模板,都提到了这个问题。

还有 typecho 0.9 貌似内置了 Markdown 的解释器,不知道是怎么实现的。我把之前的插件给禁用掉之后,原来的文章全部都不解析了。可能还需要再看看源码才可以。

这里给出 typecho 0.9 在 kangle 下可用的伪静态.htaccess文件。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1?%{QUERY_STRING} [L]

修改过去之后就可以正常使用伪静态了,后台禁用开启插件、切换主题一切正常。

新版 typecho 的管理后台真心漂亮,升级过程也非常简单。推荐还没有更新的朋友们(咦……应该只有我没更新了吧……)去更新一下看看。

UPDATE:刚刚去看了一下数据库,发现 typecho 控制 Markdown 与否,是在数据库中的对应条目的文章内容前加上<!--markdown-->。你可以使用以下SQL语句来更新你的数据库,让以前的文章也使用 Markdown 解析。

UPDATE `typecho_contents` SET `text`=CONCAT('<!--markdown-->',`text`)

在CentOS 6下安装配置Squid缓存服务器

基于成本考虑,这次把博客折腾换到了东海岸。

东海岸的机房真不是一般的慢啊,已经快慢掉渣了。不争气的服务器和拉车的老牛一样慢,一个页面四五秒钟都加载不起来。

翻了一下现在市面上的CDN,都不满意,不是速度慢就是被墙了,想来想去,还是自己再弄个LA机房的服务器反代过去,充当一个“伪”CDN好了。

于是弄了个LA机房的VPS,还是自己习惯的CentOS6.2。不知道为何对CentOS比较有感情,虽然最近接触Debian觉得真是个好系统。说不定从哪天开始就移情别恋了=-=

好了说正事。在CentOS下装Squid并不难,如下:

yum install squid

好吧如果文章就到这里就没有了你们一定会喷我的。所以文章还没结束——还有最重要的,把Squid作为一个反向代理服务器来配置。

用yum装好之后,squid的主配置文件在/etc/squid/squid.conf,装好之后里面一堆东西,其实我们全部都可以不要。如下把它删掉:

mv /etc/squid/squid.conf /etc/squid/squid.conf.bak
vim /etc/squid/squid.conf

然后敲以下配置:

acl manager proto cache_object
http_access deny manager
http_access allow all
http_port 80  accel vhost vport #反向代理监听端口
cache_peer 192.168.1.1 parent 80 0 no-query originserver round-robin  name=web #源服务器端口和IP地址,以及名字
cache_peer_domain web !localhost #对应域名设定源服务器
forwarded_for truncate #截断X-Forwarded-For,防止IP地址欺骗;也可以不要这一行
cache_mem 32 MB #内存缓存大小
cache_dir ufs /var/spool/squid 100 16 256 #磁盘缓存设置
coredump_dir /var/spool/squid
refresh_pattern -i (/cgi-bin/|\?) 0    0%      0
refresh_pattern -i \.php 0    0%      0
refresh_pattern .              0       20%     4320

如果像我一样只有一台服务器,那就按上面的配置就好了,把192.168.1.1改成你源站的服务器,然后就算设置完成了。

如果你有很多不同的服务器,然后想对应不同的域名,就修改其中的cache_peer如下:

cache_peer 192.168.1.1 parent 80 0 no-query originserver round-robin  name=web1
cache_peer_domain web1 best33.com
cache_peer 192.168.1.2 parent 80 0 no-query originserver round-robin  name=web2
cache_peer 192.168.1.3 parent 80 0 no-query originserver round-robin  name=web3
cache_peer_domain web2 web3 oott123.com

最后重启squid,设置开机自启动

service squid restart
chkconfig squid on

这样就算配置完了。

QQ邮箱什么的

一直以来都喜欢腾讯家的邮箱,稳定,低调,不浮夸,算是腾讯产品线中不可多得的良心产品。在国内访问的速度比起Gmail来那叫一个快……大概是因为没有其它可以做对比的对象吧,感觉QQ邮箱确实还是做得挺好的。对于我这种不能免俗的在桌面上使用Windows+QQ的忠实用户,不用再开一个客户端来进行邮件提醒真是有够给力的。

QQ邮箱团队给我的感觉是一个很具有活力的团队,经常对邮箱进行一些细致的思考和修改,每次看更新日记都有一种“咦,和我想得一样”的感觉,大概是我和邮箱团队的缘分吧~笑。(顺便说,Gmail每次更新都有一种“咦,这个太棒了,怎么会这样?”的感觉……)

今天爬上邮箱,随手点了一下容量数字,发现又可以升级了。原本是有1048576G(好像是1024TB吧?相当于1PB来着。),点了一下升级,按QQ邮箱的翻倍策略我以为我的邮箱要到2个PB的容量了,没想到我看到了这样一个界面:

咦,当时就震惊了,居然是无限容量~
嘛,虽然说对“无限”这种概念全是不是很有感觉,但是怎么说呢,看到还是忍不住要截图炫耀一下=-=事实上,我的其它的邮箱基本都是通过QQ邮箱管理的,所以日常使用还是比较多的。刚刚看了一下,使用概况大概是这个样子:

用掉了4个G,也算是重度的QQ邮箱用户了。之前也说了QQ邮箱的好处,就是在于免客户端、速度快、访问稳定,UI基本上也中规中矩,不浮夸,看起来很舒服。有邮箱独立密码在,在QQ号被钓鱼的时候也能减小风险,整体来说是一个不错的邮箱选择,在国内大概找不出第二家这样好的邮箱服务吧。什么?你说网易?我就不想吐槽163.com/126.com的广告小尾巴了,这都什么年代了,还不取消么?

对于逼格更高的Gmail、Outlook.com之流,对于半个小时检查一次邮件、又无比抵抗邮件客户端的我,只能说,我确实还没有那么高的逼格能够hold住那种销魂的访问速度……

唔,好吧,我感觉这篇文章会引来好多吐槽啊……

Win8下的鼠标滚轮穿透软件 AlwaysMouseWheel

新装了Windows8.1,虽然是没有激活但也是能够正常使用的。还好主要生产力工具FireFox和Sublime Text 2都是绿色版,没有多少折腾就进入了正常的状态。

嗯,但是换了系统总是会有些纠结的,比如我就发现我一直使用的MouseInc的鼠标滚轮穿透功能失效了。嗯……也许不是一个普遍现象,因为没有Google到相关的feedback。

于是想着再找另外一个轮子,反正这样的轮子已经造过很多了。找到了一款叫AlwaysMouseWheel的软件。嗯,只有这么一个功能,实测好用。

对了,你可以选择官方下载,或者微云下载

CentOS6下iptables与FTP共存方法(解决非标准端口问题)

Tips:如果想看解决方案而不是我的分析,请直接跳到文末~

为了服务器安全着想,iptables防火墙是肯定启用了的。我的iptables只允许了Web、SSH、FTP三个协议,并且为了避免大范围端口扫描,都是非标准端口。

许久不用FTP,今天登录FTP的时候发现没办法和服务器通信,具体表现在无法连接数据端口上。由于我使用的是PASV被动模式,服务器端口是随机的,思索一下即发现连接被iptables中断。使用service iptables stop停止iptables后,一切正常,遂断定为iptables阻止了FTP的连入。

但我又不想把1024~65535范围内所有的端口打开,那样当然不安全。Google之后了解到ip_nat_ftp这个模块可以达到我的需求。于是modprobe ip_nat_ftp然后service iptables restart重启防火墙测试,问题依旧。使用lsmod查询后发现,ip_nat_ftp模块竟然没有加载,而是nf_nat_ftp模块被加载了。

于是又Google,在Shorewall防火墙的一篇说明文章中发现如下说明:

Note: If you are running kernel 3.6.20 or later, then the module names are nf_nat_ftp and nf_conntrack_ftp…

可是这个对于我的问题没有帮助,因为很显然ip_nat_ftp也是nf_nat_ftp的别名,毕竟模块已经加载上了。于是我又去查询nf_nat_ftp的原理,了解到它是通过监听21端口的PASV指令来打开对应端口的防火墙的。这么一来问题就找到了:我使用的FTP端口根本就不是21,模块也就没法监听了。

找到问题后就好解决了。需要注意的是,CentOS6中/etc/modprobe.conf文件已经不存在了(但仍然可以使用,只是系统不再生成了,via)。我们需要再另外在/etc/modprobe.d/下建立一个文件。

解决方案如下:

rmmod nf_nat_ftp
rmmod nf_conntract_ftp #这一行和上一行是卸载已经载入的模块,执行时可能会报错,无视即可。
vim /etc/sysconfig/iptables-config
# 找到IPTABLES_MODULES="",修改为IPTABLES_MODULES="nf_nat_ftp nf_conntrack_ftp"
vim /etc/modprobe.d/ftp.conf #如果为CentOS6以下版本,可以尝试vim /etc/modprobe.conf
# 在这个文件中写上下面两行
options nf_conntrack_ftp ports=你的FTP端口号
options nf_nat_ftp ports=你的FTP端口号
# 保存退出
services iptables restart #重启防火墙,请注意先备份防火墙规则
iptables -nL
# 检查你的防火墙中是否有如下规则
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:你的FTP端口号
# 如果没有则将下面的两条规则添加到防火墙规则文件
-A INPUT -p tcp -m state --state NEW -m tcp --dport 你的FTP端口号 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

经过上面的操作后,再启动FTP客户端测试连接,此时应该可以顺利的连接上你的服务器了。

Falcon服务器文件监控平台安装笔记

Falcon的介绍:http://www.secrule.com/falcon/index.html

这里只记录一下安装过程。

1.检查inotify

uname -r #检查输出Linux系统内核是否达到了2.6.13以上
ls /proc/sys/fs/inotify #检查是否有max_queued_events、max_user_instances、max_user_watches三个文件

2.编译安装inotify-tools

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar xzvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/usr
make && make install

3.下载falcon

wget http://github.com/secrule/falcon/archive/master.zip
unzip master.zip #如果提示没有unzip请自行安装 yum -y install unzip 或者 apt-get install unzip ,或者直接git clone
cd falcon-master/Release

4.修改安装前缀
因为wiki里面写的inotfy-tools的安装位置是/usr,而check.sh里写的是/usr/local,需要修改check.sh第15行修改成:

if [ -d /usr/include/inotifytools ]
原文是 if [ -d /usr/local/include/inotifytools ]

5.安装环境检查

chmod a+x check.sh
./check.sh

输出需要是:

Found inotify success!
Found inotifytools success!
Found mysql-dev environment success!

才可继续安装。如果第一行、第二行没有出现请检查上面的步骤是否安装成功,如果第三行没有出现,请安装mysql-dev

yum install mysql
yum install mysql-devel

6.安装falcon控制中心
这个是网页端,PHP写的,安装之前保证自己有Web环境,lnmp/lamp等均可。

cd ../ #请确定你切换到了falcon-master目录
cp -r falconconsole/ /home/wwwroot/falcon/ #路径请自己修改
vim /home/wwwroot/falcon/public/config.inc.php #路径同上

这里写上数据库信息,有中文注释,如果PUTTY不是utf-8编码的话记得修改,或者用ftp编辑好再上传

7.配置falcon主程序

vim src/conf/global.conf #请确定你现在处于falcon-master目录

这里设置和上面一样的MySQL地址和数据库,然后请修改需要监控的web目录,注意要以/结尾

8.编译falcon

cd Release #请确定你切换到了falcon-master/Relase目录
make

9.安装falcon数据库和控制台
访问http://<你的域名>/falcon/install.php,导入数据库并设置管理员

10.运行falcon

ls -al #检查是否有falcon文件
chmod a+x falcon #保证执行权限
nohup ./falcon start >falcon.log 2>&1 & #在后台无间断运行falcon
ls -al #检查是否生成了falcon.log日志信息

11.登录falcon
访问http://<你的域名>/falcon/,登录

12.测试falcon

touch /home/wwwroot/test.php #创建一个测试php文件
rm /home/wwwroot/test.php #把测试的php文件删除
wget https://gist.github.com/oott123/6173352/raw/2011.php -O /home/wwwroot/test.php #下载一个PHP木马
cat /home/wwwroot/test.php #观察木马是否被自动删除
ls -al /home/virus/ #观察隔离区

然后访问falcon前台观察是否有相应日志

13.设置自动启动

wget https://gist.github.com/oott123/6173433/raw/startfalcon.sh
pwd #查看当前目录
vim startfalcon.sh #编辑其中的/root/falcon/falcon-master/Release/为你的falcon目录
chmod a+x startfalcon.sh
vim /etc/rc.d/rc.local

在rc.local中加入以下

/root/falcon/falcon-master/Release/startfalcon.sh &

重启测试

使用测评:
在测试了寥寥几个文件之后,falcon多次崩溃(Segmentation fault),稳定性存疑。不过思路是好的,也许可以用一用~

附图一张Falcon

吐槽知乎日报的坑爹产品以及知乎日报网页版

知乎日报推出的一周内我就装上了这个看起来很不错的应用。第一个版本用了几周,感觉就是真的很好。内容广度堪比百科,深度也刚好适合我,导致我装了以后每天打开频次最多的APP就是知乎日报了。有的内容很有意思,会随手复制或者分享给QQ上的某些好友。

我是一个懒得更新应用的人,所以我不知道什么时候它推出了所谓的1.4版,而我还在用1.0(ps.我对版本号的记忆力不行,只是大概说一说)。看到的那一天随手更新了,然后满怀期待的打开它。首先就看到设置里多了夜间模式、大字体。果断打开了。离线下载这功能对于我没用,我一般是更新的时候就看掉了。于是就打算继续用。

接着我就遇到了大家都遇到了的奇葩问题——看到一个精彩的,打算分享给好友。戳右下角分享按钮……咦。这个要读进度是怎么回事。于是等啊等……然后我奇葩的看到一副图片出现在我的QQ聊天框里。

O…T…L……

这个分享是在反人类吗?

我特别想抓着产品的肩膀猛摇。之前的分享链接又臭又长就算了(会在后面附加&_utm*的统计信息,明文的哟,其实我觉得完全可以隐蔽一点实现),起码还是个网页,还在可以看的范畴,这下可好,变成图片了要怎么看……且不说保存到笔记里面无法搜索,对方是手机用户的情况你们没考虑吗?就算你做的图片宽度不大,对方是手机用户的情况你们考虑了,可是你们考虑了QQ这玩意会压缩图片的嘛……

然后我就选择用复制的方法来分享……好吧这个问题不知道是我自己问题还是怎么,反正我永远只能选中一行文字,没法向上或者向下。于是我“整个人都傻逼了!”

然后……然后有一天我闲得蛋疼……然后我就在我手机上把代理设成电脑上的BurpSuite然后开始监听……结果就整理了一下知乎日报1.4版所使用的API,写了一堆神奇的代码来实现了一个网页版。

顺便吐槽一句,知乎日报连API都很奇葩。比如今天是2013年8月6日,在API请求的时候URL里面是20130807才能抓到今天的消息(而不是20130806)。

好了,放解决方案,也就是知乎日报网页版:

戳这里访问(Powered By MoPass,我实在找不到合适的国内空间了,因为数据都是现抓的,放国外太慢)

SAE/BAE/全平台静态文件加速CDN – Layer

一直记得SAE上有个很好很有名的CDN脚本叫SaeLayerCDN,最近突然想Layer难道没有BAE版本的么。Google翻了一下,还真没有BAE上能用的,于是在github上fork了一份SaeLayer的源码,开始移植。

移植的时候就打算做SAE/BAE/标准PHP几个平台的通用版,一开始叫LayerBAE,后来索性就叫Layer了,原作者起名的意图好像就是说处于网站和静态服务器之间的一个“加速层”吧,所以干脆就叫Layer比较好了。当然你要叫BAELayer或者LayerBAE什么的都随意啦~

主要的改进就是让他支持了SAE和BAE或者是本地的缓存三种平台,然后增加了一些配置更加方便使用,增加了刷新缓存的功能,还有就是用了比较灵活的组装,如果想增加平台的话只要再加几个文件就能轻松拓展了。

这个项目的下一步开发方向就如Issues所写吧,这里会更新项目动态。

项目地址:Layer

至于安装方法我就不多写了,和SaeLayerCDN一样。

湖南高考录取状态查询小助手

怎么说呢,一年前的今天写了这个软件,当时在班级群内共享,没有发布出来。

现在成了一名答疑志愿者,自然就想到了这个东西。虽然说一批的专业大家都差不多快录取完了我才想起来这个,但是发布出来总归是好的。

软件截图

开源,易语言,轻喷。

程序下载:一般用户请点击这里下载软件

项目地址:git@OSC

源码下载:git@OSC