nginx_django_uwsgiflup笔记&实操

...

笔记:

...........,使得Nginx成为继Apache(70.2%)和IIS(20.5%)之后的第三大web服务器软件,.......................................

而在2002年诞生的nginx服务器..................,它有两个方面能够打败apache服务器,一是高并发,二是节省资源,即轻量级。................

              使用Nginx服务器就是使用它的两大特点,一是高并发访问,二是代理,它能够快速地解析静态文件,而对于动态语言实现的动态程序

则传递到后台的服务,实现了动静网页解析的分离。

              Nginx是一个自由的、开源的、高性能的HTTP服务器和反向代理,同时也是一个IMAP/POP3代理服务器,它是由Igor Sysoev 于2002年开发,并且在2004年发布了第一个版本,................................

              Nginx解决了C10K问题,它的设计不像传统的服务器使用线程处理请求,取而待之的是使用了一个更加高级的机制--事件驱动机制,而且是异步事件驱动结构。

....................................

              本部分我们来部署nginx对python的实现。关于python的实现,我们在nginx服务器端使用的uwsgi模块,而在后端则是运行着uWSGI服务器,所有的python程序由uWSGI服务器处理,同其他的*GI协议一样,由前端的nginx服务器向后端的uWSGI服务器转发请求,而后端服务器在处理完成之后再将结果返回给Nginx服务器,最终发送给访问者--客户端。

...................

             uWSGI是一个快速的、自维护的、对开发者和系统管理者友好的应用程序容器,是纯C语言开发的服务器。

     在它的诞生之日,uWSGI只是作为一个WSGI服务器,但是随着时间的推移,它现在已经演变为一个完整的网络、集群web应用服务器,可以执行消息、对象传递、缓存、PRC和进程管理。

     它使用的协议是uwsgi(注意,所有的字母都是小写,该协议已被nginx和cherokee的发行版本所包含),所有网络或进程间通信均使用uwsgi协议。

     uWSGI可以运行在预fork模式、线程模式、异步模式有情,并且支持green threads、coroutines各种形式,例如uGreen,Greenlet,Stackless和Fiber。

     对于管理人员来说,uWSGI服务器提供了各种配置方法:命令行、环境变量、XML、ini、yaml、json、sqlite3数据库和LDAP。

 .......................................................

               uwsgi协议主要工作在TCP方式下,但是master进程可以绑定到UDP或者是多播端口,用于SNMP或者是集群、消息请求管理,支持SCTP协议。

      uWSGI嵌入了一个非常小的SNMP服务器,我们可以使用它和web应用程序结合来实现监控基础架构。........................集群是uWSGI服务器的关键功能之一,该功能从0.9.7-dev开始提供。..........

                 ..............

 ..............................

      通过使用--add-module选项,将uwsgi处理模块添加到nginx服务器。注意,0.8.40以后的nginx就不用这么麻烦了,它已经被包含在nginx代码中了。.............................该模块能够使得nginx与uWSGI进程进行交互,并且可以控制传递给uWSGI进程的参数。对于uwsgi协议和uWSGI服务器,uWSGI服务器就是uwsgi协议的一个实现。 该模块首次提供出现在nginx-0.8.40版本中,........................

      在了解了nginx的uwsgi模块、uWSGI服务器以及ngx_cache_purge之后,当然根据需要我们还可以对django架构了解一下。在这里我们按照一个全新的环境来布置,即从安装python开始。......................................

      由于uwsgi模块默认就支持,除非使用--without-http_uwsgi_module参数禁止安装,因此它的安装就不为重要,重要的是我们还需要一个叫做ngx_cache_purge的模块。

 *************************实例运行************************************

......在下面的内容中将会讲述8个运行实例。

实例1:运行开发服务器

实例2:以uWSGI方式运行

实例3:使用django框架

实例4:一个uWSGI实例实现对多个虚拟主机的支持

实例5:分别监听在不同端口的两个uWSGI实例

实例6:针对nginx uwsgi模块应用举例的一个具体实现

实例7:集群的实现

实例8:会话存储:

第一种情况:使用基于数据库的方式

第二种情况:使用基于Memcached的方式

.......................................................................

      对于memcached服务器,python客户端方式选择有三种:

一是python-memcached,它的下载地址是:http://www.tummy.com/Community/software/python-memcached,最新版本是1.47

二是cmemcached,它的下载地址为http://gijsbert.org/cmemcached/,最新版本为0.95;

三是libmemcached,它的下载地址为http://download.tangent.org/,最新版本为0.9

................

       *******会话********

      session是django中的一个高级工具,它可以存储用户的个人信息,以便用户在下次访问该网站时使用这些信息,session的基础还是cookie,但是它能够提供一些更加高级的功能。

      Django提供了完全支持匿名会话的功能,它的会话结构让每个网站的访问者存储并且检索任意数据。它将数据存储在服务器端并且对发送和收到的cookie做摘要,cookies包含一个 会话ID,而不是数据本身。Django只在需要的时候才发送cookie,如果我们没有设定任何的session数据,它不会送出cookie。

      此外,还需要明白一点,django的会话(session)框架是完全基于cookie的,并且它也只能是基于cookie,而不会像其他一些软件(例如PHP)那样,在session不能正常工作时,就会把session ID放到URL中。任何事情只要存在就有它的道理,这一决定是经过深思熟虑的,将session ID放到URL中的那种方法不仅使得URL很丑陋,并且session ID还有可能通过Referer头泄露出去,从而给网站带来安全隐患,这就是Django基于cookie的原因。

..........

========================================================================

原文地址:https://www.cnblogs.com/taosim/p/2859670.html