本来要用uwsgi,但是。。。介于以前说过。。。这台服务器略老。。。redhat 3的系统。。。确实很老,没法用yum,没法安装很多东西,打算自己编译uwsgi,但是编译各种错误。。。花了快一天,最后放弃了,改用fastcgi吧,虽然网上各种说uwsgi的效率多么高,性能多么好,但是没办法忍痛割爱吧。

   web.py官网有相应的教程,但是我copy过来进行了修改,红色就是修改,因为各种细节没有说。
 
    环境依赖的软件包
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 配置文件
 
user root root;
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/ {
   root   /home/workspace/
    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。
 
运行
打开一个 spawn-fcgi 进程.
打开 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官方文档。
 
附带教程:
关闭nginx:
停止操作是通过向nginx进程发送信号(什么是信号请参阅linux文 章)来进行的
步骤1:查询nginx主进程号
ps -ef | grep nginx
在进程列表里 面找master进程,它的编号就是主进程号了。
步骤2:发送信号
从容停止Nginx:
kill -QUIT 主进程号
快速停止Nginx:
kill -TERM 主进程号
强制停止Nginx:
pkill -9 nginx

另外, 若在nginx.conf配置了pid文件存放路径则该文件存放的就是Nginx主进程号,如果没指定则放在nginx的logs目录下。有了pid文 件,我们就不用先查询Nginx的主进程号,而直接向Nginx发送信号了,命令如下:
kill -信号类型 '/usr/nginx/logs/nginx.pid'

 
 
遇到的问题1:
1.没法加载js 和css 因为static目录路径设置不对,按照第二个红色设置即可
2.路径正确后但是出现错误permission denied,增加第一个红色标志 user root root即可。
3.关了一次nginx,改了端口号重启显示端口号占用
google的时候学会了这个命令
lsof -i :80 
然后你就可以看是不是nginx继续占用,或者其他程序占用了你的端口号
详情见另一篇文章介绍lsof~~

linux web.py spawn-fcgi web.py 配置的更多相关文章

  1. 轻量级web服务器lighttpd的编译及配置(for x86-linux)

    转自:http://blog.163.com/ljf_gzhu/blog/static/131553440201211522317367/ 备注: PC Linux:Ubuntu-10.10 Linu ...

  2. 【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https

    问题描述 在上篇博文"[Azure 应用服务]App Service for Linux 中实现 WebSocket 功能 (Python SocketIO)"中,实现了通过 HT ...

  3. Unity3d Web Player 与server端联网配置

    针对Unity3d Web Player 的server端联网配置写一随笔咯.  以SmartFoxServer2X官方的Unity3d Example ”tris“为例,部署好服务器之后,在Unit ...

  4. Unity3d Web Player 的server端联网配置

    新游戏出了第一个能跑完流程的版本,不得不佩服Unity3D强大的功力,PC.MAC OS.Linux.IOS.Android.web player,前天刚发布的unity3d 4.2版本还支持WIND ...

  5. [置顶] ARM-Linux下WEB服务器Boa的移植、配置和运行测试

    Linux下使用的轻量级WEB服务器主要有:lighttpd.thttpd.shttpd和boa等等,而Boa是使用最为广泛的轻量级WEB服务器之一(当然,阿帕奇是世界使用排名第一的Web服务器软件) ...

  6. Web安全学习笔记之Openvas配置,使用,报告

    OpenVAS(开放式漏洞评估系统)是一个客户端/服务器架构,它常用来评估目标主机上的漏洞.OpenVAS是Nessus项目的一个分支,它提供的产品是完全地免费.OpenVAS默认安装在标准的Kali ...

  7. Linux:Ubuntu下部署Web运行环境

    Linux:Ubuntu下部署Web运行环境 本次博客将会从三部分内容详述Ubuntu系统下Web运行环境的配置: 依次是:FTP服务器的搭建.MYSQL数据库的搭建.JDK的安装等. 参考文章如下: ...

  8. Linux上部署web服务器并发布web项目-转

    Linux上部署web服务器并发布web项目   近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以 ...

  9. Linux上部署web服务器并发布web项目

    近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以及我对此做的一些总结和个人的一些见解,希望对跟我一 ...

  10. 在Linux系统下运行微信Web开发者工具

    微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件.本人系统为Linux ...

随机推荐

  1. scrapy-splash抓取动态数据例子三

    一.介绍 本例子用scrapy-splash抓取今日头条网站给定关键字抓取咨询信息. 给定关键字:打通:融合:电视 抓取信息内如下: 1.资讯标题 2.资讯链接 3.资讯时间 4.资讯来源 二.网站信 ...

  2. MVP+Dagger2+Rxjava+Retrofit+GreenDao 开发的小应用,包括新闻、图片、视频3个大模块,代码封装良好

    练习MVP架构开发的App,算是对自己学过的知识做一个总结,做了有一段时间,界面还算挺多的.代码量还是有的,里面做了大量封装,总体代码整理得非常干净,这个我已经尽力整理了. 不管是文件(java.xm ...

  3. enter 键登录的实现

    js 代码 document.onkeypress = function() { var iKeyCode = -1; if (arguments[0]) { iKeyCode = arguments ...

  4. ant-design表单处理和常用方法及自定义验证

    首先要说一下antdesign这个框架API和demo丰富,而且开发环境提供对应的warning来纠正用户的错误.是一个很好的组件库. 关于表单验证方面是依赖于 async-validator  库. ...

  5. angular 禁止事件冒泡 和 默认行为

    事件冒泡和事件捕捉一直以来都是被讨论的话题,也许大家平时在工作中没有遇到过需要解决事件冒泡的情况举个例子: <body ng-click="fun1()"> <d ...

  6. jdbc调用 oracle 存储过程操作

    创建有参存储函数findEmpNameAndSal(编号),查询7902号员工的的姓名和月薪,[返回多个值,演示out的用法]当返回2个或多个值,必须使用out符号当返回1个值,就无需out符号 cr ...

  7. CSS3Transition添加多个过渡效果

    本篇文章由:http://xinpure.com/css3transition-to-add-multiple-transition-effects/ 通过监听动画的结束事件,可以为一个元素添加多个动 ...

  8. 资源管理器也玩多标签:QT TabBar v1.5.0.0a3

    http://zmingcx.com/explorer-also-play-more-tags-qt-tabbar-v1-5-0-0a3.html浏览器中的标签浏览功能非常受欢迎,安装QT TabBa ...

  9. jedis连接集群

    /**        * 集群版        */       @Test       public  void JedisJiuQun()       {           HashSet< ...

  10. Bootstrap手动打开隐藏模态框

    开发的时候遇到一个bug,关闭模态框后背景灰色图层依旧还在.原来是用错了隐藏模态框的代码. 正确的调用方式如下: $("#id").modal("show"); ...