想法很简单,就是让apache支持python,我搭配的环境:
- $ uname -a
- Linux kubt 3.2.0-27-generic-pae #43-Ubuntu SMP Fri Jul 6 15:06:05 UTC 2012 i686 athlon i386 GNU/Linux
- $ python --version
- Python 2.7.3
- $ apache2 -version
- Server version: Apache/2.2.22 (Ubuntu)
- Server built: Nov 8 2012 21:37:45
1, 下载 http://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi-3.4.tar.gz
2,解压后运行:
此处需要apache2-dev包,如果没有,将会有错误:
- checking for apxs2... no
- checking for apxs... no
- checking Apache version... ./configure: line 1704: apxs: command not found
安装 apache2-dev包(有些系统叫"apache2-worker-dev" 或 "apache2-prefork-dev“,我的ubuntu叫"apache2-threaded-dev"):
- $ sudo apt-get install apache2-threaded-dev
据说还需要python-dev包,不过我的系统好像已经装过了,这些依赖项准备好之后:
- sudo make
- sudo make install
接着需要对apache进行配置:
在目录 /etc/apache2/mods-available下创建文件:wsgi.load
里面的内容是:
- LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
在目录 /etc/apache2/mods-available下创建文件:wsgi.conf
里面的内容是:
- <IfModule mod_wsgi.c>
- WSGIScriptAlias /lab/py/ /usr/local/cgi-bin/pyscript/
- <Directory /usr/local/cgi-bin/pyscript>
- Order allow,deny
- Allow from all
- </Directory>
- AddType text/html .py
-
- </IfModule>
注意这里的/usr/local/cgi-bin/pyscript/ 是用来放你的python脚本的实际地址,而/lab/py/是别名,这两个可以根据你自己的实际情况自己更改,
这里是通过 localhost/lab/py/xxx.py 来访问 实际上的/usr/local/cgi-bin/pyscript/xxx.py
这样脚本必须放在/usr/local/cgi-bin/pyscript/这个目录才能正确执行。
然后把 /etc/apache2/mods-available 下的这两个文件软链接到 /etc/apache2/mods-enabled:
- cd /etc/apache2/mods-enabled
- sudo ln -s ../mods-available/wsgi.load wsgi.load
- sudo ln -s ../mods-available/wsgi.conf wsgi.conf
- sudo chmod u=rwx,og=rwx wsgi.*
重启apache:
- $ sudo /etc/init.d/apache2 restart
- * Restarting web server apache2
- ... waiting [ OK ]
然后你可以在
/usr/local/cgi-bin/pyscript/
建立一个test.py:
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
-
-
-
- def application(environ, start_response):
- status = '200 OK'
- content_type = 'text/html'
-
- output = ['Hello python!']
-
- response_headers = [('Content-type', content_type)]
- start_response(status, response_headers)
-
- return output
给予test.py执行的权限,然后在浏览器输入:
http://localhost/lab/py/test.py
测试一下。
|