设置.py
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
DEBUG = True
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'adminstatic')
mynginx.conf /etc/nginx/sites-enabled/mynginx.conf
你可以确定我在启用站点的文件夹中只有这个conf文件
server {
listen *:80;
server_name _;
access_log /var/log/myapp.access.log;
error_log /var/log/myapp.error.log;
# Django media
location /static/ {
alias /root/proj/myapp/adminstatic/; #your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass unix:/tmp/myapp.sock;
include /etc/nginx/uwsgi_params; # the uwsgi_params file you installed
}
}
在此之后我尝试了collectstatic命令
python 管理.py 收集静态
它已成功收集 adminstatic 文件夹中的所有静态信息。我交叉检查,adminstatic 文件夹中有一个名为 admin
的文件夹。这个管理文件夹有 3 个名为 css
、img
、js
的文件夹。
所有这些都是我在生产机器上做的。因此,当我尝试通过生产 IP 访问本地浏览器上的 django 管理页面时,管理面板会打开,但会加载任何 css/js。我按 F12 并在网络选项卡中查看。所有静态数据均存在禁止错误。
PS:我将 uWsgi 与 nginx 一起使用。
和往常一样,我已经看过一些 SO 主题和博客。但这对我没有帮助。
最佳答案
nginx Web 进程用户(通常是 www-data
)可能没有 /root/proj/myapp/adminstatic/
的读取权限。我想如果您检查 myapp.error.log
您会看到权限被拒绝的消息。
您需要将元素移动到 nginx 进程有权读取的文件夹中(您确实不应该从 /root
提供这些内容),或者您可以 chown
/chmod
/root/proj/myapp/adminstatic/
适本地授予对 www-data
的访问权限。
关于python - 403 禁止 : Nginx not serving statics in Django Admin panel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23834368/