本来要用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. http://www.blogjava.net/crespochen/archive/2011/04/22/348819.html

    http://blog.csdn.net/supersky07/article/details/7407523 http://blog.csdn.net/cuker919/article/detail ...

  2. EffectiveJava(29)优先考虑类型安全的异构容器

    当你的泛型集合需要更多的灵活性,你可以将键进行参数化而不是将容器进行参数化.然后将参数化的键提交给容器,来插入或者获取值.用泛型系统来确保值得类型与它的键相符. 我们创建一个Favorite类来模拟这 ...

  3. 记录一个在制作Swing程序的小怪事

    在制作一个Swing程序时,出现了奇怪的事情,程序在Eclipse里执行正常,但打包后再执行那些动态执行的控件就消失不见了.截图如下: 在Eclipse里正常执行的画面: 打包执行后出现的画面: 可以 ...

  4. 云计算之路-试用Azure:上不了高速的跑车,无法跨Cloud Service的DNS服务器

    从阿里云的踩坑大师,到Azure的抹黑大师,我们似乎成了云计算负面用户的典型,可是我们还是忍不住想表达自己真实的使用感受.如果有错误的地方,欢迎大家批评! 在Azure上建好虚拟网(Vitual Ne ...

  5. 关于android-support-v4.jar包的错误

    1.加入android-support-v4 误 java.lang.ClassNotFoundException: android.support.v4.view.ViewPager in load ...

  6. linux下Oracle11g RAC搭建(二)

    linux下Oracle11g RAC搭建(二) 一.安装前配置 网络的配置 IP占用測试 进入windows下.运行cmd,使用ping命令验证网段是否被占用. 注:用哪个网段都行,一定保证不要被其 ...

  7. hadoop权威指南(第四版)要点翻译(4)——Chapter 3. The HDFS(1-4)

    Filesystems that manage the storage across a network of machines are called distributed filesystems. ...

  8. Nutch的发展历程(转)

    2002年8月由Doug Cutting发起,托管于Sourceforge,之后发布了0.4.0.5.0.6三个版本 2004年9月Oregon State University(俄勒冈州立大学)采用 ...

  9. 单元测试JUnit 4 (一)——keeps the bar green to keeps the code clean

    1. 导读 Junit是一个可编写重复测试的简单框架,是基于Xunit架构的单元测试框架的实例.Junit4最大的改进是大量使用注解(元数据),很多实际执行过程都在Junit的后台做完了,而且写tes ...

  10. Linux-HUP信号的干扰问题

    在向大家详细介绍Linux HUP信号之前,首先让大家了解下Linux HUP信号,然后全面介绍Linux服务器X,希望对大家有用.想让进程在断开连接后依然保持运行?如果该进程已经开始运行了该如何补救 ...