nginx+spawn-fcg 配置webpy

作者: moodi | 来源:发表于2017-10-01 12:16 被阅读0次

    本文解释python如何在nginx+spawn-fcg运行

    spawn-fcgi是一个小程序,作用是管理fast-cgi进程,简单小巧,原先是属于lighttpd的一部分,后来由于使用比较广泛,所以就独立项目了.

    spawn-fcgi最新下载地址http://redmine.lighttpd.net/news/9

    wget http://download.lighttpd.net/spawn-fcgi/releases-1.6.x/spawn-fcgi-1.6.4.tar.gz
    tar -zxvf spawn-fcgi-1.6.4.tar.gz
    cd spawn-fcgi-1.6.4
    ./configure #编译
    make

    1.部署准备

       Nginx (我装的是 version: nginx/1.13.5,  lnmp安装,方便) (需要包含 fastcgi 与rewrite 模块).
                  查看nginx版本 ./nginx -v
       Webpy (是Python的一个web框架,它非常简单,非常强大)
       Spawn-fcgi 
       Flup  (它负责接受转发的请求)
    

    2.在网站根目录下新建index.py 我的根目录设置在/home/wwwroot/gpio

      #!/usr/bin/env python
      # -*- coding: utf-8 -*-
    
     import web
    
     urls = ("/.*", "hello")
     app = web.application(urls, globals())
    
    class hello:
           def GET(self):
               return 'Hello, world!'
    
    if __name__ == "__main__":
            web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)
            app.run()
    
    注意:通过执行chmod +x index. py使您的文件可执行。如果它不是可执行的,就会出现错误。

    3. Nginx 配置

       #我的conf文件位置: cd /usr/local/nginx/nginx.conf 或  cd /usr/local/nginx/vhost/配置文件
        location / {
        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 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;
        fastcgi_param SERVER_PROTOCOL $server_protocol;
        fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9002;
       }
    
    #配置静态
     location /static/ {
        root /home/wwwroot/gpio;   
        if (-f $request_filename) {
           rewrite ^/static/(.*)$  /static/$1 break;
        }
    }
    
    QQ截图20171001115050.png

    4.Spawn-fcgi

       开启 :spawn-fcgi -d /home/wwwroot/gpio -f /home/wwwroot/gpio/index.py -a 127.0.0.1 -p 9002 
       关闭: kill `pgrep -f "python /path/to/www/gpio/index.py"`
    
       你可以运行ps aux | grep index.py 查看运行
    
       注意,在配置nginx的fastcgi时可能会报错如下:
       child exited with 2
       解决方法: insert #!/usr/bin/env python into header of index.py
       spawn-fcgi child exited with 126
       解决方法: chmod +x upload.py
       child exited with1
       加-n参数  如spawn-fcgi -d //home/wwwroot/gpio -f /home/wwwroot/gpio/index.py -a 127.0.0.1 -p 9002  -n
    

    5.重启nginx

        如果你使用的是lnmp那就太简单了一句即可 lnmp restart
        不过不是lnmp安装nginx,  进入可执行的目录下cd /usr/local/nginx/sbin  输入命令./nginx -s reload 即可
    

    推荐一个linux命令行网站:https://rootopen.com

    相关文章

      网友评论

        本文标题:nginx+spawn-fcg 配置webpy

        本文链接:https://www.haomeiwen.com/subject/gjgoextx.html