Archive for the 'Linux' Category

把lighttpd的虚拟主机配置放到数据库

MySQL现在成了一个垃圾桶,什么都能够往里面装:
pam_mysql 做PAM认证
mysql做ftp/mail后端认证数据库,
mod_mysql_vhost为apache乃至lighttpd做vhost
只有想不到,没有做不到,下面就是ligttpd的vhost模块支持

MySQL-based vhosting Module: mod_mysql_vhost
Table of Contents
Description Options Description With MySQL-based vhosting you can store the path to a given host’s document root in a MySQL database.
Note
Keep in mind that only one vhost module should be active at a time. Don’t mix mod_simple_vhost with mod_mysql_vhost.
Options Example:
mysql-vhost.db = “lighttpd”
mysql-vhost.user = “lighttpd”
mysql-vhost.pass = “secret”
mysql-vhost.sock = “/var/mysql.lighttpd.sock”
mysql-vhost.sql = “SELECT docroot FROM domains WHERE domain=’?'”
MySQL setup:
GRANT SELECT ON lighttpd.* TO lighttpd@localhost IDENTIFIED BY ’secret’;
CREATE DATABASE lighttpd;
USE lighttpd;
CREATE TABLE domains ( domain varchar(64) not null primary key, docroot varchar(128) not null );
INSERT INTO domains VALUES (’host.dom.ain’,'/http/host.dom.ain/’);

除了apache还有什么?

作为开源的web server apache2可谓占尽天时地利人和:不仅开源社区的人对他顶礼膜拜,乃至
其他平台的的web server也敬他三分。
但是到底在开源阵营中还有些什么出色的web server呢?
 
首先映入眼帘的是lighttpd:
http://www.lighttpd.net/
lighttpd的兴起,和rails密不可分。
lighttpd+ SCGI (SRR)是rails社区公认的不二选择。
SCGI作为fastCGI的天然替代物,对所有支持 SCGI协议的web server都可以实现无缝移植。
其实除了SCGI之外,类似php的mod_php、ruby也有apache的 mod_ruby。也可以和apache
集成,当然这是apache dependent的。
 
在性能方面,普遍的说法是lighttpd比apache2快过4、5倍,lighttpd官方的说法也是快过2、3倍
当然也有人嚷嚷:lighttpd在扯蛋 (当然我们得注意一下这家伙的背景)
真是公说公有理、婆说婆有理
 
另外还有一个thttpd,性能也非常出色
http://www.acme.com/software/thttpd/benchmarks.html
serverperf.gif

实线部分是处理处理1000个1kB大小的文件,Java实现的Acme.Serve和Jigsaw连测试都没有承受住,
就挂了。  :P
虚线部分是使用很简单的CGI hello world" C program.作为CGI测试的。
在这份benchmark中,出现了另外一个BSD license的web server:Mathopd 优秀的CGI性能简直让人大跌眼镜
但是不知道真实的生产环境性能如何!
 
说道静态文件服务,不得不提一下TUX
虽然没有具体的数据说明TUX的性能个到底如何,但是业界广泛认为:作为运行于内核空间的TUX,由于少了
content切换的开销,相比其他用户空间的web server比如apache反应快速的多,另外Red Hat给他的学名儿
叫:Red Hat Content Accelerator 。所以提供image之类的服务是在适合不过的了,但是也正是因为这个最大
的优势限制了他在其他平台的使用,是一个linux dependent的web server。同时,运行于内核空间的他,
一旦crash,后果可想而知。
 
更多的web server list可以参考这儿:

fastCGI方式跑Django

原本想找个支持mod_python的空间来玩玩,但是要么太贵要么速度太慢,终究还是选择了dreamhost,在他上面买了支持python的空间,打算好好玩玩python这个东东,之前看了看上面的环境:

  1. hackgou@runts:~$whereis python 
  2. python: /usr/bin/python /usr/bin/python2.3 /usr/bin/python2.2-popy-config \
  3. /usr/bin/python2.2 /usr/bin/python2.4 /etc/python2.3 /etc\
  4. /python2.4 /etc/python2.2 /usr/lib/python2.3 /usr/lib/python2.2 \
  5. /usr/lib/python2.4 /usr/local/lib/python2.3 /usr/local/lib/python2.\
  6. 2 /usr/local/lib/python2.4 /usr/include/python2.3 /usr/include/python2.2 \
  7. /usr/include/python2.4 /usr/share/man/man1/python.1.gz  

呵呵,够夸张的,从2.2到2.4的版本都有。

还好!fastCGI的支持是知道的,上面的主机对python和perl的支持都是通过FastCGI的方式实现的。以前没有彻底的玩过FastCGI、更别说python的FastCGI了。首先是添加一个Python的FastCGI gateway。虽然dreamhost的wiki上面说使用fcgi.py比较方便,但是后来发现Flup,这也是一个Frame
不光有fastCGI gateway,而且他提供一个类似mod_python的publish的东东,那就用他了:

  1. wget http://www.saddi.com/software/flup/dist/flup-r1968.tar.gz

wget抓来之后。用setup.py安装。/usr/lib/python2.4 咱是没有权限,那就在~/下面建立一个自己的lib-python,作为自己的$PYTHONPATH。

在.bash_prifile里面添加export $PYTHONPATH=$PYTHONPATH:~/lib-python 

OK,开始安装我们自己的lib:

  1. python2.4 setup.py install --install-lib  ~/lib-python/ --install-scripts ~/lib-python/

这样会安装到我自己的lib-python而不是默认的/usr/lib/python2.4/site-packages/。

OK,写个简单的helloworld.py(flup的fcig路径是from flup.server.fcgi import WSGIServer),测试一下flup。OK。通过

然后svn把django的代码也拉到lib-python中去。再按照django的手册创建一个demo,写一个简单的测试app.py。页面是出来了,但是是django报错的东东。还好,聊胜于无。为什么呢?东翻翻、西翻翻,看到木头的文章,他说rewrite后能够成功,但是我还悄悄的去http://www.djangocn.org/django.fcgi看了看,呵呵和我的错误一样。不可能跟这个rewrite有关系的吧,既然如此,那我就添加重写规则吧,一添加,呵呵,果然奏效。

It worked!

页面出来了,不知道为什么rewrite和这个有啥关系,迷糊

update:

如果希望避免export $PYTHONPATH=$PYTHONPATH:~/lib-python 而且也不想添加一堆的path.append(),可以参考:
让easy_install构造自己的py thon小天地

再谈Debian的启动脚本

 

再看看Debian的启动脚本:
1:先是/etc/inittab。
 id:5:initdefault:
接着:

Read the rest of this entry »

另外一剂引导Debian的方子

 

由于D版XP安全漏洞的原因,打算将现在这个操作系统切换回2K,但是得准备好Debian的急救盘启动盘,以恢复2K安装程序覆盖的MBR,但是mkbootdisk和grub我没有整对,创建的bootDisk始终无法正确引导系统,所以找了个变通的办法:
利用Debian的软盘安装镜像来恢复,以下是整个操作过程,
首先做好安装系统用的软盘,
http://www.debian.org/distrib/floppyinst上可以得到一些资料,
但是这个软盘是无法用来直接进入Debian的,还得简单调整一下,下面是这个过程的记录以及说明:

 

Read the rest of this entry »


Creative Commons License
This work is licensed under a Creative Commons License.