Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 667|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-9-5 09:15:23 | 显示全部楼层 |阅读模式

    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

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 11:32 , Processed in 0.056429 second(s), 28 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表