1.Nginx作為反代理,分發(fā)到后端的torndo服務(wù)器
2.Django作為framwork搭建到tornado服務(wù)器上,使用其admin功能
服務(wù)器版本信息:Ubuntu 12.04.5 LTS
Django項目運行在Tornado服務(wù)器上
在你的Django項目根目錄下創(chuàng)建index.py文件
vi /path/to/project/index.py
import os
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import tornado.wsgi
from django.core.wsgi import get_wsgi_application
define("port", default=8000, help="run on the given port", type=int)
def main():
tornado.options.parse_command_line()
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings' # path to your settings module
application = get_wsgi_application()
container = tornado.wsgi.WSGIContainer(application)
http_server = tornado.httpserver.HTTPServer(container, xheaders=True)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
進程管理工具Supervisord
安裝supervisor
pip install supervisor
生成 supervisor 默認(rèn)配置文件,放在 /etc/supervisord.conf ,在端口8001-8004為Tornado開四個進程
vi /etc/supervisord.conf
[group:project]
programs=strategy
[program:project]
command=python /path/to/project/index.py -- port=80%(process_num)02d
directory=/path/to/project
process_name = %(program_name)s%(process_num)d
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
stdout_logfile_maxbytes=500MB
stdout_logfile_backups=50
stderr_logfile=/var/log/tornado.log
loglevel=info
numprocs = 4
numprocs_start = 1
初始啟動Supervisordsupervisord,查看supervisor狀態(tài)
supervisorctrl status,如果報錯的話,查看錯誤原因
vi /var/log/tornado.log, 解決問題后,重啟服務(wù)器
supervisorctrl restart project(注意換為你的group)或者
supervisorctrl restart all
Nginx
vi /etc/nginx/nginx.conf
或者在/etc/nginx/sites-enabled/下編輯可用站點
upstream tornadoes {
server 127.0.0.1:8001;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8004;
}
server {
listen 8080;
server_name www.project.com *.project.com;
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;
}
重啟Nginx服務(wù)器/etc/init.d/nginx restart或者service nginx restart
防火墻
允許本地所有端口訪問-A INPUT -i lo -j ACCEPT
屏蔽外網(wǎng)訪問8001~8004端口-A INPUT -p tcp --dport 8001:8004 -j REJECT