django,flup,nginx,fastcgi

http://os.51cto.com/art/201109/288717.htm

首先我们必须明白这这3者在该环境下发挥的作用。

1.nginx:("enginex")是一个高性能的HTTP和反向代理服务器,作用和apache的类似。它可以处理一些静态文件的请求,而对于动态的文件的请求,它可以通过fastcgi方式,来分发请求给不同的动态语言处理。

2.flup:本身是一个使用python写的web服务器软件,它可以接受nginx发来的请求,执行相应的python代码,将结果返回给nginx。

3.django:基于python的一个web框架,它可以我们做一些基础性的东西,比如cookie,session管理,模板机制,权限管理等等。

在搭建环境之前,需要先安装好python环境,本文用的是python2.6.5,python的安装这里就不赘述。

1.安装相关支持文件

setuptools,通过setup.py安装python类库需要setuptools。

  1. wgethttp://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg 

shsetuptools-0.6c11-py2.6.eggpcre,正则表达式相关的类库,ospenssh,安装nginx需要。

  1. wgethttp://sourceforge.net/projects/pcre/files/pcre/8.02/pcre-8.02.tar.gz/download  
  2.  
  3. tarzxvfpcre-8.02.tar.gz  
  4.  
  5. cdpcre-8.02  
  6.  
  7. ./configure  
  8.  
  9. make  
  10.  
  11. makeinstall  
  12.  
  13. cd.. 

apt-getinstallopenssllibssl-develzlib,压缩相关的类库,很多软件都需要。

  1. wgethttp://downloads.sourceforge.net/project/libpng/zlib/1.2.5/zlib-1.2.5.tar.gz?use_mirror=nchc 
  2.  
  3. tarzxvfzlib-1.2.5.tar.gz  
  4.  
  5. cdzlib-1.2.5  
  6.  
  7. ./configure  
  8.  
  9. make  
  10.  
  11. makeinstall  
  12.  
  13. cd.. 

2.安装django

  1. wgethttp://www.djangoproject.com/download/1.2.1/tarball/  
  2.  
  3. tarzxvfDjango-1.2.1.tar.gz  
  4.  
  5. cdDjango-1.2.1  
  6.  
  7. pythonsetup.pyinstall 

cd..如果需要使用mysql数据的话,可以参考《Linux下安装Django1.2和Mysql-Python》。

3.安装flup

  1. wgethttp://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gz  
  2.  
  3. tarzxvfflup-1.0.2.tar.gz  
  4.  
  5. cdflup-1.0.2  
  6.  
  7. pythonsetup.pyinstall  
  8.  
  9. cd.. 

4.安装nginx

  1. wgethttp://nginx.org/download/nginx-0.8.39.tar.gz  
  2.  
  3. tarzxvfnginx-0.8.39.tar.gz  
  4.  
  5. cdnginx-0.8.39  
  6.  
  7. ./configure  
  8.  
  9. make 

makeinstll注意:安装后会显示一段Configurationsummary信息,可以将它保存起来,【LINUX公社www.LinuxIDC.com】以便以后使用。

5.配置

配置flup和flup通过fastcgi方式通信,在运行python程序的server{..}配置节中的location{..}配置节添加以下配置:

  1. fastcgi_passunix:/tmp/mysite.sock;  
  2.  
  3. fastcgi_paramPATH_INFO$fastcgi_script_name;  
  4.  
  5. fastcgi_paramREQUEST_METHOD$request_method;  
  6.  
  7. fastcgi_paramQUERY_STRING$query_string;  
  8.  
  9. fastcgi_paramCONTENT_TYPE$content_type;  
  10.  
  11. fastcgi_paramCONTENT_LENGTH$content_length;  
  12.  
  13. fastcgi_pass_headerAuthorization;  
  14.  
  15. fastcgi_intercept_errorsoff;  
  16.  
  17. fastcgi_paramSERVER_PROTOCOL$server_protocol;  
  18.  
  19. fastcgi_paramSERVER_PORT$server_port;  
  20.  
  21. fastcgi_paramSERVER_NAME$server_name;6.运行 

创建django项目

  1. cd~  
  2.  
  3. django-admin.pystartprojectmysite以cgi方式运行django  
  4.  
  5. ~/news/manage.pyrunfcgidaemonize=truesocket=/tmp/mysite.sock启动nginx  
  6.  
  7. /usr/local/nginx/sbin/nginx 
Ubuntu如何搭建Django与Flup和Nginx环境?

享受django给你带来的乐趣吧!

总结:

希望本文介绍的Ubuntu下搭建Django+Flup+Nginx环境的方法能够对读者有所帮助,更多有关linux系统的知识还有待于读者去探索和学习。

http://www.fresh3g.org/blog/post/346/

一、什么是 WSGI 。

在认识 flup 之前,得先认识一下 WSGI 。

WSGI 的全称为: Python Web Server Gateway Interface v1.0 (Python Web 服务器网关接口),
它是 Python 应用程序和 WEB 服务器之间的一种接口,更多详细的细节,可以参考 PEP333 。

它的作用,类似于FCGI 或 FASTCGI 之类的协议的作用。

WSGI 的目标,是要建立一个简单的普遍适用的服务器与 WEB 框架之间的接口。

WSGI 的特点是:简单、可移植等。

二、什么是 flup 。

WSGI 还只是一种规范,一种标准,它要完成的作用是用来定义 Python 应用程序要如何于
apache/lighttpd/nginx 等之类的 WEB 服务器之间如何进行通信和交换信息,它不是实际
可以直接拿来用的东西。而 flup 就是使用 Python 语言对 WSGI 的一种实现,是可以用
于 Python 的应用开发中的一种工具或者说是一种库。

flup 的官方网站为: http://trac.saddi.com/flup 。flup 属于开源软件,采用了 BSD 风格
的开放源码授权。

那么, WSGI 除了 flup 外,还有没有其他的实现呢,当然有,更多的实现,可以参考:

http://wiki.python.org/moin/WSGIImplementations

三、flup 支持的 WSGI 服务器/网关

flup 支持三种 WSGI 服务器/网关,分别为 AJP 1.3 , FastCGI ,和 SCGI 。
而对于 flup 支持的这三种 WSGI 服务器/网关, flup 有分别提供了两种不同风格的版本:线程版本和进程版本。
这样, flup 实际就支持六种类型的 WSGI 服务器/网关,分别为:

flup.server.ajp
flup.server.ajp_fork
flup.server.fcgi
flup.server.fcgi_fork
flup.server.scgi
flup.server.scgi_fork
flup.server.cgi

使用的参考示例如下:


def myapp(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return ['Hello World!\n']

if __name__ == '__main__':
    from flup.server.fcgi import WSGIServer
    WSGIServer(myapp).run()



四、flup 在 Django 中的应用

作为一款非常著名和使用比较广泛的 Python Web 开发框架,Django 中就应用到了 flup 。
在 django/core/servers/fastcgi.py 文件中,就调用了 django/core/handlers/wsgi.py
中的 WSGIHandler() 负责对 WSGI 的应用进行处理。

五、WEB 处理流程

nginx <--------(fastcgi)-------> flup(wsgi/django)

lighttpd <-----(fastcgi)-------> flup(wsgi/django)

apache<------(cgi/fastcgi/scgi/mod_wsgi)------------> flup(wsgi/django)

 

 

http://blog.sina.com.cn/s/blog_6ae94c2a01010uqr.html

Nginx+fastcgi+flup++django 快速配置

 (2012-02-07 10:45:39)
标签: 

杂谈

分类: Nginx
安装nginx:$ sudo apt-get install nginx
安装flup:$ sudo apt-get install python-flup
把Django跑起来: $ python manage.py runfcgi method=threaded host=127.0.0.1 port=8100
Django静态目录:/home/ray/site/mycontact/media/;
                             /home/ray/site/mycontact/static/; 
                             /home/ray/site/mycontact/django/contrib/admin/media;  #django admin
 
在Localhost下跑站点需要注意:
1、站点目录  chmod 777
2、静态文件目录映射添加:allow 127.0.0.1;
 
文件:/etc/nginx/sites-available  &  /etc/nginx/sites-enabled
server {
listen   83; 
server_name  localhost;
 
access_log  /var/log/nginx/mycontact.access.log;
error_log   /var/log/nginx/mycontact.error.log;
 
location / {
fastcgi_pass 127.0.0.1:8100; 
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name; 
fastcgi_param  QUERY_STRING       $query_string; 
fastcgi_param  REQUEST_METHOD     $request_method; 
fastcgi_param  CONTENT_TYPE       $content_type; 
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  REQUEST_URI        $request_uri; 
fastcgi_param  DOCUMENT_URI       $document_uri; 
fastcgi_param  DOCUMENT_ROOT      $document_root; 
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1; 
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
fastcgi_param  REMOTE_ADDR        $remote_addr; 
fastcgi_param  REMOTE_PORT        $remote_port; 
fastcgi_param  SERVER_ADDR        $server_addr; 
fastcgi_param  SERVER_PORT        $server_port; 
fastcgi_param  SERVER_NAME        $server_name;
}
 
 
location /media { 
        alias     /home/ray/site/mycontact/media/;
        access_log   off; 
expires      10d;
                allow 127.0.0.1;
    } 
location /static { 
        alias     /home/ray/site/mycontact/static/;
        access_log   off; 
expires      10d;
allow 127.0.0.1;
    }
    location /static/admin { 
        alias        /home/ray/site/mycontact/django/contrib/admin/media;
        access_log   off; 
allow 127.0.0.1;
    }
 
    #Nginx状态监控
    location /nginx-status { 
        stub_status on;  
access_log off;   
allow 127.0.0.1;
  deny all;  
    }
 
}
 
 

linux+nginx+python+django+flup环境配置(原创)  

2011-05-13 15:47:29|  分类: ubuntu/shell |  标签:linux+nginx+python+django环境配置(原创)  |字号 订阅

 
 
环境软件的安装 http://apps.hi.baidu.com/share/detail/17323739

1.安装python
sudo -s
apt-get install python
apt-get install python-MySQLdb
2.安装nginx
apt-get install nginx
3.安装django
svn co http://code.djangoproject.com/svn/django/trunk django-trunk #直接重django的SVN拿最新稳定安装包
cd django-trunk
python setup.py install

安装flup
cd /usr/local/src
setuptools,通过setup.py安装python类库需要setuptools。

wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg

sh setuptools-0.6c11-py2.6.egg
wget http://www.dbasky.net/tool/python/flup-1.0.1.tar.gz
tar xzvf flup-1.0.1.tar.gz
cd flup-1.0.1
python setup.py install

4.配置nginx
配置flup和flup通过fastcgi方式通信,在运行python程序的server{..}配置节中的location{..}配置节添加以下配置:
server {

    listen   8051; 
    server_name www. python.com;

    access_log  /var/log/nginx/localhost.access.log;
    root   /home/zhukai/diangoproject;
    #配置django admin需要的文件
        location ~* ^/media/(css|img|js)/.*$ {
                root /usr/local/lib/python2.6/site-packages/django/contrib/admin;
                expires 30d;
                break;
        }
 
        location ~* ^.+\.(mpg|avi|mp3|swf|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|rtf|mpeg)$ {
                access_log off;
                break;
        }
        location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|bmp|js)$ {
                expires 30d;
                break;
        }

    location / {
                #fastcgi_pass unix:/tmp/python/python.sock;
                #如果上面是采用TCP的形式则
                fastcgi_pass 127.0.0.1:8080;
                fastcgi_pass_header Authorization;
                fastcgi_intercept_errors off;
                fastcgi_param PATH_INFO         $fastcgi_script_name;
                fastcgi_param REQUEST_METHOD    $request_method;
                fastcgi_param QUERY_STRING      $query_string;
                fastcgi_param CONTENT_TYPE      $content_type;
                fastcgi_param CONTENT_LENGTH    $content_length;
                fastcgi_param SERVER_PORT       $server_port;
                fastcgi_param SERVER_PROTOCOL   $server_protocol;
                fastcgi_param SERVER_NAME       $server_name;
                fastcgi_param REQUEST_URI       $request_uri;
                fastcgi_param DOCUMENT_URI      $document_uri;
                fastcgi_param DOCUMENT_ROOT     $document_root;
                fastcgi_param SERVER_ADDR       $server_addr;
                fastcgi_param REMOTE_USER       $remote_user;
                fastcgi_param REMOTE_ADDR       $remote_addr;
                fastcgi_param REMOTE_PORT       $remote_port;
                fastcgi_param SERVER_SOFTWARE   "nginx";
                fastcgi_param GATEWAY_INTERFACE "CGI/1.1";
        }
}

重启nginx
/etc/init,d/nginx restart
5.绑定hosts
vim /etc/hosts
127.0.0.1 www.python.com python.com
6.创建python项目目录
cd /home/zhukai
django-admin.py startproject djangoproject
cd djangooprject
在8051这个端口为nginx提供服务,对应nginx配置文件中写的。
python manage.py runfcgi method=threaded host=127.0.0.1 port=8051

#python manage.py runserver 8080
你将会看到如下输出:
Validating models...
0 errors found

Django version 1.2, using settings 'diangoproject.settings'
Development server is running at http://127.0.0.1:8080/
Quit the server with CONTROL-C.
[13/May/2011 02:27:28] "GET / HTTP/1.1" 200 2065

Django服务器成功开启

打开浏览器, 访问: http://127.0.0.1:8000/   http://www.python.com:8080/

看一下hello下生成了什么
__init__.py
manage.py
settings.py
urls.py
1.__init__.py:一个空文件,它用来告诉Python把这个文件夹看成是一个Python包。
2.manage.py:一个实用的命令行,它让我们通过各种各样的途径和Django项目进行交互。
3.settings.py:设置/配置Django项目
4.urls.py:Django项目的URL映射。

配置使用数据库
配置settings.py
1.DATABASE_ENGINE—— 'postgresql_psycopg2', 'mysql' or 'sqlite3'中的一个,
其它的也适用。
2.DATABASE_NAME——数据库的名字。如果你使用的是SQLite,数据库是你电脑上的一个文件;因些,
DATABASE_NAME就是文件完整的绝对路径,包含文件名。如果文件不存在,它会在你第一次使用数据库
的时候创建。
当指定文件的路径时,要使用斜线,即使是在windows下(如C:/homes/user/mysite/sqlite3.db)。
3.DATABASE_USER——你的数据库的用户名(SQLite不使用)。
4.DATABASE_PASSWORD——你的数据库的密码(SQLite不使用)。
5.DATABASE_HOST——数据库所在的主机。如果你的数据库在相同的物理机器上,保留它为空字符串(SQLite不使用)。

下面给出我的配置,我用的是mysql数据库

DATABASE_ENGINE = 'mysql'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'python'             # Or path to database file if using sqlite3.
DATABASE_USER = 'root'             # Not used with sqlite3.
DATABASE_PASSWORD = '123'         # Not used with sqlite3.
DATABASE_HOST = 'localhost'             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '3306'             # Set to empty string for default. Not used with sqlite3.

注意下面的INSTALLED_APPS的设置。这个变量保存所有已经激活的Django应用
程序的Django实例的名字。Apps能在多个项目中使用,你可以打包和发布它们,让它们在其它项目中使用。

默认情况下,INSTALLED_APPS包含有下面的apps,它们都是来自于Django:
1.django.contrib.auth -- 用户验证系统。 
2.django.contrib.contenttypes -- 内容类型框架。 
3.django.contrib.sessions -- session框架。
4.django.contrib.sites -- 使用一个Django管理多个站点的框架。
这些应用程序默认是包含的,方便通常情况下的使用。

每个应用程序都需要使用和至少一个数据表,因些我们在使用它们之前要先创建数据表。0
要做这些事情,使用下面的命令即可:
python manage.py syncdb

syncdb命令在你的settings.py文件中查找NSTALLED_APPS的设置并使用数据库的设置创建所需要的数据表。
你将会看到每个数据表的创建信息,并且如果你为验证系统创建超级用户帐号的话,你将会看到一个对话框。
继续,并完成它。

 

后续开发 参照 http://www.ibm.com/developerworks/cn/linux/l-django/

posted @ 2012-12-27 18:20  陳聽溪  阅读(1821)  评论(0编辑  收藏  举报