django 学习之路(三)nginx静态不能加载

问题描述

在第二节中配置好了uwsgi和nginx之后,项目网页可以查看了,但是当测试
ip:88/admin时发现没有css的修饰了;#下面中出现的星号部分换成自己的IP地址就行

问题原因查找

  1. 查看是否是django项目的问题;
  • 首先关闭uwsgi和nginx
uwsgi --stop /usr/local/uwsgi/uwsgi.pid
nginx -s stop
  • 进入到项目目录中,用django的形式运行项目
python manage.py runserver 0.0.0.0:8000
浏览器打开项目*.*.147.122:8000/admin
此时项目的css是正常的
  • 查看是否为uwsgi的问题,还在项目目录下
uwsgi --http :8000 --module Hello.wsgi
浏览器打开项目*.*.147.*:8000/admin
此时项目的css是正常的
  • 从上面看,问题是出在nginx中。

nginx中静态文件的配置

  • 给ngnix中加入静态文件的配置
server {
    listen       88; #default_server;
    #listen       *.*.*.*:8000 #default_server;
    server_name  *.*.*.122;
    #root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
        include  uwsgi_params;
        uwsgi_pass  *.*.*.*:8000;              #必须和uwsgi中的设置一致,但是uwsgi中填的是内网ip,这里填外网ip
        uwsgi_param UWSGI_SCRIPT Hello.wsgi;  #入口文件,即wsgi.py相对于项目根目录的位置,“.”相当于一层目录
        uwsgi_param UWSGI_CHDIR /home/ljh/project/Hello;       #项目根目录
        index  index.html index.htm;
        #proxy_pass http://localhost:8000;
        client_max_body_size 35m;
    }
    location /static {  #静态文件在这里
        alias /home/ljh/project/Hello/static; #项目的静态文件路径
    }
    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}
  • 配置完重新加载nginx,重启uwsgi

    uwsgi --ini /etc/uwsgi.ini
    nginx -s reload

  • 再次打开浏览器,查看..*.122:8000/admin,发现静态文件还是没有加载;

  • 查了一些这种情况,说是需要保证setting.py中的DEBUG是False。设置了还是没有用

  • 查看nginx的日志文件发现如下:


    image.png
  • 权限问题(但是我是用root运行的唉),然后我将/home/ljh/project/Hello/static
    的整个文件夹都给了root(chown)。发现还是不行,到后面查看nginx的配置,发现里面有个user参数,这是代表运行nginx的用户和用户组,好吧。恍然大悟。

于是又把/home/username/project/Hello/static的用户和组给回了原来的用户,然后配置文件中修改了user参数。

    user username;  #username是你的项目的所有者用户名称

然后重新加载就ok了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。