User-Profile-Image
hankin
  • 5
  • 首页
  • 分类
    • Windows
    • Web
    • VoIP
    • Virtualization
    • Trading
    • Smart Home
    • SEO
    • Security
    • Python
    • Program
    • PHP
    • OSX
    • OS
    • OpenSource
    • Nginx
    • MySQL
    • Mood
    • Linux
    • Life
    • Injection
    • Hosting
    • Finance
    • Exploits
    • CDN
  • 页面
    • About
  • 友链
    • 维酷科技
    • Tesra超算网络
Help?

Please contact us on our email for need any support

Support
  • 首页
    首页   ›   OS   ›   Linux   ›   正文
Linux

Webpy + Nginx with FastCGI搭建Web.py

2010-09-27 11:06:46
2491  0 0

这一节讲解的是如何使用Nginx和FastCGI搭建Web.py应用

环境依赖的软件包

  • Nginx 0.8.* or 0.7.* (需要包含fastcgi和rewrite模块)。
  • Webpy 0.32
  • Spawn-fcgi 1.6.2
  • Flup

注意:Flup是最常见的忘记装的软件,需要安装

更老的版本应该也可以工作,但是没有测试过,最新的是可以工作的

一些资源

  • Nginx wiki
  • Spawn-fcgi
  • Flup

Notes

  • 你可以重命名index.py为任何你想要的文件名。
  • /path/to/www 为代码路径。
  • /path/to/www/index.py为python代码的完整路径。

Nginx 配置文件

location / {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; # [1]
fastcgi_param PATH_INFO $fastcgi_script_name; # [2]
fastcgi_pass 127.0.0.1:9002;
}

对于静态文件可以添加如下配置:
location /static/ {
if (-f $request_filename) {
rewrite ^/static/(.*)$ /static/$1 break;
}
}

注意: 地址和端口号可能会是不同的。

Spawn-fcgi

可以通过一下命令启动一个Spawn-fcgi进程:
spawn-fcgi -d /path/to/www -f /path/to/www/index.py -a 127.0.0.1 -p 9002

启动和关闭的命令

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

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

Note: 你可以随意填写地址和端口信息,但是一定需要和Nginx配置文件相匹配。

Hello world!

讲下面的代码保存为index.py(或者任何你喜欢的),注意,使用Nginx配置的话,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()

注意: 同样需要给代码设置权限,代码如下chmod +x index.py。

运行

  1. 打开一个 spawn-fcgi 进程.
  2. 打开 Nginx.

如果需要检查应用程序是否运行,使用ps aux|grep index.py可以很容易的查看。

重启nginx配置:
/path/to/nginx/sbin/nginx -s reload

停止nginx:
/path/to/nginx/sbin/nginx -s stop

注意:运行后可访问http://localhost访问网站,更多信息可以去参考nginx官方文档。

评论 (0)

Click here to cancel reply.

欢迎您 游客  

    ProdigYu
    180文章 77评论 4点赞 554319浏览
    随机文章
    解决Docker容器内CentOS不能使用systemctl服务
    3年前
    I’m come back.
    15年前
    CentOS7\Ubuntu安装VMware Workstation 12
    9年前
    浏览器console控制台自动刷新js代码
    4年前
    Win10系统不能自动关闭显示器
    4年前
    Tags
    Apache CentOS CMD DDOS Debian DNS Docker FastCGI Google IIS IP iptables Linux Mac MySQL Nginx Opensource PHP Python Skill SSH Ubuntu Vim VMware VPN web.py Windows 删除 命令 命令提示符 安装 开源 技巧 插件 漏洞 百度 系统 组件 终端 缓存 网络电话 脚本 自建 详解 错误
    Meta
    • Log in
    • Entries feed
    • Comments feed
    • WordPress.org
    Copyright © 2025
    主页
    页面
    • About
    博主
    ProdigYu 管理员
    Something about myself
    180 文章 77 评论 554319 浏览
    测试
    测试