• Django【部署】uwsgi+nginx


    uwsgi

    遵循wsgi协议的web服务器

    uwsgi的安装

     pip install uwsgi  

    uwsgi的配置

    项目部署时,需要把settings.py文件夹下的:

    DEBUG = FALSE
    ALLOWED_HOSTS = ['*']

    新建一个文件 uwsgi.ini 在项目目录下与manage.py 同级

    [uwsgi]
    #使用nginx连接时使用
    #socket=127.0.0.1:8080
    #直接做web服务器使用
    http=127.0.0.1:8080
    #项目目录
    chdir=/Users/smart/Desktop/dj/bj17/dailyfresh
    #项目中wsgi.py文件的目录,相对于项目目录
    wsgi-file=dailyfresh/wsgi.py
    # 指定启动搞得工作进程数
    processes=4
    # 指定工作进程中线程数
    threads=2
    master=True
    # 保存启动之后主进程的pid
    pidfile=uwsgi.pid
    # 设置uwsgi后台运行,uwsgi.log保存日志信息
    daemonize=uwsgi.log
    # 设置虚拟环境的路径
    virtualenv=/Users/smart/.virtualenvs/dailyfresh

     uwsgi 的启动和停止

    启动:uwsgi   --ini   配置文件路径  例如:uwsgi --ini   uwsgi.ini

    停止:uwsgi  --stop  uwsgi.pid 路径  例如:uwsgi   --stop   uwsgi.pid

    nginx命令

    重新加载命令

    nginx  - s  reload

    nginx 配置转发请求给uwsgi

    location / {
        # 包含uwsgi的请求参数
        include uwsgi_params;
        # 转交请求给uwsgi
        uwsgi_pass uwsgi服务器的ip:port;
    }

    nginx配置处理静态文件

    django settings.py中配置收集静态文件路径:

    STATIC_ROOT=收集的静态文件路径 例如:/var/www/dailyfresh/static;

    django 收集静态文件的命令:

     python manage.py collectstatic 

    执行上面的命令会把项目中所使用的静态文件收集到STATIC_ROOT指定的目录下。

    收集完静态文件之后,让nginx提供静态文件,需要在nginx配置文件中增加如下配置:

    如果/var/www/dailyfresh/static/ 没有权限 就赋予权限 chmod 777

    location /static {
    
        # 在/var/www/ 下新建目录dailyfresh/static/
    
        # 指定静态文件存放的目录
    
        alias /var/www/dailyfresh/static/;
    
    }

     nginx转发请求给另外地址

    在location 对应的配置项中增加 proxy_pass 转发的服务器地址。

    如当用户访问127.0.0.1时,在nginx中配置把这个请求转发给172.16.179.131:80(nginx)服务器,让这台服务器提供静态首页。

    配置如下:

    # 等号= 表示严格精确匹配

    # 传递请求给静态页面服务器的nginx

    location = /{
    
        proxy_pass http://172.16.179.131;
    
    }

    nginx配置upstream实现负载均衡

    ngnix 配置负载均衡时,在server配置选项卡的前面增加upstream配置项。

    不在server配置选项中。

    dailyfresh 名字可以随意

    upstream dailyfresh {
    
        server 127.0.0.1:8080;
    
        server 127.0.0.1:8081;
    
    }

    然后在server选项中修改为location /为下面

    location / {
    
       include uwsgi_params;
    
       # uwsgi_pass 127.0.0.1:8080;
    
       uwsgi_pass dailyfresh;
    
    }
  • 相关阅读:
    ML与NLP的2019年度总结与展望
    python在文本开头插入一行的实例
    Git Notes
    warmup 预热学习率
    python error整理
    python 中字符串处理
    集成学习voting Classifier在sklearn中的实现
    机器学习 评价指标整理
    PaddlePaddle Notes
    linux 常用指令 文件操作trick等
  • 原文地址:https://www.cnblogs.com/tangkaishou/p/10278602.html
Copyright © 2020-2023  润新知