当前位置 主页 > 服务器问题 > Linux/apache问题 >

    在Mac OS上使用mod

    栏目:Linux/apache问题 时间:2019-12-15 15:26

    一、安装mod_wsgi 3.4:

    ./configure --with-apxs=/Users/levin/dev/apache2.2.27/bin/apxs --with-python=/usr/bin/python
    make
    make install
    

    编辑httpd.conf使Apache导入模块mod_wsgi.so以及引入vhost配置文件:

    LoadModule wsgi_module modules/mod_wsgi.so
    Include conf/extra/httpd-vhosts.conf
    
    
    编辑extra/httpd-vhosts.conf新建项目并增加gzip压缩python输出的文本:
    Listen 8001
    
    <VirtualHost *:8001>
      WSGIScriptAlias / /Users/levin/dev/py/webapp/app.py/
      Alias /assets /Users/levin/dev/py/webapp/static/
      AddType text/html .py 
      <Directory /Users/levin/dev/py/webapp/>
        Order deny,allow
        Allow from all 
        SetOutputFilter DEFLATE       #开启gzip
        SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary      #图片不开启gzip
        SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|rar)$ no-gzip dont-vary   #压缩包不开启gzip
        SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-gzip dont-vary
        AddOutputFilterByType DEFLATE text/*
        AddOutputFilterByType DEFLATE application/javascript application/x-javascript application/xml
        AddOutputFilterByType DEFLATE application/x-httpd-php
      </Directory>
    </VirtualHost>
    
    

    先写个测试脚本app.py

    def application(environ, start_response):
      start_response('200 OK', [('Content-Type', 'text/html')])
      return ['Hello, world.']
    

    或者使用web.py框架:

    import web
    
    urls = (
      '/.*', 'hello',
    )
    
    class hello:
      def GET(self):
        return "Hello, world."
    
    application = web.application(urls, globals()).wsgifunc()
    
    

    在浏览器中访问: http://localhost:8001/,看到Hello, world.就算安装成功了。

    二、Django使用中可能遇到的麻烦解决:
    1.修改setting.py文件:

    DEBUG = True 
    TEMPLATE_DEBUG = False 
    ALLOWED_HOSTS = ['localhost'] 
    

    2.修改项目中的wsgi.py,这个是建项目的时候就自带创建的,跟setting.py在同一目录,我傻傻的自己创建好多次,后来才发现文件位置不对,悲剧了。

    #/Library/WebServer/Documents是apache中DocumentRoot位置 
    #votebing是我建的项目 
    import sys 
    sys.path.append('/Library/WebServer/Documents/votebing') 
    

    3.修改apache安装目录中的httpd.conf,我的是在/etc/apache2/httpd.conf

    #载入mod_wsgi 
    LoadModule wsgi_module /usr/libexec/apache2/mod_wsgi.so 
    
    WSGIScriptAlias /votebing /Library/WebServer/Documents/votebing/votebing/wsgi.py 
    WSGIPythonPath /Library/WebServer/Documents 
     
    <Directory /Library/WebServer/Documents/votebing/> 
    <Files wsgi.py> 
    Order deny,allow 
    Allow from all 
    </Files> 
    </Directory> 
    Alias /media/ /Library/WebServer/Documents/votebing/media/ 
    Alias /static/ /Library/WebServer/Documents/votebing/static/ 
     
    <Directory /Library/WebServer/Documents/votebing/static> 
    Allow from all 
    </Directory> 
     
    <Directory /Library/WebServer/Documents/votebing/media> 
    Allow from all 
    </Directory>