0
点赞
收藏
分享

微信扫一扫

nginx+spawn-fcg 配置webpy

本文解释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;
    }
}

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

举报

相关推荐

0 条评论