web(一)----tornado nginx配置

转载 http://www.luokr.com/p/2

最近几天闲来无事,用Python的Tornado框架写了个应用(螺壳网),应用本身的实现很简单,代码也已经开源了,有兴趣的同学可以查看http://www.luokr.com/about,里面有更加具体的介绍。今天顺便写一下如何在Linux下部署一个简单的基于Nginx+Tornado+Supervisor的Python web服务。

Tornado:官方介绍,是使用Python编写出来的一个极轻量级、高可伸缩性和非阻塞IO的Web服务器软件,著名的 Friendfeed 网站就是使用它搭建的。官方网站:http://www.tornadoweb.org/

Supervisor:一个服务(进程)管理工具,主要用于监控我们的服务器上的服务,并且在出现问题时重启之。

Nginx:没什么好说的啦,作为Web服务器,在这里主要利用它做反向代理。

整个的工作流程就是客户端访问Nginx主机,由Nginx反向代理到后端Tornado进程的服务器,而Tornado进程则由Supervisord管理。和其它常见的web服务架构相似,比如Nginx + PHP-FPM。

以下示例都是基于Linux发行版CentOS 6.x。

Tornado安装和配置:

首先让我们来实现一个简单的基于Tornado web server的应用。Tornado可以在命令行中直接 pip 或者 easy_install 安装,或者在官网下载源代码的压缩包,解压后整个包放入Python的库目录中即可。

现在我们来新建一个index.py文件,假定该文件位于 /var/www,编辑代码如下:

  1. import tornado.ioloop
  2. import tornado.web
  3. class MainHandler(tornado.web.RequestHandler):
  4. def get(self):
  5. self.write("Hello, world")
  6. application = tornado.web.Application([
  7. (r"/", MainHandler),
  8. (r"/index.py", MainHandler),
  9. ])
  10. if __name__ == "__main__":
  11. application.listen(8888)
  12. tornado.ioloop.IOLoop.instance().start()

index.py文件作为应用入口,可以直接在命令行使用python解释器执行之:

  1. $ python index.py

这个时候,我们就可以用服务器IP+端口8888的方式访问到我们的Hello world应用了,比如127.0.0.1:8888。

假如执行上述命令的时候出错,比如报:ImportError: No module named pkg_resources,那么可能你的Python安装路径不正确,可以尝试重新配置,执行:

  1. $ curl http://python-distribute.org/distribute_setup.py | python

Supervisor安装和配置:

每次手动在命令行启动应用是比较麻烦的,我们还需要一个能够方便的管理服务进程的工具,包括自动重启进程等,而Supervisor的作用在这里就可以体现了。我们使用它来管理这个Tornado web server相关的进程。首先安装之:

  1. $ easy_install supervisor

安装完毕后,生成Supervisor的配置文件并编辑:

  1. $ echo_supervisord_conf > /etc/supervisord.conf
  2. $ vim /etc/supervisord.conf

在文件末尾加入:

  1. [program:hello]
  2. command=python /var/www/index.py --port=8888
  3. directory=/var/www
  4. autorestart=true
  5. redirect_stderr=true

这段配置主要作用就是在Supervisor启动的时候自动启动我们的hello应用对应的Tornado web server进程并纳入管理,具体配置项的意义,可以参考Supervisor官方文档http://supervisord.org/。配置完毕后,我们就可以启动管理了:

  1. $ supervisorctl start all

Nginx安装和配置:

首先安装Nginx,如果已安装可以忽略:

  1. $ rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
  2. $ yum install nginx

接下来是Nginx的配置,我们需要使用Nginx来将web请求代理到Tornado web server,新建配置文件:

  1. $ vim /etc/nginx/conf.d/tornado.conf

输入如下内容:

  1. upstream tornado {
  2. server 127.0.0.1:8888;
  3. }
  4. server {
  5. listen 80;
  6. root /var/www;
  7. index index.py index.html;
  8. server_name server;
  9. location / {
  10. root /var/www
  11. if (!-e $request_filename) {
  12. rewrite ^/(.*)$ /index.py/$1 last;
  13. }
  14. }
  15. location ~ /index\.py {
  16. proxy_pass_header Server;
  17. proxy_set_header Host $http_host;
  18. proxy_set_header X-Real-IP $remote_addr;
  19. proxy_set_header X-Scheme $scheme;
  20. proxy_pass http://tornado;
  21. }
  22. }

注意:

(1)其中的root是index.py所在的文件夹.

(2)http://localhost  访问

(3)如果访问http://localhost/template        则index.py中为(r"/index.py/template", TemplateHandler)

重启Nginx:

  1. $ service nginx restart

现在就可以使用Nginx配置中指定的域名直接访问我们的hello应用了。

时间: 2024-11-13 06:56:56

web(一)----tornado nginx配置的相关文章

linux学习笔记——搭建基于nginx的web服务器、多核配置、nginx配置参数

############ 认识nginx #############Nginx:(发音同 engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用.  其优点是轻量级(占有内存少),高并发(并发能力强),事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用ngi

你真的了解如何将 Nginx 配置为Web服务器吗

阅读之前,建议先阅读初识 Nginx. 之后,我们来了解一下 Nginx 配置. 抽象来说,将 Nginx 配置为 Web 服务器就是定义处理哪些 URLS 和如何处理这些URLS 对应的请求.具体来说,就是定义一些虚拟服务器(Virtual Servers),控制具有特定 IP 和域名的请求. 更具体的来说, Nginx 通过定义一系列 locations 来控制对 URIS 的选择.每一个 location 定义了对映射到自己的请求的处理场景:返回一个文件或者代理请求,或者根据不同的错误代码

nginx 配置web 虚拟文件夹 而且codeIgniter,thinkphp 重定向url 地址

nginx 配置虚拟文件夹而且url 重定向 server { #侦听80port listen 8090; #定义使用www.xx.com訪问 server_name 127.0.0.1; #设定本虚拟主机的訪问日志 access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; root /home/lxy/www/cs/; #定义服务器的默认站点根文件夹位置 #默认请求 location / { index

nginx web+反向代理 的配置介绍

user  www;   #定义Nginx运行的用户和用户组 worker_processes  2;  #nginx进程数,建议设置为等于CPU总核心数. #error_log  logs/error.log;     全局错误日志定义类型 #error_log  logs/error.log  notice; #error_log  logs/error.log  info; #pid        logs/nginx.pid;    进程文件 events {  工作模式与连接数上限 w

Nginx架构及其web服务搭建优化配置详解

Nginx安装配置及其理论详解 Nginx的功能介绍绍及其优势性能 Nginx的官方站点Nginx.org Nginx的版本号,次版本号如是表示偶数一般表示是稳定版,如果是基数一般表示是开发版.我们可以根据需要来使用. Nginx的优势特性: 1.模块化设计,有着很好的扩展性.(想实现什么功能,只需要安装模块就好) 2.高可靠性:因为他是主控进程和worker是同步实现的,一个worker出现问题,会立刻启动另一个worker. 3.较低的内存消耗,一万个长连接(keep-alive),在Ngi

nginx 配置web 虚拟目录 并且codeIgniter,thinkphp 重新url 地址

nginx 配置虚拟目录并且url 重写 server { #侦听80端口 listen 8090; #定义使用www.xx.com访问 server_name 127.0.0.1; #设定本虚拟主机的访问日志 access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; root /home/lxy/www/cs/; #定义服务器的默认网站根目录位置 #默认请求 location / { index inde

nginx配置静态web服务器

配置静态的web,需要实现一个虚拟主机. step1: 准备工作 1  查看你的网卡地址(我的 192.168.223.135) #ifconfig 我们这里建立两个web服务器,所以增加一个网卡地址. #ifconfig eth0:0  192.168.223.145 2 建立两个站点目录 #mkdir  /var/tmp/website1 #mkdir  /var/tmp/website2 3 建立两个日志目录 #mkdir  /var/tmp/log/website1 #mkdir  /v

Nginx配置web服务

Nginx配置虚拟主机 虚拟主机概述 所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可以是IP或者端口),具有独立的程序及资源目录,可以独立的对外提供服务,继而给用户访问. 虚拟主机类型 基于域名(通过不同的域名区分不同的主机,使用企业应用较广) 基于端口(通过不同的端口区分不同的主机,企业应用与内部网站) 基于IP(通过不同的IP区分不同的主机,使用较少) 虚拟主机配置 Nginx配置虚拟主机步骤如下: 增加一个完整的server标签段到结尾处.注意,要放在ht

【Linux】【Web】【Nginx】配置nginx日志到远程syslog服务器

1. 概述: 主要是用于吧nginx的日志直接传送到远程日志收集的服务器上.远程日志服务器只要能够支持syslog协议都能够收到日志,本文的syslog服务器是IBM的日志收集系统Qradar. 2. 环境: OS:Red Hat Enterprise Linux Server release 6.7 (Santiago) Kernel:Linux cftjnginx01.homecredit.cn 2.6.32-573.el6.x86_64 #1 SMP Wed Jul 1 18:23:37