• nginx+Uwsgi+Django总结与分析


    配置与调试nginx与uwsgi
    參考:

     
    近期三天一直在调试Django+nginx+uwsgi+sqlite3部署的阿里云的server,系统是ubuntu的所下面载什么的都非常方便sudo spt-get就能够了
    所以想着把这几天遇到的问题跟过程fork下来以后也许会遇到
    项目tree 命令的话tree -L 2
    ├── manage.py
    ├── mysite
    │   ├── __init__.py
    │   ├── __init__.pyc
    │   ├── settings.py
    │   ├── settings.pyc
    │   ├── urls.py
    │   ├── urls.pyc
    │   ├── wsgi.py
    │   └── wsgi.pyc
    ├── uwsgi.xml
    └── app_name(weixin)
        ├── admin.py
        ├── build
        ├── __init__.py
        ├── models.py
        ├── templates
        ├── tests.py
        └── views.py
    
    1.nginx
    nginx能够作为WEB Server,反向代理。负载均衡等服务。我用它基本是为了处理static file的
    关于/etc/nginx/site-enables/以下能够创建一个文件
    ----->由于在run service nginx stop时候是执行的默认conf
    也就是/etc/nginx/nginx.conf---->这个文件里会导入/etc/nginx/site-enables/下的配置还有/etc/nginx/nginx.d/下的
    当然你也能够run指定的配置 nginx -c 就可以 例如以下给出的配置
    server {
            listen          80;
            server_name     10.1.6.79;
            #server_name能够是域名如我的zoues.com www.zoues.com 都能够写可是要空格最后是;
            access_log      /var/log/nginx/example_access.log;
              #这边的log覆盖了/etc/nginx/nginx.conf设置的log假设这边不写的话log都在/var/log/nginx以下
            error_log       /var/log/nginx/example_error.log;
            root            /var/www/example;
            location / {
                uwsgi_pass      127.0.0.1:9001;
                   #这个是跟uwsgi配置关联 也就是2者的通信口能够是socket-->unix的跟ip方式都能够
    可是unix的方式要创建文件
                include         uwsgi_params;
    #一定要包涵
              #  uwsgi_param     UWSGI_SCHEME $scheme;
               # uwsgi_param     SERVER_SOFTWARE    nginx/$nginx_version;
            }
    }
    2.uwsgi的选择 由于django特有的uwsgi协议所以选择uwsgi也是情理之中了
    uWSGI的主要特点例如以下:
           超快的性能。
           低内存占用(实測为apache2的mod_wsgi的一半左右)。


           多app管理。
           详尽的日志功能(能够用来分析app性能和瓶颈)。


           高度可定制(内存限制大小。服务一定次数后重新启动等)

    这配置中关键还是參数的理解
    <uwsgi>
        <plugin>python</plugin>
    记下Django所在的Python版本号,然后通过以下的命令切换uwsgi的默认Python版本号(一般不须要切换)
        <socket>127.0.0.1:9001</socket>
         #也就是nginx下配置的uwsgi_pass
        <pythonpath>/var/www/example/app/</pythonpath>
         #pythonpath非常重要 能够配置多个是为了寻找以下的<script>以及<module>的 配置的时候一定要相应你配置的某一个pythonpath 然后写<script>和<module>跟python中from * import *的关系是一致的 
    #当然你若嫌麻烦的话就使用wsgi-file吧 一站究竟啊
        <app mountpoint="/">
            <script>wsgi_configuration_module</script>
        </app>
        <master/>
        <processes>4</processes>
        <reload-mercy>8</reload-mercy>
        <cpu-affinity>1</cpu-affinity>
        <max-requests>2000</max-requests>
        <limit-as>512</limit-as>
        <reload-on-as>256</reload-on-as>
        <reload-on-rss>192</reload-on-rss>
          <daemonize>/var/log/uwsgi.log</daemonize>
    #这个是日志 最好写上
        <no-orphans/>
        <vacuum/>#退出清理
    </uwsgi>
    这个通过uwsgi -x xxx.xml去执行 须要xml模块(详细不记得了我没遇到不能执行的情况)
    以下给出的是ini的配置
    # uwsgi_XXX.ini file
    [uwsgi]
    
    # Django-related settings
    # the base directory (full path)
    chdir           = /var/www/<project path>
    # Django's wsgi filemodule          = <project name>.wsgi
    # the virtualenv (full path)
    home            = <virtualenv path>
    # process-related settings
    # master
    master          = true
    # maximum number of worker processes
    processes       = 10
    # the socket (use the full path to be safe
    socket          = /var/www/<project path>/<project name>.sock
    # ... with appropriate permissions - may be needed
    # chmod-socket    = 664
    # clear environment on exit
    vacuum          = true
    
    daemonize = /var/log/uwsgi.log
    pidfile=/var/www/<project path>/uwsgi.pid
    
    列2:这边是直接配置的wsgi-file所以也就没了pythonpath这个配置了
    
    
    [uwsgi]
    02 vhost = false
    #多个项目时候须要
    03 plugins = python
    04 socket = 127.0.0.1:8077
    05 master = true
    06 enable-threads = true
    07 workers = 1
    08 wsgi-file = /root/nowamagic_venv/nowamagic_pj/nowamagic_pj/wsgi.py
    09 virtualenv = /root/nowamagic_venv
    10 chdir = /root/nowamagic_venv/nowamagic_pj
    可能使用的命令

    1. 关闭 uWSGI:

    1 killall  -9 uwsgi
    2 killall -s HUP /var/www/uwsgi 
    3 killall -s HUP /usr/local/bin/uwsgi

    2. 列出port占用情况:

    1 netstat -lpnt
    这些内容也就是这几天的了 站点备案时间太长慢慢等吧 这事情能够放一放了
    以下写论文把那鸟项目做了 酱油打了太多 真是...
  • 相关阅读:
    HDU4565
    CF861D
    UVA 11651
    HDU5950
    POJ3267
    POJ1094
    POJ1905
    HDU3567
    进程的同步与互斥
    预防死锁,检测死锁,避免死锁,解除死锁....
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7354085.html
Copyright © 2020-2023  润新知