根据quixote 文档的推荐,使用SCGI方式和webserver 进行互联。
quixote: 2.7b2
mod-scgi: 1.14
Apache2 : 2.xx
OS: ubuntu 10.04
一. 设置apache2 的虚拟主机(基于域名)
假设有以下两个域名:
www.web.com : 处理quixote 应用
static.web.com : 处理应用涉及到的:图片,js脚本,html,css等静态内容
192.168.5.81: ip地址
虚拟主机的设置请参见: http://wiki.ubuntu.org.cn/Apache%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%8C%87%E5%8D%97
配置文件如下:
web:
NameVirtualHost 192.168.5.81 <VirtualHost 192.168.5.81> ServerName www.web.com ServerAdmin [email protected] DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost>
static:
NameVirtualHost 192.168.5.81 <VirtualHost 192.168.5.81> ServerName static.web.com ServerAdmin [email protected] DocumentRoot /home/shone/Public/webroot/static <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost>
把上面两个配置文件放在: /etc/apache2/sites-available/ 目录下,名字分别存为:web和static
使用以下命令:
sudo a2ensite web
sudo a2ensite static
安装好对应的虚拟主机,即可在 /etc/apache2/sites-enabled/ 目录中发现多了两个到 /etc/apache2/sites-available/ 目录对应文件的软链接.
sudo /etc/init.d/apache2 restart 即可使虚拟主机生效
二. 在apache2中添加 mod-scgi:
下载mod-scgi 1.14: http://python.ca/scgi/releases/scgi-1.14.tar.gz
解压缩该文件,参看readme.txt ,安装对应的python 模块,
编译 mod-scgi.so ,根据你的环境,可能还需要安装gcc等...
把生成的mod-scgi.so拷贝到:/usr/lib/apache2/modules/ 目录
在/etc/apache2/ 目录的httpd.conf 文件中添加:
LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so
打开 /etc/apache2/sites-available/web 文件:
在servername 行后添加如下:
SCGIMount / 127.0.0.1:4000
编辑后的文件如下:
web:
NameVirtualHost 192.168.5.81 <VirtualHost 192.168.5.81> ServerName www.web.com SCGIMount / 127.0.0.1:4000 ServerAdmin [email protected] DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost>
详细请参考:scgi压缩包中的doc 目录中的guide.html..(quixote 文档中 ,server.html写的scgi配置方式,已不推荐使用)
改完配置,别忘了restart apache2。
在这个配置这个过程中,曾经走过一段弯路:
一开始,把
SCGIMount / 127.0.0.1:4000
这一句放到了 httpd.conf文件中,也就是说,放到了virtualhost的外面,
结果导致:不能把 根(也就是: /) 映射过去,必须要带一个目录,只能配置成如下形式:
SCGIMount /somefolder/ 127.0.0.1:4000
访问应用,必须要带个somefolder 之类的目录,不爽了很久。
到了这一步,剩下的任务就是编写quixote应用了,待续...