zoukankan      html  css  js  c++  java
  • apache+wsgi+django配置

    WSGI是什么?

    WSGI的官方定义是,the Python Web Server Gateway Interface。从名字就可以看出来,这东西是一个Gateway,也就是网关。网关的作用就是在协议之间进行转换。

    也就是说,WSGI就像是一座桥梁,一边连着web服务器,另一边连着用户的应用。但是呢,这个桥的功能很弱,有时候还需要别的桥来帮忙才能进行处理。

    Django 是什么?

    Django(发音:/ˈdʒæŋɡoʊ/ JANG-goh) 是用python语 言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计。Django遵守 BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。最新发行版本是Django 1.3.1,于2011年09月10日发布.

      Django 根据比利时的爵士音乐家Django Reinhardt命名,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。

    设计哲学

      Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(Do Not Repeat Yourself)原则。

      Django基于MVC的设计十分优美:

      对象关系映射 (ORM,object-relational mapping)

      以Python类形式定义你的数据模型,ORM将模型与关系数据库连接起来,你将得到一个非常容易使用的数据库API,同时你也可以在Django中使用原始的SQL语句。

      URL 分派

      使用正则表达式匹配URL,你可以任意设计的URL,没有框架的特定限定。象你喜欢的一样灵活。

      模版系统

      使用Django强大而可扩展的模板语言,可以分隔设计、内容和Python代码。并且具有可继承性。

      表单处理

      你可以方便的生成各种表单模型,实现表单的有效性检验。可以方便的从你定义的模型实例生成相应的表单。

      Cache系统

      可以挂在内存缓冲或其它的框架实现超级缓冲 -- 实现你所需要的粒度。

      会话(session),用户登录与权限检查

      快速开发用户会话功能。

      国际化

      内置国际化系统,方便开发出多种语言的网站。

      自动化的管理界面

      不需要你花大量的工作来创建人员管理和更新内容。Django自带一个ADMIN site,类似于内容管理系统

    软件版本:

    操作系统:Archlinux Kernel 3.1.0-4-ARCH x86_64
    WEB服务器: Apache/2.2.21
    Python: Python/2.7.2
    Django: 1.3.1
    wsgi: mod_wsgi/3.3

    1. 安装apache和python
    在Archlinux上我已经用pacman安装好了apahce和python,接下来安装mod_wsgi

    2. 安装WSGI
    pacman -S mod_wsgi
    这里是Archlinux,如果是其他操作系统,请google。
    安装好之后,会生成mod_wsgi的apache模块,位置在 /usr/lib/httpd/modules/mod_wsgi.so。
    在apache的配置文件里载入模块:
    LoadModule wsgi_module modules/mod_wsgi.so

    3. 配置apache虚拟主机

     
    NameVirtualHost *:80
    <VirtualHost>
        ServerName webpy.test.com
        WSGIScriptAlias / /home/max/mysite/django.wsgi
     
       <Directory "/home/max/mysite">
            Options FollowSymLinks Indexes
            AllowOverride all
            Order Deny,Allow
            Allow from all
        </Directory>
     
        ErrorLog "/var/log/httpd/webpy-error.log"
        CustomLog "/var/log/httpd/webpy-access.log" combined
    </VirtualHost>
    

    上面红色的一行是让加载django的wsgi配置文件(django本身就支持WSGI协议)

    4. 安装django
    shell> pacman -S django
    也可以选择下载源码安装,因为django本身全部用python编程,所以下载django的安装包之后,进入到
    django源码目录,执行以下命令即可安装django:
    shell> python setup.py install

    5. 配置django
    我们现在建立一个django的项目,建立好项目文件夹之后,django会自动生成一些项目文件:
    shell> django-admin.py startproject mysite
    django-admin.py是django本身的一个管理程序,除了用于新建项目之外,还有很多用途。
    mysite是新建的项目名称,这样就会在当前目录下生成一个mysite的文件夹。
    __init__.py __init__.pyc manage.py settings.py urls.py
    上面就是mysite目录下的文件,这是django项目的初始文件。

    6. 配置django的wsgi文件
    在mystei目录下新建一个django.wsgi文件,内容如下:

     
    os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
     
    import django.core.handlers.wsgi
    application = django.core.handlers.wsgi.WSGIHandler()
     
    path = '/home/max'
     
    if path not in sys.path:
        sys.path.append(path)
    

    mysite.settings是mysite项目的配置文件,django项目的配置文件就是python代码;在mysite目录下可以看到settings.py文件。
    由于当前目录没有在系统的PATH变量里,所以mod_wsgi无法寻找到settings.py文件,为了帮它找到,
    我们把mysite目录的上一级目录,追加到PATH变量里。
    sys.path.append(path)

    7. 启动django项目
    重启apache服务器
    shell> apachectl restart
    在浏览器打开 http://webpy.test.com,即可看到django的欢迎页面。

    启动django的项目其实还有一种更快的方式,就是在mysite项目的目录下,执行:
    shell> python manage.py runserver 8000
    会出现以下信息:

     
    Django version 1.3.1, using settings 'mysite.settings'
    Development server is running at http://127.0.0.1:8000/
    Quit the server with CONTROL-C.
    

    这是浏览器打开http://127.0.0.1:8000,即可看到django的淡蓝色页面。
    这其实启动开发服务器,它每次只能服务器一个用户,所以不能在生产环境使用它。

    8. 相关资料
    推荐django book : http://djangobook.py3k.cn/2.0/ 针对django 1.3

  • 相关阅读:
    中金所期货(future)指数
    Nginx负载均衡算法之四
    WSGI协议
    Flask 响应之定制全局有效的错误页面,之设置cookie,头信息。
    Python数据结构之栈,队列和堆
    三、Oracle 游标、存储过程、存储函数、触发器
    二、Oracle的结构学习
    一、Oracle的SQL语句学习
    oracle中的修改表结构
    eclipse编写xml文件时类名的自动补全(使用sts插件)
  • 原文地址:https://www.cnblogs.com/huazi/p/2471144.html
Copyright © 2011-2022 走看看