1. 程式人生 > >Django部署生產環境,靜態文件不能訪問404,以及圖片不能訪問403

Django部署生產環境,靜態文件不能訪問404,以及圖片不能訪問403

以及 數據 col debug client localhost char clear IE

部署環境的搭建請看此博客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" )

Django部署生產環境,靜態文件不能訪問404,以及圖片不能訪問403