Linux下Nginx+Tornado+Django配置

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容