部署新的Django项目———〇三 .nginx的配置

在前面我们已经通过uWSGI服务托管了Django,但是只实现了动态的请求,静态数据(图片,css,html文件等)还没有获取,所以要交给nginx处理。

项目静态数据的迁移

第一步我们需要django帮我们把项目所需要的静态文件迁移到指定的路径下,而django就为我们提供了一个这样的功能,collectstatic

但我们需要要在settings.py文件中指定一下导出文件路径

STATIC_ROOT = os.path.join('/root/code/blog/','static')

这里我们用了join的方式,拼接出了一个新的路径——/root/code/blog/static/然后执行下面的命令

[root@VM-0-13-centos blog]# python3 manage.py collectstatic

就能将所需的静态文件归档到指定的路径下。

nginx的配置文件

项目所需的静态文件已经归档好后,就需要对nginx的配置文件进行修改。不多说了,把要修改的地方拿出来,其实没什么内容

    server {
        listen 90;
        server_name blog.com;
        location / {
                proxy_pass http://127.0.0.1:8080;
           }
        location /static {
        root /root/code/blog/;}
       }

就是加了一个server多监听,功能是通过定义proxy_pass对代理进行转发,还有就是定义了静态文件的路径。

重启nginx服务,通过浏览器请求发现依旧无法加载静态文件,在这里查了半天问题,发现如果吧静态文件的路径定义在根目录下就没问题,而放在家目录下就不行了,估计是权限的问题,因为nginx进程的属主是nobody

[root@VM-0-13-centos blog]# ps -ef|grep nginx
root     14612     1  0 12月10 ?      00:00:00 nginx: master process /opt/nginx/sbin/nginx
nobody   17226 14612  0 01:20 ?        00:00:00 nginx: worker process
root     17857 11377  0 01:24 pts/1    00:00:00 grep --color=auto nginx

初步的解决方法就是在配置文件中定义用户名

user root;
worker_processes  1;

重启服务,查一下看看是不是好了!

[root@VM-0-13-centos blog]# ps -ef|grep nginx
root     14612     1  0 12月10 ?      00:00:00 nginx: master process /opt/nginx/sbin/nginx
root     18599 14612  0 01:30 ?        00:00:00 nginx: worker process
root     18602 11377  0 01:30 pts/1    00:00:00 grep --color=auto nginx

属主已经成了root,这时候重新访问,就可以了!

原文地址:https://www.cnblogs.com/yinsedeyinse/p/14123585.html