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"
)

原文地址:https://www.cnblogs.com/sea-stream/p/9082359.html

时间: 2024-10-14 06:47:50

Django部署生产环境,静态文件不能访问404,以及图片不能访问403的相关文章

Django_生产环境静态文件配置

需求: 当Django项目运行在线上的时候,需要关闭debug模式,那么Django设置中,静态文件路径配置将会失效,如何解决这个问题? 问题原因: Django默认关闭debug模式,Django错误信息将不会返回给请求,setting中静态文件的设置将会自动失效,Django会认为这个是上线的环境 那,如何解决这个问题? 方法1: 把静态文件按照协议,存放在apache服务器等第三方服务器提供传输服务 方法2:Django自己启动一个服务,来进行静态文件传输 那选择方法2来进行配置: set

Django的配置文件和静态文件以及路由

配置文件 1. BASE_DIR BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 当前工程的根目录,Django会依此来定位工程内的相关文件,我们也可以使用该参数来构造文件路径. 2. DEBUG 调试模式,创建工程后初始值为True,即默认工作在调试模式下. 作用: 修改代码文件,程序自动重启 Django程序出现异常时,向前端显示详细的错误追踪信息 注意:部署线上运行的Django不要运行在调式模式

vue项目打包部署生产环境

vue项目打包部署生产环境 打包部署生产环境之前需要修改配置文件: 修改一:build > utils.js  (修改publicPath:"../../" , 这样写是处理打包后找不到静态文件的问题) 修改二:config > index.js (修改assetsPublicPath:'./' ,修改目的是为了解决js找不到的问题) 两个文件修改完成之后,运行命令:npm run build 打包直接访问dist文件夹中的index.html即可. 原文地址:https:

Centos6.3 下使用 Tomcat-6.0.43 非root用户 jsvc模式部署 生产环境 端口80 vsftp

一.安装JDK环境 官方下载链接 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 64位:http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.tar.gz 32位:http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-

使用Django来处理对于静态文件的请求

引言 本方法适用于linux+python2.7+django1.2,使用django自带的web服务. 同样也适用于sina app engine. 1.准备工作 准备css文件,准备js文件,准备image文件. 在网站根目录新建目录[medias],在[medias]目录新建目录[styles],用来存放css文件. 2.配置对于静态文件访问的路径 2.1.在settings.py文件中添加静态文件的目录 假设mysite是网站的根目录,medias是刚才我们新建的目录 ? 1 2 3 4

django源码分析——静态文件staticfiles中间件

本文环境python3.5.2,django1.10.x系列 1.在上一篇文章中已经分析过handler的处理过程,其中load_middleware就是将配置的中间件进行初始化,然后调用相应的设置方法. django框架提供的认证,回话保持,静态文件调试处理等都是通过以中间件的形式来处理. 2.本节就分析一下django框架提供的staticfiles中间件,该中间件分别实现了三个框架的命令,分别为collectstatic,findstatic,runserver. 其中,runserver

django中url,静态文件,POST请求的配置

平时使用的是pycharm,所以这篇文章主要也是使用pycharm默认创建的django项目为基础进行讲解.项目目录如下图: 1.URL的配置 当创建好项目后,运行项目就可以看到django默认的页面.那么怎么访问自己创建的页面呢? 因为django是类MVC的开发模式.这里面就涉及到配置URL的问题.创建一个自己的APP(也可以称为一个模块),包含的文件内容如下图: 然后需要在setting.py的文件INSTALLED_APPS中注册新创建的App: 新创建项目的默认url配置如下: fro

[Python] Django框架入门5——静态文件、中间件、上传图片和分页

说明: 本文主要描述Django其他的内容,涉及静态文件处理.中间件.上传文件.分页等. 开发环境:win10.Python3.5.Django1.10. 一.静态文件处理 在Django项目的静态文件主要指的是css.js和图片等文件. 1.配置静态文件 在settings.py文件中配置静态内容: STATIC_URL:在html文件中使用的路径,如:"/static/images/logo.png". STATICFILES_DIRS:指静态文件在项目的存放位置. 2.新建目录

django之三剑客、静态文件配置、请求响应对象、数据库操作

三剑客 from django.shortcuts import render,HttpResponse,redirect HttpResponse # 返回字符串 render(response, 'a.html', locals()) # 返回html页面 并且可以给该html传值 redirect('/userlist') # 重定向 # 既可以是我们自己的路径也可以是网上的路径 django返回的都是HttpResponse对象 静态文件配置 ## 静态文件静态配置 用户能够在浏览器中输