python+Tornado + Supervisor + nginx部署----如果只是代理几台测试下可不用supervisor

  

2012-06-20 21:26:12|  分类: python |  标签: |举报 |字号 订阅

1.安装python 2.6.6

wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz

tar -xvzf Python-2.6.6.tgz

cd Python-2.6.6

./configure 

make

make install

2.tornado 安装

http://www.tornadoweb.org/

下载 tornado-2.3.tar.gz

tar xvf tornado-2.3.tar.gz

cd tornado-2.3

python setup.py install

3.setuptools安装

http://pypi.python.org/pypi/setuptools#files

系统要安装python,并安装与之对应的setuptools,下载地址在此

安装:

# sh setuptoolsxxxx.egg

4.supervisor安装

supervisor安装非常方便,

easy_install supervisor就可以  

或者下载地址在此,解压缩后#python setup.py install

# echo_supervisord_conf > /etc/supervisord.conf

修改/etc/supervisord.conf文件  添加

[program:tornado_poll]

command=python /home/wangwang/helloworld/helloworld.py –port=80%(process_num)02d              ; 要执行的命令,这里的“%(process_num)02d”会用2位精度的进程号替换,例如,第一个进程是8001,第二个进程是8002,以此类推,下同。

process_name=%(program_name)s-80%(process_num)02d   ; process_name expr (default %(program_name)s)      ;启动的进程的名字,这里的名字只是supervisor内部是别用,与你所启动程序的进程名无关

numprocs=2                   ; 启动几个tornado进程

directory=/home/wangwang/helloworld                ; 运行前cd到此目录

autostart=true                ; supervisord守护程序启动时自动启动tornado

autorestart=true              ; supervisord守护程序重启时自动重启tornado

user=www-data                   ; 运行程序前su到此用户

redirect_stderr=true          ; 将stderr重定向到stdout

stdout_logfile=/home/wangwang/helloworld/python_log        ; 记录控制台输出的日志位置

5.tornado 入口

###############  helloworld.py  ###############

#!/usr/bin/env python
#coding=utf-8
import sys
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
define("port", default=8888, help="run on the given port", type=int)

#port = int(sys.argv[1].split('=')[1])
port =sys.argv[1]

print port
if port == 0:
    exit(1)
class MainHandler(tornado.web.RequestHandler):
    def get(self):
       content = "hello ,world from port: %s" % port
       self.write(content)

def main():

    application = tornado.web.Application([

        (r"/", MainHandler),

    ])

    http_server = tornado.httpserver.HTTPServer(application)

    http_server.listen(port)

    tornado.ioloop.IOLoop.instance().start()

if __name__ == "__main__":

    main()

 

supervisor进程管理

#开启 supervisor:

#supervisord

#管理进程

#supervisorctl 

>status/stop/start/restart

stop all #停止所有进程

stop tornado_poll:tornado_poll-8000 #停止运行在8000端口上的Tornado守护进程

stop tornado_poll:* #停止所有


#nginx 做反向代理实现负载均衡

安装nginx前,yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel 

http://nginx.org/en/download.html

 tar zxvf nginx-1.2.1.tar.gz

 cd nginx-1.2.1

 ./configure --with-http_stub_status_module --prefix=/usr/local/webserver/nginx

 make && make install

修改 nginx/conf/nginx.conf

worker_processes  1;

error_log  logs/error.log;

pid        logs/nginx.pid;

events {

use epoll;  

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    #access_log  logs/access.log;

    sendfile        on;

    keepalive_timeout  65;

    upstream frontends {

        server 127.0.0.1:8000;

        server 127.0.0.1:8001;

    }

    server {

        listen 80;

        client_max_body_size 50M;

        location ^~ /static/ {

            root /home/wangwang/helloworld;

            if ($query_string) {

                expires max;

            }

        }

        location = /favicon.ico {

            rewrite (.*) /static/favicon.ico;

        }

        location = /robots.txt {

            rewrite (.*) /static/robots.txt;

        }

        location / {

            proxy_pass_header Server;

            proxy_set_header Host $http_host;

            proxy_redirect off;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Scheme $scheme;

            proxy_pass http://frontends;

        }

    }

}


nginx/sbin/nginx -t  -c nginx/conf/nginx.conf  #检测配置文件是否正常

nginx/sbin/nginx   -c nginx/conf/nginx.conf  #开启nginx

启动
[root@admin sbin]# ./nginx
 重启
[root@admin local]#    /usr/local/nginx/sbin/nginx -s reload
#浏览器中测试
http://ip:80

访问:http://127.0.0.1/

hello ,world from port: 8000  / hello ,world from port: 8001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值