webpy + nginx + fastcgi 构建python应用

1.准备环境

CentOs  6.3

nginx-1.4.2.tar.gz            http://nginx.org/download/nginx-1.4.2.tar.gz

openssl-1.0.1c.tar.gz       http://www.openssl.org/source/openssl-1.0.1c.tar.gz

pcre-8.34.tar.gz              ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz

spawn-fcgi-1.6.4.tar.gz    http://download.lighttpd.net/spawn-fcgi/releases-1.6.x/spawn-fcgi-1.6.4.tar.gz

zlib-1.2.8.tar.gz              http://zlib.net/zlib-1.2.8.tar.gz

flup-1.0.2.tar.gz              http://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gz

yum -y install gcc automake autoconf libtool make

yum install gcc gcc-c++   python-setuptools  python-pip

pip  install  web.py

2.安装

2.1 zlib安装

tar zxvf zlib-1.2.8.tar.gz

cd zlib-1.2.8

./configure

make && make  install

2.2 pcre安装

tar zxvf pcre-8.34.tar.gz

cd pcre-8.34

./configure
make && make install

2.3 nginx安装

tar zxvf nginx-1.4.2.tar.gz 

cd nginx-1.4.2

./configure --sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-http_ssl_module
--with-pcre=../pcre-8.34 --with-zlib=../zlib-1.2.8 --with-openssl=../openssl-1.0.1c

make && make install

3.测试nginx

启动:/usr/local/nginx/nginx

访问: http://x.x.x.x

出现如下表示nginx安装正常

暂时先关闭nginx,以下是关闭nginx脚本

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig:   - 85 15
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /usr/local/nginx/conf/nginx.conf
# pidfile:     /usr/local/nginx/logs/nginx.pid 

# Source function library.
. /etc/rc.d/init.d/functions 

# Source networking configuration.
. /etc/sysconfig/network 

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0 

nginx="/usr/local/nginx/nginx"
prog=$(basename $nginx) 

NGINX_CONF_FILE="/usr/local/nginx/nginx.conf" 

lockfile=/var/lock/subsys/nginx 

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
} 

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
} 

restart() {
    configtest || return $?
    stop
    start
} 

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
} 

force_reload() {
    restart
} 

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
} 

rh_status() {
    status $prog
} 

rh_status_q() {
    rh_status >/dev/null 2>&1
} 

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac 

4.安装fcgi及flup

tar zxvf spawn-fcgi-1.6.4.tar.gz

cd spawn-fcgi-1.6.4

./configure

make && make install
tar zxvf flup-1.0.2.tar.gz

cd flup-1.0.2

python setup.py  install

5.配置nginx及webpy应用

vim  /usr/local/nginx/nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        root /data/www/;
        access_log  /data/log/test.access.log;

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

       }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

web.py应用加上以下内容server.py

if __name__ == "__main__":
  web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)
  app.run()

同时配置一个启动脚本

[[email protected] www]# vim start.sh
#!/bin/sh
spawn-fcgi -d /data/www -f /data/www/server.py -a 127.0.0.1 -p 9002

启动fcgi及nginx

[[email protected] www]# sh start.sh 

[[email protected] www]# /etc/init.d/nginx  start

检查监听端口

[[email protected] www]# netstat -nlpt | egrep "9002|80"
tcp        0      0 127.0.0.1:9002              0.0.0.0:*                   LISTEN      54799/python
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      54816/nginx
[[email protected] www]# 

现在即可输入http://x.x.x.x访问你的应用吧

时间: 2024-10-09 14:55:35

webpy + nginx + fastcgi 构建python应用的相关文章

Python应用攻略 ---- Mac环境下Flask+Nginx+FastCGI实现Python应用部署

对于一个iOS开发者来说,会写后台应用并非必要的技能,然而掌握一门后台语言却无疑可以锦上添花,不仅可以对前后台架构有更加全面的了解,同时在实际开发工作中也可以自己写一些后台应用. flask框架本身集成了一个简单的服务器,可以在本机调用,然而在这种情况下要调用Python应用接口就只能使用模拟器调试,若想要使用真机调试,我们还是需要正儿八经地部署服务器. 在这里,我们介绍一种Nginx搭配FastCGI实现Mac环境下的本地服务器部署. Nginx配置 a. 安装HomeBrew ruby -e

nginx+fastcgi+c/cpp

参考:http://github.tiankonguse.com/blog/2015/01/19/cgi-nginx-three/ 跟着做了一遍,然后根据记忆写的,不清楚有没错漏步骤,希望多多评论多多交流... 搭建环境 安装:nginx.spawn-fcgi.fastcgi.fcgiwrap nginx sudo apt-get install nginx-full spawn-fcgi git clone https://github.com/lighttpd/spawn-fcgi.git.

Nginx+FastCGI+Django请求静态(css,js,img等)

之前写了一个简易的运维管理系统,奈何一直都是用的开发者模式启动django,现想用ngxin代理,参照<<The Django Book>>,上面提供了Apache+mod_python(mod_wsgi|FastCGI)等方式,而我选择了Nginx+FastCGI的方式(机器上本来就有nginx了,并且我平时用nginx也比较多). Django通过FastCGI启动的方式有如下几种: 在tcp端口上运行一个线程服务器: ./manage.py runfcgi method=th

Nginx FastCGI的运行原理

一.FastCGI 1.介绍 CGI全称通用网关接口 Commmon Gateway Interface 用于HTTP服务上的程序服务通信交流的一种工具,CGI程序须运行在网络服务器上. 传统CGI接口方式性能较差,由于每次HTTP服务器遇到动态程序需要重启解析器来执行解析,然后结果被返回给HTTP服务器.这在处理高并发时,几乎是不可能的,因此诞生了FastCGI.另外传统的CGI接口方式安全性也很差 一个可伸缩地.高速地在HTTP服务器和动态脚本语言间通信的接口 接口在linux下是socke

windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)

本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分布式架构:下面将先给出整个架构的核心节点简介,希望各位多多点赞: . 架构设计图展示 . nginx+iis构建服务集群 . redis存储分布式共享的session及共享session运作流程 . redis主从配置及Sentinel管理多个Redis集群 . 定时框架Task.MainForm提

【入门篇】Nginx + FastCGI 程序(C/C++) 搭建高性能web service的Demo及部署发布

http://blog.csdn.net/allenlinrui/article/details/19419721 1.介绍 Nginx - 高性能web server,这个不用多说了,大家都知道. FastCGI程序 - 常驻型CGI程序,它是语言无关的.可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能. Nginx要调用FastCGI程序,需要用到FastCGI进程管理程序(因为nginx不能直接执行外部的cgi程序,我们可使用lighttpd中的s

nginx FastCGI中的概念区分

之前总没有把FastCGI的概念理解的很清楚,看到一段话,感觉说的很清楚了. nginx是支持fastcgi的.然而我们需要下一个fastcgi进程管理器,启动它才能执行fastcgi程序.(这里有几个概念要搞清楚:nginx是nginx,fastcgi是fastcgi,前者支持后者,但是前者本身没有集成后者(/的功能).对于ngingx,我们要配置conf.nginx来设置如何支持fastcgi.而对于fastcgi,我们写的fastcgi程序需要一个调度者:fastcgi进程管理器. 其实也

webpy+nginx+uwsgi安装配置

转:(1)安装Nginx1.1 下载nginx-1.0.5.tar.gz并解压1.2 ./configure (也可以增加--prefix= path指定安装路径)此时有可能会提示缺少pcre支持,如果要安装pcre的话可以通过 yum install pcre-devel 来实现安装1.3 make1.4 make install (2)安装uWSGI2.1 下载uwsgi-0.9.8.2.tar.gz并解压2.2 make在安装uWSGI的时候有可能提示说是libxml2不存在,针对此情况,

安装python,setuptools,get-pip.py,ipython构建python开发环境

安装python,setuptools,get-pip.py,ipython,构建python开发环境 安装环境:Centos6.7 ,安装时选项为桌面,增加了开发工具包. 1.python2.7.11安装 下载源代码: wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz 安装: ./configure make make install 2.安装setuptools wget https://pypi.python.o