分享

让apache支持 mod

 ccccshq 2015-05-03

想法很简单,就是让apache支持python,我搭配的环境:


  1. $ uname -a  
  2. Linux kubt 3.2.0-27-generic-pae #43-Ubuntu SMP Fri Jul 6 15:06:05 UTC 2012 i686 athlon i386 GNU/Linux  
  3. $ python --version  
  4. Python 2.7.3  
  1. $ apache2 -version  
  2. Server version: Apache/2.2.22 (Ubuntu)  
  3. 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,解压后运行:

      

  1. $./configure  

      此处需要apache2-dev包,如果没有,将会有错误:
    

  1. checking for apxs2... no  
  2. checking for apxs... no  
  3. checking Apache version... ./configure: line 1704: apxs: command not found  

     安装 apache2-dev包(有些系统叫"apache2-worker-dev" 或 "apache2-prefork-dev“,我的ubuntu叫"apache2-threaded-dev"):

  1. $ sudo apt-get install apache2-threaded-dev  

    据说还需要python-dev包,不过我的系统好像已经装过了,这些依赖项准备好之后:

 

  1. sudo make  
  2. sudo make install  

接着需要对apache进行配置:

在目录 /etc/apache2/mods-available下创建文件:wsgi.load

里面的内容是:

  1. LoadModule wsgi_module  /usr/lib/apache2/modules/mod_wsgi.so  

在目录 /etc/apache2/mods-available下创建文件:wsgi.conf

里面的内容是:

  1. #注意这里是 mod_wsgi.c  
  1. <IfModule mod_wsgi.c>   
  2.         WSGIScriptAlias /lab/py/ /usr/local/cgi-bin/pyscript/  
  3.         <Directory /usr/local/cgi-bin/pyscript>  
  4.         Order allow,deny  
  5.         Allow from all  
  6.         </Directory>  
  7.         AddType text/html .py  
  8.   
  9. </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:

  1. cd /etc/apache2/mods-enabled  
  2. sudo ln -s ../mods-available/wsgi.load  wsgi.load  
  3. sudo ln -s ../mods-available/wsgi.conf wsgi.conf  
  4. sudo chmod u=rwx,og=rwx wsgi.*   




重启apache:
  1. $ sudo /etc/init.d/apache2 restart  
  2.  * Restarting web server apache2    
  3. ... waiting         [ OK ]  



然后你可以在
/usr/local/cgi-bin/pyscript/
建立一个test.py:
  1. #!/usr/bin/env python   
  2. # -*- coding: utf-8 -*-   
  3.   
  4.   
  5.   
  6. def application(environ, start_response):   
  7.     status = '200 OK'   
  8.     content_type = 'text/html'   
  9.    
  10.     output = ['Hello python!']   
  11.    
  12.     response_headers = [('Content-type', content_type)]   
  13.     start_response(status, response_headers)  
  14.       
  15.     return output   



给予test.py执行的权限,然后在浏览器输入:
http://localhost/lab/py/test.py


测试一下。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多