nginx

tornado

Tornado是一种Web服务器软件的开源版本。Tornado和现在的主流Web服务器框架(包括大多数Python的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。
得利于其非阻塞的方式和对epoll的运用,Tornado每秒可以处理数以千计的连接,因此Tornado是实时Web服务的一个理想框架。pip install tarnado

hello tornado

最小应用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web

from tornado.options import define, options

define("port", default=8001, help="run on the given port", type=int)


class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, Tornado")


def main():
tornado.options.parse_command_line()
application = tornado.web.Application([
(r"/", MainHandler),
])
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()


if __name__ == "__main__":
main()

nginx

Nginx是一个高性能的HTTP和反向代理服务器,其特点是占有内存少,并发能力强。
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
安全反向代理有许多用途:

  1. 可以提供从防火墙外部代理服务器到防火墙内部安全内容服务器的加密连接。
  2. 可以允许客户机安全地连接到代理服务器,从而有利于安全地传输信息(如信用卡号)。
  3. 安全反向代理会造成各安全连接因加密数据所涉及的系统开销而变慢。但是,由于 SSL 提供了高速缓存机制,所以连接双方可以重复使用先前协商的安全参数,从而大大降低后续连接的系统开销。
hello nginx

配置文件放在 /etc/nginx/sites-enabled
本来是放在 /etc/nginx/sites-available 然后用软链接链到/etc/nginx/sites-enabled
但我不知怎么链过去文件总是空白的,所以简单粗暴复制过去。
重启nginxsudo /etc/init.d/nginx restart

nginx 代理 tornado

在/etc/nginx/sites-enabled创建配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# this is the real tornado service                                      
upstream tornado {
server 127.0.0.1:8001;
}
server {
listen 8000;
root /var/www/tornado/;
index app.py;

server_name server;

location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /center.py/$1 last;
}
}

location ~ / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://tornado;
}
}

所有 http://localhost:8000 的请求都会转发到upstream tornado{}里面列出的服务里面。

supervisor

安装sudo apt-get install supervisor
安装成功后,supervisor就会默认启动
将每个进程的配置文件单独拆分,放在/etc/supervisor/conf.d/目录下,以.conf作为扩展名
配置文件内容:

1
2
[program:tornado_hello]
command=python /var/www/tornado/hello.py

重启supervisor,让配置文件生效,然后启动test进程:

1
2
supervisorctl update
supervisorctl