V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zhijiansha
V2EX  ›  Python

在良心云上部署 nginx + uwsgi + django 时简单的首页可以正常访问,但 django 自带的 admin 管理后台 404,是哪里配置出错了吗?

  •  
  •   zhijiansha · 2018-03-13 22:33:12 +08:00 · 3745 次点击
    这是一个创建于 2474 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在nginx中的配置如下:

    server {
        listen 80 default_server;
        listen 118.24.***.*** default_server;
        location / {
            try_files $uri $uri/ =404;
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:8000;
        }
        location /static {
            alias /root/test1/test2/static/;
        }
    

    我的uwsgi.ini的配置如下:

    [uwsgi]
    socket=0.0.0.0:8000
    #http=:8000
    chdir=/root/test1
    wsgi-file=test1/wsgi.py
    processes=4
    threads=2
    master=True
    pidfile=uwsgi.pid
    daemonize=uswgi.log
    
    14 条回复    2018-03-15 17:56:11 +08:00
    jimmyye
        1
    jimmyye  
       2018-03-13 22:51:48 +08:00   ❤️ 1
    把 try_files 那行删掉试试
    bulabean
        2
    bulabean  
       2018-03-13 23:52:26 +08:00
    良心云是什么云平台?
    matsuz
        3
    matsuz  
       2018-03-13 23:58:14 +08:00 via iPhone
    @bulabean 腾讯云,良心云
    zhijiansha
        4
    zhijiansha  
    OP
       2018-03-14 12:39:18 +08:00 via iPhone
    @jimmyye 谢谢,的确可以了,不过有个疑问,我把静态文件放在上面所写的目录下,访问 admin 时,js 和 css 会抱 403 错误,我只有在把文件放在 var/www/static 目录下后,更改 nginx 配置,才能成功访问
    Hopetree
        5
    Hopetree  
       2018-03-14 16:39:14 +08:00
    @zhijiansha 你再服务器上面有收集静态文件吗?使用 collectstaic 命令?
    zhijiansha
        6
    zhijiansha  
    OP
       2018-03-14 18:27:07 +08:00
    @Hopetree 有收集静态文件,/root/test1/test2/static/这个项目目录下新建的文件,然后静态文件都收集到这里了,然后配置按照上面的配置,css 和 js 请求会出现 403,然后我把收集到的静态文件复制了一份到 /var/www/static/目录下,nginx 配置中修改为
    ```
    location /static {
    #alias /root/test1/test2/static/;
    alias /var/www/static/;
    }
    ```
    这样才正常了
    jimmyye
        7
    jimmyye  
       2018-03-14 22:18:36 +08:00
    应该是权限的问题,要确保 nginx 有权限访问那个目录的文件
    Hopetree
        8
    Hopetree  
       2018-03-15 09:36:57 +08:00
    @zhijiansha 这个 alias /root/test1/test2/static/改成 alias /root/test1/test2 试试
    zhijiansha
        9
    zhijiansha  
    OP
       2018-03-15 10:03:53 +08:00
    @jimmyye test2 已经设置了 777 权限了,不知道是不是你说的 nginx 的权限?
    zhijiansha
        10
    zhijiansha  
    OP
       2018-03-15 10:04:16 +08:00
    @Hopetree 尝试了一下,不行,还是 403
    jimmyye
        11
    jimmyye  
       2018-03-15 10:34:37 +08:00   ❤️ 1
    再看看 static 和 static 里面文件的权限
    zhijiansha
        12
    zhijiansha  
    OP
       2018-03-15 11:17:02 +08:00
    @jimmyye 额,把里面的子文件权限都调到 777 可以了,有个疑问 var/www/下的为何权限不够也可以??
    jimmyye
        13
    jimmyye  
       2018-03-15 12:37:47 +08:00   ❤️ 1
    一般确保执行 collectstatic 操作的用户和 nginx 的运行用户在一个组里,然后设置该组有读取 static 的权限。权限问题很麻烦,我也记不住,只能出问题的时候去看看相关用户和目录文件的设置。
    zhijiansha
        14
    zhijiansha  
    OP
       2018-03-15 17:56:11 +08:00 via iPhone
    @jimmyye 谢谢,受教了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2760 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 13:40 · PVG 21:40 · LAX 05:40 · JFK 08:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.