`
pypy
  • 浏览: 92086 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Webpy + Nginx with FastCGI

阅读更多
Requirements

    * Nginx 0.8.* or 0.7.* (with fastcgi and rewrite module).
    * Webpy 0.32
    * Spawn-fcgi 1.6.2
    * Flup

Older versions may work, but aren't tested.
Resources

    * Nginx wiki
    * Spawn-fcgi
    * Flup

Notes

    * You may replace index.py with your own file name.
    * /path/to/www Is the path to the directory where your webpy application is located.
    * /path/to/www/index.py is the full path to your python file.
    * Do not run anything until you are at Run.

Nginx configuration

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;
}

To serve static files add this:

    location /static/ {
        root /path/to/www;
        if (-f $request_filename) {
           rewrite ^/static/(.*)$  /static/$1 break;
        }
    }

Note: the address and port may be different.
Spawn-fcgi

You can start a process with:

spawn-fcgi -d /path/to/www -f /path/to/www/index.py -a 127.0.0.1 -p 9002


Start and shutdown script

Start:

#!/bin/sh
spawn-fcgi -d /path/to/www -f /path/to/www/index.py -a 127.0.0.1 -p 9002


Shutdown:

#!/bin/sh
kill `pgrep -f "python /path/to/www/index.py"`


Note: You're free to choose which address, port, directory and filename to use, but be sure to adjust the Nginx configuration.
Hello world!

Save the following code in your www directory and call the file index.py (or whatever you like). The following line is required: web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr).

#!/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()


Note: make your file executable by doing chmod +x index.py. You'll get errors if it isn't executable.
Run

   1. Start a process with spawn-fcgi.
   2. Start Nginx.

To check if it runs do ps aux | grep index.py or simply visit the page in your browser.

To reload your configuration:

/path/to/nginx/sbin/nginx -s reload


And to stop:

/path/to/nginx/sbin/nginx -s stop

分享到:
评论

相关推荐

    web.py教程

    2. 通过Webpy和Nginx with FastCGI搭建Web.py:讲解如何使用web.py通过Webpy和Nginx with FastCGI搭建Web.py 3. 通过Apache和mod_wsgi部署:展示如何使用web.py通过Apache和mod_wsgi部署 4. 通过Nginx和mod_wsgi部署...

    Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能WEB服务器

    在本教程中,我们将探讨如何使用CentOS 5.4操作系统,配合Nginx 0.8.50,uWSGI 0.9.6.2和Django 1.2.3来构建高性能的Web服务器。这个组合是基于Python的Web应用程序部署的常见选择,因为它能够提供高速度、稳定性和...

    Webpy-coobook-pdf中文教程

    - **通过Webpy和Nginx with FastCGI搭建Web.py**:说明如何使用Nginx和FastCGI来部署web.py应用。 - **通过Apache和mod_wsgi部署**:介绍如何使用Apache和mod_wsgi来部署web.py应用。 - **mod_wsgi deployment ...

    web.py中文教程

    2. **通过Webpy和Nginx with FastCGI搭建Web.py**: 使用Nginx和FastCGI技术部署web.py。 3. **CGI deployment through Apache**: 通过Apache进行CGI部署。 4. **mod_python deployment through Apache**: 通过mod_...

    在Windows系统上搭建Nginx+Python+MySQL环境的教程

    在Windows系统上搭建一个Nginx、Python和MySQL的环境是一项常见的任务,尤其对于开发Web应用来说至关重要。本文将详细讲解如何一步步实现这个环境的构建。 首先,我们需要安装Nginx,这是一个高性能的Web服务器,它...

    web.py flup

    3. 配置服务器:根据你的Web服务器(如Apache或Nginx),配置FastCGI监听端口和路径,将请求转发给flup运行的Web应用。 【集成使用】 结合web.py和flup,你可以创建高性能的Python Web服务。首先,使用web.py编写你...

    Linux系统上Nginx+Python的web.py与Django框架环境

    总结,通过上述步骤,你可以在Linux系统上构建一个由Nginx和Python(web.py或Django)组成的高效Web服务环境,利用Nginx的性能优势处理静态内容,同时通过FastCGI将动态请求转发给Python应用处理。这样的架构提供了...

    web.py官方文档

    这部分内容讲解了如何使用FastCGI部署Web.py应用,特别是如何与nginx和Gunicorn一起使用,以及如何配置lighttpd来作为Web服务器。此外,文档还简要介绍了Web.py API,包括web.application、web.db、***等模块。 ...

    flup-py3-master

    总结来说,“flup-py3-master”项目是一个为Python 3编写的Flup库的分支,旨在帮助开发者在Nginx环境中利用FastCGI协议部署和运行Python Web应用。这个项目可能包含了源代码、测试、文档和安装脚本,便于用户理解和...

    Windows系统下使用flup搭建Nginx和Python环境的方法

    2. **Flup**:一个Python FastCGI工具,用于使Python应用能够通过FastCGI协议与Web服务器通信。 #### 三、下载与安装 1. **Nginx**:访问[Nginx官方下载页面](http://nginx.org/en/download.html)下载适用于...

    用uWSGI和Nginx部署Flask项目的方法示例

    uWSGI不仅支持WSGI协议,还支持多种其他协议(如FastCGI、SCGI等),并提供了丰富的功能,如热重载、多进程/多线程支持、异步处理等。 #### 部署步骤详解 1. **准备Flask应用** 创建一个简单的Flask应用,例如`...

    网络编程技术:第5章 Python Web编程(1).pptx

    FastCGI进程管理器(如mod_fastcgi for Apache或Nginx的fastcgi_pass)负责创建和管理一组长期运行的进程,以接收和处理来自Web服务器的请求,降低了每次请求的启动时间。 WSGI(Web Server Gateway Interface)是...

    flup-1.0.1

    例如,如果你有一个名为`app.py`的简单Web应用,你可以使用Flup将它包装成FastCGI服务: ```python from flup.server.fcgi_wsgi import WSGIServer from myapp import app if __name__ == '__main__': WSGIServer...

    详解使用Nginx和uWSGI配置Python的web项目的方法

    本文将详细介绍如何使用Nginx和uWSGI来配置Python Web项目,这两种工具结合使用能提供高效、稳定的服务。uWSGI是一种高性能的应用服务器,而Nginx则是一款强大的反向代理服务器,它们共同工作能够优化Web应用的性能...

    Windows操作系统上各种Web服务器搭配各种模块部署Django的方法

    另外,还提到了使用 LightTPD 和 Nginx 作为 Web 服务器的可能性。 #### 总结 本文全面地介绍了在 Windows 操作系统上使用不同 Web 服务器和模块部署 Django 应用程序的方法。从运行环境的准备到具体组件的安装与...

    flup安装包

    在实际部署中,你需要将这个FastCGI服务器连接到你的Web服务器,如Apache或Nginx。Web服务器配置会因服务器类型而异,但通常涉及设置一个反向代理来将HTTP请求转发给FastCGI服务。 总的来说,Flup是Python开发人员...

    uwsgiit-py-源码.rar

    通过深入研究uwsgiit-py-源码.zip中的内容,开发者不仅可以理解uWSGI的工作原理,还可以根据具体需求进行定制和扩展,提升web应用的性能和可靠性。同时,这也是一种学习Python服务器端编程的好方式,有助于提升在...

    Python部署web开发程序的几种方法

    在Nginx中配置FastCGI时,需要使用`fastcgi_pass`指令指向FastCGI服务端的地址。 #### 2. HTTP代理 对于需要高并发处理的应用程序,可以通过Nginx使用`proxy_pass`指令将HTTP请求转发至后端应用服务器。这种方式...

Global site tag (gtag.js) - Google Analytics