tornado 11、部署生产环境

来源:互联网 发布:制作动态图片的软件 编辑:程序博客网 时间:2024/04/29 19:45

一、后台运行

  一般调试过程中我们使用python app.py运行网站,方便我们在命令行中看运行状况。
但在生产环境下我们需要后台运行网站。我们可以使用linux的nohup命令。

nohup python app.py >> log/app.log &

二、supervisor守护进程

使用nuhup可以后台运行一个进程,但是一旦网站出现错误,进程关闭,网站将会停止运行。这时候就需要supervisor来帮我们守护进程,自动重启网站。

可在supervisor配置文件中添加:

[program:tornado-8000]command=python /var/www/main.py --port=8000directory=/var/wwwuser=www-dataautorestart=trueredirect_stderr=truestdout_logfile=/var/log/tornado.logloglevel=info

三、nginx代理多进程

可以使用nginx代理网站,配合supervisor实现多进程。

在app.py中添加接受命令行参数:

import tornado.httpserverimport tornado.ioloopimport tornado.optionsimport tornado.webfrom tornado.options import define, optionsdefine("port", default=8000, help="run on the given port", type=int)class IndexHandler(tornado.web.RequestHandler):    def get(self):        greeting = self.get_argument('greeting', 'Hello')        self.write(greeting + ', friendly user!')if __name__ == "__main__":    tornado.options.parse_command_line()    app = tornado.web.Application(handlers=[(r"/", IndexHandler)])    http_server = tornado.httpserver.HTTPServer(app)    http_server.listen(options.port)    tornado.ioloop.IOLoop.instance().start()

可在supervisor配置文件中添加:

[program:tornado-8000]command=python /var/www/main.py --port=8000directory=/var/wwwuser=www-dataautorestart=trueredirect_stderr=truestdout_logfile=/var/log/tornado.logloglevel=info[program:tornado-8001]command=python /var/www/main.py --port=8001directory=/var/wwwuser=www-dataautorestart=trueredirect_stderr=truestdout_logfile=/var/log/tornado.logloglevel=info

使用nginx代理:

user nginx;worker_processes 5;error_log /var/log/nginx/error.log;pid /var/run/nginx.pid;events {    worker_connections 1024;    use epoll;}proxy_next_upstream error;upstream tornadoes {    server 127.0.0.1:8000;    server 127.0.0.1:8001;    server 127.0.0.1:8002;    server 127.0.0.1:8003;}server {    listen 80;    server_name www.example.org *.example.org;    location /static/ {        root /var/www/static;        if ($query_string) {            expires max;        }    }    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://tornadoes;    }}
0 0