Entries Tagged as ''

把网上的pygetsong改了改,使之支持下载wma

原来网上有个广为流传的用python写的从baidu下mp3的程序:pygetsong
Xupeng Yun写的
由于原来的只能下mp3文件
我要放到pda上听
感觉mp3太大
于是想改改,使之支持wma
顺便学习下python
改的过程中发现原来的程序有点bug
就是原来的程序没有进行歌曲名称匹配
比如要下的是歌手”A”的歌曲”B”
也许搜出来有首歌名字叫”XBX”
源程序没检测歌曲名
直接把链接放到可用的url里了
这样就有可能下的歌不对
我把匹配时的正则表达式修改了下
使之精确匹配歌曲名
下载:
我修改过的getsong

cacti中监测apache性能的模板apachestats0.4的问题

自打用上这里的用于cacti监控apache的模块儿apachestats后
总觉得还行,能用(也有些小问题,主要是图上显示的细节问题)
但最近发现有个问题比较大
就是有的服务器的监控图明显不对
我们有好些web server的机器(跑的apache),访问量很大,httpd进程经常被打到2000个,被打满(2048)
但是在这些服务器的监控图上一般最多能显示1000个httpd进程
为了查这个问题
我仔细的看了下这个模块儿的实现过程
import进来的每一个Data Templates和Graph Templates都看过了
最后发现是新生成的那个叫”WebServer - Apache Statistics”的Data Templates有问题
这里面的几乎每一个Data Source Item的“Maximum Value”都设的偏小
这样出来的监控图自然当数据小的时候都没什么
但数据一大,马上出问题!
知道原因了
再改正就快了
重新把数据设大
再删掉所有的用这些Templates建的图
再进rra目录删掉所有相关的rra文件(这步貌似非必须的:)
再重建新图
最后看图:终于搞定了
最后把改过的xml文件贴上来,以免大家重复劳动
改过的apachestats0.4的模板文件

“PHP Warning: Module ‘readline’ already loaded in Unknown on line 0″的问题

发现一台机器跑php的时候老报:

PHP Warning: Module ‘readline’ already loaded in Unknown on line 0

查了下,估计是在php.ini中多次载入了readline模块儿
于是在/etc/php.d/readline.ini中发现了这句:

extension=readline.so

将其注释掉
则问题解决
回头想,大概是编译php的时候,就已经加入readline的支持了(用–with-readline)
所以当再重新load进ip2location时,自然就会报错了

apache(httpd2.x)的mod_rewrite的诡异现象

根据工作需要
要将uri /abcdefg.php rewrite成/files/abcdefg.xml
于是在相应的虚机里设置:
RewriteEngine on
RewriteCond %{REQUEST_URI} php
RewriteRule /abcdefg.php /files/abcdefg.xml [L]

但是始终不行
因为/abcdefg.php中其实就是丢出一个Location的头来强迫客户端获取另外一个xml文件,这里是/files/a.xml
假设这里的虚机是www.abc.com
当我telnet www.abc.com 80
再输入

HEAD /abcdefg.php HTTP/1.1
Host: www.abc.com

的时候
返回显示一个“Location:”头,重定向到/files/a.xml
这里显然mod_rewrite没生效
在DocumentRoot目录下
cp abcdefg.php abcdefgh.php
再在配置文件里添加一句:
RewriteRule /abcdefgh.php /files/abcdefg.xml [L]
使之成为这样:

RewriteEngine on
RewriteCond %{REQUEST_URI} php
RewriteRule /abcdefg.php /files/abcdefg.xml [L]
RewriteRule /abcdefgh.php /files/abcdefg.xml [L]

重启apache
再次测试,发现/abcdefgh.php能够正确重定向到/files/abcdefg.xml
但是/abcdefg.php不行
用HTTP命令
HEAD /abcdefgh.php HTTP/1.1
Host: www.abc.com

来看的时候
能正确返回就像是直接请求/files/abcdefg.xml的情况
这样显然mod_rewrite是生效了的
但是/abcdefg.php就是不行

apache中mod_rewrite仅当配在虚机里时有效的问题

今天在apache(httpd2.0.x)上配mod_rewrite
发现一个问题:
我本来是在/etc/httpd/conf.d/目录下单建的个文件来保存mod_rewrite的配置的
但奇怪的是在这里面的rewrite的设置并没有生效
琢磨了半天
把rewrite的设置写进相应的VirtualHost
再重启apache
居然生效了!!!
于是就有个困惑:为什么mod_rewrite的设置要写进<VirtualHost>里才会生效呢
终于,在apache的官方文档里看到关于RewriteEngine的一句话:

Note that, by default, rewrite configurations are not inherited. This means that you need to have a RewriteEngine on directive for each virtual host in which you wish to use it.

这样好像模模糊糊的解释了我的困惑
因为RewriteEngine在每个VirtualHost里缺省都是关掉的
那么当访问来的时候,写在VirtualHost外面的mod_rewrite的设置自然是看不到效果的

fc5->fc6(upgrading fedora from release 5 to release 6)

一台机器,原来跑的是fc5
心血来潮,升成fc6
参考的文档是fedora官方文档:Upgrading Fedora Using Yum
首先:
yum clean all
然后,再切换yum安装的仓储处(Switch repositories):
rpm -Uhv ftp://download.fedora.redhat.com/pub/fedora/linux/releases/6/Fedora/i386/os/Fedora/fedora-release-*.noarch.rpm
注意:这里的ftp://download.fedora.redhat.com/pub/fedora/linux/releases/目录下并没有6这个目录,而只有7这个目录
所以要安装fc6fedora-release-notesfedora-release的rpm包文件这里找不到
但没有关系,可以去fedora的下载的镜像站点或者是fc6的光盘上去找
总之,将其用rpm -Uvh安装上即可(“-U”好像是升级吧:)
再接着,开始升级:
yum -y upgrade
经过漫长的等待,终于成功了!
别着急,最后再确认一下所有必须的包都装上了
yum groupupdate Base
OK,没有问题了
reboot
起来后登进去一看:
cat /etc/fedora-release
是:
Fedora Core release 6 (Zod)
成功了

mod_proxy+mod_ssl来转发https的请求

前面讲到用apache做反向代理
于是马上又有了新的课题:如果要把https的请求也做代理转发该怎么办?
大概查了查文档
好像也有办法
mod_ssl里支持SSLProxyEngine指令
直接将其打开即可,这样再加上mod_proxy
于是很容易就有了以下的配置文件内容:

SSLProxyEngine on
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / https://www.abc.com/
ProxyPassReverse / https://www.abc.com/

这个建议写到某个<VirtualHost>里
如<VirtualHost _default_:443>
如果是Fc(Fedora Core)的机器
强烈建议先装mod_ssl
yum install mod_ssl
然后再在配置文件/etc/httpd/conf.d/ssl.conf中的<VirtualHost _default_:443>的session中添加以上的配置内容

用apache的mod_proxy做反向代理

工作需求:
在某台机器上(跑着apache)为某个域名(如www.abc.com)做反向代理
正好知道apache有mod_proxy这个东东
于是看了看文档
写下了如下的配置文件:

<VirtualHost *:80>
ServerName www.abc.com
ProxyPass / http://www.abc.com/
ProxyPassReverse / http://www.abc.com/
CustomLog logs/access_abc_log combined
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>

然后还要修改系统的httpd.conf
将其中的mod_proxy、mod_proxy_httpd启用
再然后
因为www.abc.com这个域名的真实服务器于我要配的服务器有内网相连(内网ip:10.10.10.10)
于是vim /etc/hosts
写入
10.10.10.10 www.abc.com
再重启apache
这就成了

ubuntu7.04-39+kde3.5.6(kernel2.6.20-16)下键盘用不了

突然之间
键盘就不能用了
重启也不行
只要一进kde
键盘就没反应了
好在鼠标还没有问题
注销重新进gnome
一切都没问题

nagios里点”3-D Status Map”时提示”打开statuswrl.cgi”的问题

这个问题是玩nagios最常见的问题
nagios的官方网站的faq里都有得说,看这里
意思差不多就是说:“如果要看3-D statusmap CGI (statuswrl.cgi)的输出的话,得为你的web浏览器安装vrml的client(客户端)或plugin(插件)”
然后还推荐了四个
Cortona (Parallel Graphics)
Cosmo Player (Computer Associates and NIST)
FreeWRLOpenVRML
好像最后两个没有windows版本
所以如果是用windows机器看的话
需要装前两个软件之一