zoukankan      html  css  js  c++  java
  • Django部署生产环境,静态文件不能访问404,以及图片不能访问403

    部署环境的搭建请看此博客https://blog.csdn.net/anifans9350/article/details/80145535

    查看nginx.conf 文件,

    nginx文件(etc/nginx/nginx.conf)配置:

    修改http里面的server:

    server {
             listen       80;
            server_name  localhost;
    
    
            #charset koi8-r;
            #access_log  /var/log/nginx/host.access.log  main;
            access_log      /var/log/nginx/myweb_access.log;
             error_log       /var/log/nginx/myweb_error.log;
    
    
            client_max_body_size 75M;
    
    
            location / {
                include uwsgi_params;
                #这行指定uwsgi开放的数据交换接口
                uwsgi_pass 127.0.0.1:8090;
                #这里与配置uwsgi的ini文件中module内容一致
                uwsgi_param UWSGI_SCRIPT ibook.wsgi;
                #这里与配置uwsgi的ini文件中chdir内容一致
                uwsgi_param UWSGI_CHDIR  /root/ibook;
            }
    
            location ^~ /static/ {
                root /root/book/;
                #这行指定静态文件的搜索目录, localhost/static/test.css => /home/book/static/test.css
                #注意,这里location行中指定的地址也会在转换后的地址中
            }
        }

    注意location的static配置,我的项目放在root目录,所以可能出现权限问题,也就是部署环境后,访问静态图片会出现403,解决就是在nginx.conf文件的开始处,把

    user nginx;

    改成

    user root;

    这样就不会出现403的问题,如果还是不能访问,尝试给项目文件加权限

    chmod 777 项目文件夹

    uwsgi配置:

    在项目根目录新建文件test_proj.ini,内容为

    # start_proj.ini file
    [uwsgi]
    
    # Django-related settings
    
    # uwsgi的对外socket接口,nginx将通过该接口与uwsgi做数据交换,因为与nginx同在一个服务器内,不需要在防火墙上对端口8090做访问许可
    
    socket = 127.0.0.1:8090
    
    # the base directory (project full path)
    
    # 本项记录Django对象工程的完整路径
    
    chdir = /root/book
    
    # Django s wsgi file
    
    # 本项指示uwsgi.py文件的位置,其位于Django工程目录下有个与工程名同名的子文件夹内 ( 设置方式为   文件夹名.wsgi )
    
    module = book.wsgi
    
    # process-related settings
    # master
    master  = true
    
    # maximum number of worker processes
    processes = 4
    
    # ... with appropriate permissions - may be needed
    # chmod-socket= 664
    # clear environment on exit
    vacuum= true
    # pidfile for record run pid 
    pidfile=pid.uwsgi
    # run process background and save log to daemonize
    daemonize = UWSGI.log

    启动时切换到项目根目录下,启动命令

    uwsgi --ini  test_proj.ini

    之后启动nginx

    systemctl start nginx

    settings.py 配置:

    DEBUG = False
    
    # 添加域名  
    ALLOWED_HOSTS = ['*']

    静态文件配置相关:

    # 静态文件 cs/js  
    STATIC_URL = '/static/'  
    STATICFILES_DIRS = (  
        os.path.join(BASE_DIR, 'book','static'),    #book为项目名称
    )  
    STATIC_ROOT = (  
        os.path.join(BASE_DIR, 'static').replace('\','/')  
      
    )  
      
    # 上传图片  
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\', '/')  
    MEDIA_URL = '/media/'

    STATICFILES_FINDERS = ( "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder" )
  • 相关阅读:
    springMVC-接收数据-参数绑定
    我的asp.net core目录
    我的IdentityServer目录
    win10安装mysql
    asp.net core webapi 生成导出excel
    Dapper, 批量插入,批量更新, 以及in, like
    asp.net core 依赖注入几种常见情况
    asp.net core 2.1 配置管理
    各个模式的accesstoken续期详解
    ResourceOwnerPassword模式使用数据库.
  • 原文地址:https://www.cnblogs.com/sea-stream/p/9082359.html
Copyright © 2011-2022 走看看