zoukankan      html  css  js  c++  java
  • nginx+webpy配置

      之前搞app时候学的webpy,一直用的自带webserver,最近研究nginx一段时间,决定二者结合玩一下~

      把搭建的要点总结下,说不定哪天还得用——其实平时手挺懒的...

      1 必备模块和背景知识

       pcre,flup,nginx,webpy,spawn-fcgi

         pcre是nginx安装前提;安装pcre后configur enginx时带--with-pcre=path,path为pcre源码路径(不是安装路径哦)。

       fastcgi , 通信规范,规定了通信的方式、协议;而wsgi是接口规范,规定了函数定义、调用,相当于一组 Python API,提供了对 FastCGI (及其它)协议的支持。

       spawn-fcgi , fastcgi进程管理器,最初是lighttpd的子模块,lighttpd也是一个与nginx类似的http server,作用等同于其它http server中的fastcgi模块;只不过它实现的比较好、在某些情况下的效能会比较高,所以被大家分离出来广泛使用,以致独立出来作为一个项目。所以就有了apache+spawn-fcgi、nginx+spawn-fcgi等.

         flup, 一个用python写的web server,也就是cgi中所谓的Server/Gateway,它负责接受lighttpd转发的请求,并调用你写的程序 (application),并将application处理的结果返回到apache/lighttpd.

         web.py,应该说有了上面的东西你就可以开始编写你的web程序了,但是问题是你就要自己处理浏览器的输入输出,还有cookie、session、模板等各种各样的问题了,web.py的作用就是帮你把这些工作都做好了,它就是所谓的web framework,另外一个出名的是django,不过感觉太复杂了,web.py差不多就够用了(目前web.py对session的支持不是太好)。

      他们关系如下,

      

    2 配置过程

       统统略,见参考文献2和3

    3 源码注解

      大体请参考4,研读中请务必弄清楚几个知识点:进程会话,粘滞位,dup2函数等,否则会被很多非核心代码搞蒙。

      其实,核心的代码就在这,

    close(FCGI_LISTENSOCK_FILENO);
    dup2(fcgi_fd, FCGI_LISTENSOCK_FILENO);
    close(fcgi_fd);  

    之后的exec操作,子进程都会继承FCGI_LISTENSOCK_FILENO,然后会在这上面accept(这自然是flup操作wsgi了),然后会写回accept的句柄,nginx就会受到响应的。

    参考文献:

    1 nginx配置大全中文   http://my.oschina.net/duxuefeng/blog/34880

    2 webpy官方配置建议  http://webpy.org/cookbook/fastcgi-nginx.zh-cn

    3 一个中文配置示例   http://blog.csdn.net/five3/article/details/7732832

    4 spawn-fcgi源码     http://chenzhenianqing.cn/articles/936.html

  • 相关阅读:
    springboot项目使用restTemplate调用php接口返回数据及所遇问题
    idea创建spring项目所遇问题
    关于爬取网站的信息遇到的有关问题
    Hadoop综合大作业
    hive基本操作与应用
    熟悉HBase基本操作
    爬虫大作业
    第三章 熟悉常用的HDFS操作
    数据结构化与保存
    使用正则表达式,取得点击次数,函数抽离
  • 原文地址:https://www.cnblogs.com/zhaoyl/p/4048601.html
Copyright © 2011-2022 走看看