• Nginx+Uwsgi+Django以及解决的一些问题


    1.pip3 install uwsgi,项目目录路径:/data/my_env1/monitor1/,项目名:monitor1,app名:show

    测试启动:
    ln -s /data/linkdood/im/vrv/python36/bin/uwsgi /user/bin/uwsgi
    uwsgi --http 192.168.165.10:8000 --file monitor1/wsgi.py --static-map=/static=static
    访问http://192.168.165.10:8000 ,页面可以正常访问,表示项目启动成功。
    

    2.使用uwsgi配置文件启动django项目:
    在项目同级目录创建script目录,用于存放配置文件、生成的pid、socket,

    创建uwsgi.ini,内容如下:

    [uwsgi]
    chdir=/data/my_env1/monitor1
    wsgi-file=/data/my_env1/monitor1/monitor1/wsgi.py
    socket=/data/my_env1/monitor1/script/uwsgi.sock
    workers=4
    pidfile=/data/my_env1/monitor1/script/uwsgi.pid
    http=192.168.165.10:8000
    static-map=/static=/data/my_env1/monitor1/static
    uid=root
    gid=root
    master=true
    vacuum=true
    enable-threads=true
    post-buffering=4096
    daemonize=/data/my_env1/monitor1/script/uwsgi.log
    

    uwsgi常用的三个命令,注意这里的停止和启动,文件后缀是pid不是ini

    uwsgi --ini uwsgi.ini
    uwsgi --stop uwsgi.pid
    uwsgi --reload uwsgi.pid  重载配置
    至此,uwsgi+django就完美结合了,但是,光有uwsgi还不够,uwsgi处理动态请求能力高,
    但对于静态请求(如static文件,css,js文件等)处理能力差,此时就要结合nginx一起使用
    

    3.centos7用yum下载较新的nginx

    # vi /etc/yum/repo.d/nginx.repo
    [nginx]
    nginx=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
    # yum -y install nginx
    查看版本:nginx -v
    启动:nginx
    停止:nginx -s stop
    重启:nginx -s reload
    

    在nginx配置文件中添加内容如下:

    # vi /etc/nginx/conf.d/default.conf
    listen       80;
    server_name  192.168.165.10;
    location / {
        include uwsgi_params;
        uwsgi_pass unix:/data/my_env1/script/uwsgi.sock;
    }
    location /static {
        alias /data/monitor1/static;
    }
    

    修改Django项目的settings配置,DEBUG = False,此时访问页面会发现无法加载static文件,所以得有以下步骤:

    # mkdir -p /data/monitor1/static
    在settings文件中添加一行
    STATIC_ROOT = '/data/monitor1/static'
    # python manage.py collectstatic
    但是参考的这篇博客把monitor1目录给了777,我没给,怕不安全,
    就按照上面的做了,如果后续有什么错的话,再参考这样的做法.
    # cd /data/
    # mkdir monitor1
    # chmod 777 monitor1
    # cd monitor1/
    # mkdir static
    

    4.让nginx去处理图片:

    location /media {
        autoindex on;
        alias /data/monitor1/media;
    }
    

    在没有nginx,自己做调试DEBUG=Ture时,想让Django去处理图片,一般这么写:

    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
    然后在url.py中添加:
    from django.conf import settings
    from django.conf.urls.static import static
    if settings.DEBUG:
        urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    我觉得在settings.py中,MEDIA_ROOT可以写绝对路径,虽然我没试过,但应该可以;
    这样写的:MEDIA_ROOT = os.path.join(BASE_DIR, '../media')
    也就是在图片存放在项目目录的上一层.
    

    参考博客地址:https://blog.csdn.net/Duke10/article/details/80971453

  • 相关阅读:
    四则运算(web)
    二维数组
    java (数组)
    GitHub
    PSP(第四周)
    四则运算三
    PSP表(第三周)
    软件需求阅读笔记02
    软件需求阅读笔记01
    Android开发进度06
  • 原文地址:https://www.cnblogs.com/fawaikuangtu123/p/9687363.html
Copyright © 2020-2023  润新知