• linux web.py spawn-fcgi web.py 配置


    本来要用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~~
  • 相关阅读:
    antd pro2.0 使用记录五:设置代理
    antd pro2.0 使用记录四:右侧顶部菜单栏+新建页面
    antd pro2.0 使用记录三:多个接口调用问题
    antd pro2.0 记录二:登录/注册页面逻辑,调用后台
    实用的Portraiture滤镜磨皮教程
    mysql 远程访问权限
    vc6.0运用mysql数据库中的编码所导致的乱码问题(接收和输出的编码必须要一致)
    飞思卡尔imx6开发板Linux下GPIO驱动
    beagleBone black 中QT的移植
    Beaglebone Black从零开始系列教程大汇总!
  • 原文地址:https://www.cnblogs.com/xiaoleiel/p/8301469.html
Copyright © 2020-2023  润新知