部署

2018-01-21  本文已影响0人  马梦里
1. nginx.py:
server {
    listen 80;

    location /uploads {
        alias /root/forum/user_image;
    }
    location /static {
        alias /root/forum/static;
    }

    location / {
        proxy_pass http://localhost:2000;
    }

}
2. supervisor:

supervisor 的配置文件:forum.conf

[program:forum]
command=/usr/local/bin/gunicorn wsgi --bind localhost:2000 --workers 3 --worker-class gevent
directory=/root/forum
autostart=true
autorestart=true
environment=LANG="en_US.utf8", LC_ALL="en_US.UTF-8", LC_LANG="en_US.UTF-8"
3. gunicorn

wsgi.py

import sys
from os.path import abspath
from os.path import dirname
import app

sys.path.insert(0, abspath(dirname(__file__)))
application = app.configured_app()

部署

  1. 反向代理

    • gunicorn 2000
    • gunicorn 2002
    • nginx 80
  2. 负载均衡

    • gunicorn worker
  3. 静态文件托管

    • send_by_directory 每次都 send 很不好
    • 配置了一个规则,保存在 nginx 的缓存,不会走到 app 这一层
  4. redis
    相当于一个数据库,在内存里面,运行速度快。普通数据保存在硬盘。断电后,内存数据就会丢失。
    用途:

    • 缓存
    • 共享数据
      进程之间的数据是隔离的,worker1 不能访问 worker2 ,如果在 worker1 进行登录,而下一次请求发给了 worker2,那么就是没有登陆的状态。所以需要登录状态、csrf_token 这些数据,这些数据就保存在 redis 里面,因为这些数据不需要持久化,所以不用存在 mongodb(硬盘)里面。
上一篇 下一篇

猜你喜欢

热点阅读