0
点赞
收藏
分享

微信扫一扫

nginx+Uwsgi+Django总结与分析

芭芭蘑菇 2022-05-20 阅读 88


配置与调试nginx与uwsgi

参考


1.uWSGI其三:uWSGI搭配Nginx使用

2.​​学习VirtualEnv和Nginx+uwsgi用于django项目部署​​

3.​​部署备忘​​

4.​​nginx+uwsgi​​

5.​​编程小结​

6.​​nginx + uwsgi + django + python 部署​​




 

​最近三天一直在调试Django+nginx+uwsgi+sqlite3部署的阿里云的服务器,系统是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这个配置了


02

vhost ​​= ​false​

#多个项目时候需要

03

plugins ​​= ​python​

04

socket ​​= 127.0​.​0.1​:​8077

07

workers ​​= 1

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. 列出端口占用情况:

1

netstat -lpnt

这些内容也就是这几天的了 网站备案时间太长慢慢等吧 这事情可以放一放了

下面写论文把那鸟项目做了 酱油打了太多 真是...


举报

相关推荐

0 条评论