<tfoot id='m8dc1ud3'></tfoot>
  • <small id='tg6clau6'></small><noframes id='m5bl37un'>

    您的位置:荆州电脑信息网 > win7问题 > win7下 nginx fastcgi 怎么运行python

    win7下 nginx fastcgi 怎么运行python

    作者:电脑信息网日期:

    返回目录:win7问题


    起初我很是奇怪,按理说只有当静态文件不存在时nginx才会返回404错误,而现在访问的是配置在nginx.conf中的一个动态路径,该动态路径请求通过fastcgi最终会映射到某个python class的GET或POST方法中,那为什么nginx会返回404呢?
    查阅相关文档之后发现
    fastcgi在遇到webpy或其他后端http模块处理极慢的情况下,也就是说超过nginx允许的应答时间,nginx就会对此动态路径请求做出404的应答
    针对此情况,我开始着手准备一系列测试和实验
    实验
    实验一:剥离fastcgi,单独使用webpy,进行压力测试
    这个实验很简单,只需要注释掉一行代码,便可以以纯webpy方式访问,基于webpy的python应用main入口一般都是这样:
    ?
    1
    2
    3
    4

    if __name__ == "__main__":
    web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func,addr)
    app.add_processor(web.loadhook(session_hook))
    app.run()

    只需要注释掉第二行即可,之后在终端下运行python <filename>.py,webpy会默认监听本地的8080端口,之后无论是通过浏览器还是其他方式访问相应地址即可
    同时,还需要准备一份发起http请求的代码,python用来干这活最简单不过了
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    import httplib

    server = "192.168.2.2:8080"
    url = "/user/login?username=&password=111&rnd=33"

    class perftest:
    def __init__(self):
    pass

    def run(self):
    conn = httplib.HTTPConnection(server)
    for i in range(100):
    try:
    conn.request("GET", url)
    rsp = conn.getresponse()

    if 200 == rsp.status:
    print "headers", rsp.getheaders()
    content = rsp.read()
    print "content", content
    except Exception, ex:
    print "ERR:", ex
    conn.close()

    跑了几次压力之后,webpy扛不住了…开始大面积抛异常,大致意思是python自带的logging模块出错,因为有频繁的文件打开关闭操作,某个操作导致文件句柄被非法访问…
    在查看相关的log封装类之后发现,python的日志模块设计实在是有点不够内聚,也可以说不够彻底吧,不由得想起了之前用过的log4net,真是简洁啊
    出错的原因在项目中开发同事封装的log模块多次执行了addHandler和removeHandler操作,据说在之前的开636f7079e799bee5baa6366发过程中还出现过一行日志打印多遍的情况,而且随着程序的运行,相同的日志会越来越多…
    顺手将该封装修改为单例类之后,故障解除
    处理完之后接着跑压力,webpy还是会偶尔打印异常信息,不过已经变成了session访问异常,还好的是出现面积很小,于是开始增加压力测试的并发量,结果表明稳定度还是可以的,性能也在可以接受的范围之内
    实验二:保持最终部署环境不变(nginx+fastcgi+webpy),继续压力测试
    在上次测试解决完日志的问题之后,我开始以真实环境做相关的测试,要注意的是使用nginx之后,需要访问nginx.conf中配置绑定的相关端口,不再是webpy默认的8080端口
    继续做上述的压力测试,性能也在可以接受的范围之内
    实验三:模拟用户环境
    根据测试MM所描述的,浏览器在B子系统出错过程中扮演了很关键的角色,于是我分别使用几个浏览器和纯粹的python代码分别访问相同的地址
    几种组合的测试发现:
    浏览器在只访问B子系统的情况下,一直表现正常
    一旦浏览器访问过A子系统之后,再次访问B子系统即出现测试MM描述的404现象
    python代码一直访问正常

    1、安装python

    下载最新的python版本,在本文撰写时为 python 3.4,
    下载地址:https:///ftp/python/3.4.0/python-3.4.0.msi,现在完成后点击运行,完成python安装(如c:/python34).

    配置python路径支持,右键“计算机”=》“属性”=》“高级系统设置”=》“高级”=》“环境变量”=》“系统变量”=>"Path"=&
    gt;"编辑",在后面追加";c:\python34"。这样,就可以在命令行窗口下直接运行"python.exe"。运行"cmd",打开一个控制
    台窗口,运行"python -V",显示“Python 3.4.0"即表示成功。

    2、安装Django

    下载最新版 Django

    1.6.2,下载地址: https:///download/nginx-1.5.13.zip。下载后解压到一个特定目录(如C:\nginx)即可。

    运行nginx,打开浏览器,输入"127.0.0.1",显示" Welcome to nginx!"即表示成功。

    5、新建项目

    运行"cmd"打开控制台窗口,输入"d:"(假设项目目录为d:\mysite)切换到d盘。输入"django-admin.py startproject mysite",这样就建立了一个名为"mysite"的项目.

    6、重定向nginx静态文件到"mysite"

    编辑"C:\nginx\conf\nginx.conf"文件,将其中第一个"... root
    html;..."更改为“root d:/mysite/html”。运行"c:\nginx\nginx.exe -s
    reload"重新加载nginx。打开浏览器,输入“127.0.0.1”,显示“404”错误。这是因为"d:\mysite\html"目录及文件
    不存在。新建"d:\mysite\html"目录,并在此目录下新建一个"hello.html"文件。输
    入"<html><body>Hello</body></html>",保存。打开浏览器,输
    入"127.0.0.1/hello.html",应该会显示"hello"信息。

    7、运行django fastcgi服务

    打开控制台,进入"d:\mysite"目录,运行"manage.py runfcgi method=threaded host=127.0.0.1 port=8008".启动FastCGI服务。

    8、修改nginx配置文件“nginx.conf",在第一个server(listen 80)组,做一下修改

    #1、注释默认的页面位置:

    #location / {

    # root html;

    # index index.html index.htm;

    #}

    #2、添加 定向所有页面请求到FastCGI
    location / {

    root d:/mysite;

    fastcgi_pass 127.0.0.1:8008;

    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_pass_header Authorization;

    fastcgi_intercept_errors off;

    }

    #3、定向静态页面请求到页面目录中

    location ~* \.(gif|jpg|jpeg|html|js|css|png)$ {

    root d:/mysite/html;

    index index.html index.htm;

    }

    运行"nginx -s reload"更新配置。

    在目录(d:\mysite\html)下添加页面文件"hello.html".在浏览器中输入localhost/hello.html将显示该静态页面内容。

    9、在浏览器中键入"localhost"将显示django欢迎页面。
    1.安装nginx安装过nginx这就不好从新演示了.默认你也安装好了nginx.2.安装flup$:dpkg -l *flup*打印信息:Desired=Unknown/Install/Remove/Purge/Hold| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)||/ Name Version Description+++-===========================-===========================-======================================================================ii python-flup 0.2126-1 Implements Python Web Server Gateway Interface (WSGI)$:apt-get install python-flup3:配置nginx.conf.这个是按照网上配置的.server {listen 1235;server_name localhost;#charset koi8-r;#access_log /dev/null;access_log /usr/local/nginx/logs/access.log;location / {#location /htm {# root /home/utest/ms;#}root /home/utest/ms;fastcgi_pass 127.0.0.1:1234;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 CONTENT_LENGTH $content_length;include fastcgi_params;fastcgi_pass_header Authorization;fastcgi_intercept_errors off;}}解释:端口7a64e58685e5aeb9339:1235--为监听端口.端口:1234----为web服务器运行的端口.from=olddocs

    CGI的英文全称为Common Gateway Interface(公共网关接口),是Nginx和动态脚本程序7a64e4b893e5b19e364的桥梁,Nginx通过FastCGI接口将动态请求发送给FastCGI,FastCGI中的Wrapper进程生成一个线程,将请求交给脚本解释程序执行,然后通过原来的socket将解释执行后的结果原路返回给Nginx,之后Nginx将结果交给客户端。 Nginx是通过套接字文件socket来将动态请求发送给wrapper,使用的是Tcp协议。wrapper通过CGI接口来接受请求。这样web服务器和解释程序之间完全可以独立开发,这样避免了解释程序直接调用服务器的接口而导致的出错和崩溃以及安全性问题。而且可以使Nginx专心处理静态页面请求和转发动态请求,而将脚本解释器安装在另一台服务器,使服务器的压力得到分摊。 CGI是作为PHP程序的补丁开发的,安装PHP首先安装其所依赖的库,之后在编译配置参数时加入对CGI的支持--enable-fpm --enable-cgi等选项。编译PHP的扩展模块,需要用到php中的phpize工具用来生成模块编译时的configure文件,如果运行phpize时无法生成configure文件,原因有:没有安装autoconf软件包。 php-fpm进程的配置文件为/usr/local/php/etc/php-fpm.conf 可以对php-fpm进行相应的配置。 Nginx配置支持fastcgi: location ~ \.php${ root html; fastcgi_pass unix:/tmp/fastcgi.soke //通过套接字文件和cgi建立联系,该文件在php-fpm.conf中设置 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME html$SCRIPT_FILE_NAME;设置参数 include fastcgi_params; //导入fastcgi参数配置文件,该文件在nginx安装时自动生成。 }

      <small id='0ovnb3ke'></small><noframes id='ru7errej'>

        <tbody id='lw51zlwg'></tbody>
    • <tfoot id='ckxcfuo3'></tfoot>

      相关阅读

      • win7下 nginx fastcgi 怎么运行python

      • 电脑信息网win7问题
      • 起初我很是奇怪,按理说只有当静态文件不存在时nginx才会返回404错误,而现在访问的是配置在nginx.conf中的一个动态路径,该动态路径请求通过fastcgi最终会映射到某个python class的GET或
      关键词不能为空

      标签导航

      windows7旗舰版谁给我个激活码?能激活就给分!!!!!... 给个win7旗舰版激活码,只要马上能激活成功,马上50分 win7 64位的旗舰版激活码或者激活工具,有能用的给分,谢... 求个WIN7旗舰版序列号 位的 激活后给加分 win10自带的浏览器怎么卸载 win10自带ie怎么卸载不了 win10系统自带的浏览器怎么卸载 win10怎么卸载系统自带的ie 如何windows下nginx+django+flup py... 如何用 FastCGI 运行 Django Nginx+Python 怎么搞才好 webpy + nginx with fastcgi方案怎么... win10怎么开启ipv6服务 win10怎么用ipv6 win10怎么样正确开启ipv6? win10怎么使用ipv6? 请问WIN7 64位旗舰版应该自带微软的杀毒软件MSE吗? WIN7自带的Windows Defender等不等于MSE... win7自带的杀毒软件MSE怎么使用,在那里可以找到它的设置... win7自带windows defender,是否还有必要自... 如何把手机通讯录导入windows10人脉 如何将win10手机人脉导入win10电脑 win10 怎么把excel通讯录导入人脉 如何把win10电脑中的人脉导出到安卓手机 win7系统自带的windows defender 是杀毒软... win7有自带的杀毒软件么?在哪里? win7系统自带的杀毒软件是什么? win10如何隐藏系统保留? win10如何关闭最近使用的文件 win10怎样把最近使用的文件记录清除或者禁用 Win10如何禁止快速访问文件夹显示最近使用的文件 怎么删除Win7所有还原点 win7系统老是自己创建还原点 怎么删除多余的还原点? win10怎么隐藏硬盘的一个分区吗 win10隐藏硬盘分区怎么办 最详细的win10隐藏硬盘分区... Win10怎么利用注册表隐藏硬盘分区 win10装系统后怎样显示隐藏的磁盘分区 我用的华硕笔记本,Win7系统,关机时一直显示正在关机···... win7系统经常卡住,然后关机时间很长,最后蓝屏,怎么解决?... 我的电脑系统是win7旗舰版的,最近长时间运行之后不是蓝屏就... ThinkpadE425机型Win7系统点开始关机时,一直处... win10 Edge浏览器怎么收藏网页到收藏夹并显示出来 win10的浏览器怎样使经常使用的网页增加到收藏 win10 Edge浏览器怎么收藏网页到收藏夹并显示出来? 怎么设置电脑屏幕分辨率? 电脑屏幕分辨率怎么调整?? 怎么把电脑的屏幕分辨率调到最好 电脑屏幕分辨率怎么调最合适? 求助啊 Windows10一开机就显示查看你的隐私设置,点击... windows10隐私设置页面 Windows10一开机就显... windows10开机后提醒隐私设置,第一步点查看设置,第二... windows10隐私设置页面 nginx配置完成后为什么访问localhost还是ngin...

      电脑蓝屏,win7,win10相关问题_荆州电脑信息网