用tornado ,Supervisord ,nginx架网站
2014-03-22 21:17
281 查看
最近使用 Tornado 重写了博客,于是查看了很多关于部署基于 Tornado 开发的网站的资料,比较成熟的方案就是使用 Nginx 来做反向代理,使用 Supervisord 来作为进程管理工具。至于什么叫反向代理,为什么 Tornado 需要使用
Supervisord 来进行进程管理,可以自己 Google 一下。现在主要介绍一下配置和其中遇到的一些问题。
Nginx 的配置文件可以参考 Tornado 的文档最后面的例子,基本上就那样了,需要说明的是,Tornado 使用
Nginx 来处理静态文件,所以在
和后面 Supervisord 配置有关的主要还是负载均衡的这段配置:
这个博客我开了两个 Tornado 进程,端口号分别是8000和8001,现在开始来看
Google,这里主要讲和这两个端口有关的故事,话说需要开两个 Tornado 进程,需要使用 Supervisord 来进行管理,于是和这个有关的配置如下:
使用 Tornado 都知道,在 Tornado 中
[以下方法太丑陋,请看下面更新]其中必须指定
这样就解决了。现在就可以通过 Supervisord 来启动 Tornado 进程了,即使 Tornado 进程不小心退出,Supervisord 也可以让它再次运行。不过 Supervisord 自己也完蛋了呢?比如服务器重启了,怎么办?当然是让它开机自启动了,Linux
中的开机自启动有很多方法,这里介绍一个比较传统的方法,就是把 Supervisord 加入
把这个脚本保存为
root 权限执行如下命令:
这样即使重启服务器后,Supervisord 也会自动运行,当然它也会运行它管理的进程,最后在安装 Nginx 时,如果自己不需要加入一些第三方模块,建议直接使用官方源进行安装,这样升级等非常方便,而且也是开机自启动,这样一下来,即使重启服务器,什么都不用做,网站也会原地满血复活。
最后注意:启动脚本
用Supervisord管理Python进程
Tornado + Supervisor 在生产环境下的部署方法
2012.06.27:在启动指定端口时,可以使用 Tornado 自带的命令行工具,如下:
这样就默认为8888端口,这样
启动时就可以指定端口了。
Supervisord 来进行进程管理,可以自己 Google 一下。现在主要介绍一下配置和其中遇到的一些问题。
Nginx 的配置文件可以参考 Tornado 的文档最后面的例子,基本上就那样了,需要说明的是,Tornado 使用
Nginx 来处理静态文件,所以在
nginx.conf中有这样一段:
location ^~ /static/ { root /home/blog/app; # static 文件夹所在的目录 if ($query_string) { expires max; } }
和后面 Supervisord 配置有关的主要还是负载均衡的这段配置:
upstream http { server 127.0.0.1:8000; server 127.0.0.1:8001; }
这个博客我开了两个 Tornado 进程,端口号分别是8000和8001,现在开始来看
supervisord.conf的配置,其它配置可以自行
Google,这里主要讲和这两个端口有关的故事,话说需要开两个 Tornado 进程,需要使用 Supervisord 来进行管理,于是和这个有关的配置如下:
[program:blog-8000] command=python /home/blog/app/app.py --port=8000 autostart=true ; supervisord守护程序启动时自动启动tornado autorestart=true ; supervisord守护程序重启时自动重启tornado redirect_stderr=true ; 将stderr重定向到stdout stdout_logfile = /home/blog/blog-8000.log [program:blog-8001] command=python /home/blog/app/app.py --port=8001 autostart=true ; supervisord守护程序启动时自动启动tornado autorestart=true ; supervisord守护程序重启时自动重启tornado redirect_stderr=true ; 将stderr重定向到stdout stdout_logfile = /home/blog/blog-8001.log
使用 Tornado 都知道,在 Tornado 中
main函数都是这样的写法:
http_server = tornado.httpserver.HTTPServer(Application()) http_server.listen(port) tornado.ioloop.IOLoop.instance().start()
[以下方法太丑陋,请看下面更新]其中必须指定
port,这样怎么同一个文件指定两个端口呢?当然就像上面的
supervisord.conf的配置那样,使用
--port=xxxx来指定端口了,于是
app.py中可以写:
if __name__ == "__main__":
import sys
port = int(sys.argv[1].split('=')[1])
http_server = tornado.httpserver.HTTPServer(Application()) http_server.listen(port) tornado.ioloop.IOLoop.instance().start()
这样就解决了。现在就可以通过 Supervisord 来启动 Tornado 进程了,即使 Tornado 进程不小心退出,Supervisord 也可以让它再次运行。不过 Supervisord 自己也完蛋了呢?比如服务器重启了,怎么办?当然是让它开机自启动了,Linux
中的开机自启动有很多方法,这里介绍一个比较传统的方法,就是把 Supervisord 加入
/etc/init.d中,
把这个脚本保存为
supervisord,然后加入到
/etc/init.d文件夹中,再以
root 权限执行如下命令:
chmod +x /etc/init.d/supervisord update-rc.d supervisord defaults
这样即使重启服务器后,Supervisord 也会自动运行,当然它也会运行它管理的进程,最后在安装 Nginx 时,如果自己不需要加入一些第三方模块,建议直接使用官方源进行安装,这样升级等非常方便,而且也是开机自启动,这样一下来,即使重启服务器,什么都不用做,网站也会原地满血复活。
最后注意:启动脚本
supervisord中的
PIDFILE=/tmp/$NAME.pid这个设置一定要和
supervisord.conf中的配置相同。(顺便吐槽一下这个程序的名字,太长了,不过写完这篇文章,我居然就背着了)
一些参考资料
用Supervisord管理Python进程Tornado + Supervisor 在生产环境下的部署方法
更新
2012.06.27:在启动指定端口时,可以使用 Tornado 自带的命令行工具,如下:from tornado.options import define, options define("port", default=8888, help="run on the given port", type=int)
这样就默认为8888端口,这样
__main__就可以如下:
import tornado.options tornado.options.parse_command_line() http_server = tornado.httpserver.HTTPServer(Application()) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start()
启动时就可以指定端口了。
相关文章推荐
- 用tornado ,Supervisord ,nginx架网站
- 用tornado ,Supervisord ,nginx架网站
- 用tornado ,Supervisord ,nginx架网站
- tornado 10、网站安全问题
- 在Python3下使用tornado和SQLAlchemy实现一个简单的MVC网站
- 我自己做的网站终于上线啦,用tornado做的,求围观 www.yustock.live
- 基于Tornado开发云算笔记网站
- 使用tornado和angularjs搭建网站
- tornado 学习笔记5 构建Tornado网站应用
- 2.Supervisord进程管理工具的安装使用 (副标题:用supervisord管理Tornado进程)
- 【从0开始Tornado网站】主页登录和显示的最新文章
- tornado zbar 二维码识别 ,配合nginx 反向代理,supervisord 监控
- nginx,tornado,websocket,supervisord配置成型
- tornado+bootstrap急速搭建你自己的网站
- tornado + Django + nginx + MySQL搭建网站
- tornado+bootstrap急速搭建你自己的网站
- Tornado 网站demo 二
- 一个网站的诞生07-- Tornado Web Server
- Tornado 网站demo 三