• 简单聊一下Uwsgi和Django的爱恨情仇


    • 项目目录:/root/app
    • Uwsgi的配置文件
    [uwsgi]
    # Python扩展包安装的地方
    pythonpath=/usr/local/src/python3/lib/python3.5/site-packages 
    # Django根目录
    chdir=/root/app
    # wsgi.py跟根目录的相对路径
    wsgi-file=app/wsgi.py
    # 设置Django的配置文件
    env = DJANGO_SETTINGS_MODULE=app.settings
    # 启动模块
    module=app.wsgi:application
    # 配置生成的sock文件的权限
    chmod-socket = 664 
    # 监听的IP和端口
    socket=:8081
    # 允许主线程存在
    master=true
    # 开启的进程数量
    processes=2
    # 监控python模块mtime来触发重载 (只在开发时使用)
    py-autoreload=1 
    # 在每个worker而不是master中加载应用
    lazy-apps=true  
    # 设置用于uwsgi包解析的内部缓存区大小为64k。默认是4k。
    buffer-size = 32768 
    # 允许用内嵌的语言启动线程。这将允许你在app程序中产生一个子线程
    enable-threads = true 
    # 多站模式
    vhost=true 
    # 多站模式时不设置入口模块和文件
    no-site=true
    # 子进程数
    workers=2 
    reload-mercy=10
    # 当服务器退出的时候自动清理环境,删除unix socket文件和pid文件
    vacuum=true
    # 一个请求花费的时间超过了这个harakiri超时时间,那么这个请求都会被丢弃,并且当前处理这个请求的工作进程会被回收再利用(即重启)
    harakiri = 60 
    max-requests=1000
    limit-as=512
    buffer-size=30000
    # 设置socket的监听队列大小(默认:100)
    listen = 120 
    # 指定pid文件
    pidfile=/var/run/uwsgi_8081.pid
    # 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器
    daemonize=/var/run/uwsgi_8081.log
    # 设置最大日志文件大小
    log-maxsize = 5000000 
    # 禁用请求日志记录
    disable-logging = true
    
    • 启动命令:uwsgi --ini /root/app/uwsgi.ini

    • 目录结构

    ├── app
    │   ├── __init__.py
    │   ├── __pycache__
    │   │   ├── __init__.cpython-35.pyc
    │   │   ├── settings.cpython-35.pyc
    │   │   ├── urls.cpython-35.pyc
    │   │   └── wsgi.cpython-35.pyc
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── appv1
    │   ├── admin.py
    │   ├── apps.py
    │   ├── __init__.py
    │   ├── migrations
    │   │   └── __init__.py
    │   ├── models.py
    │   ├── __pycache__
    │   │   ├── admin.cpython-35.pyc
    │   │   ├── __init__.cpython-35.pyc
    │   │   └── models.cpython-35.pyc
    │   ├── tests.py
    │   └── views.py
    ├── manage.py
    └── uwsgi.ini
    
    • nginx配置
    upstream apachephp  {
        server 127.0.0.1:8081;
    }
    
    server {
        listen 80;
        server_name  luffy.cyqit.com;
    
        root   html;
        index  index.html index.htm index.php;
    
        include /application/nginx/conf/conf.d/gzip/gzip.conf;
    
        ## send request back to apache ##
        location / {
            include  uwsgi_params;
            uwsgi_pass  apachephp;
            uwsgi_param UWSGI_SCRIPT app.wsgi;
            uwsgi_param UWSGI_CHDIR /root/app/; 
            index  index.html index.htm;
            client_max_body_size 35m;
       }
    }
    
  • 相关阅读:
    DB2控制中心创建触发器
    将web应用迁到TongWeb
    DB2自增列数据处理
    Android 所有版本区别总结(转)
    C#强制关闭Excel进程(通过COM使用Excel时)
    Web开发中的ContentType类型大全
    Javascript中闭包(Closure)的探索(一)基本概念
    Javascript 中闭包(Closure)的探索(三)私有函数中的this
    VS2008中Web Reference和Service Reference的区别
    ASP.NET中模拟管理员用户提升权限
  • 原文地址:https://www.cnblogs.com/chenyangqit/p/11537255.html
Copyright © 2020-2023  润新知