説明:次のエラーは admin static files 、つまり、Django adminに対応する静的ファイルに固有です。残りの静的ファイルは完全に機能しています。
基本的に、ngixサーバーを使用して admin static files にアクセスできません。
それはDjangoのマイクロサーバーで動作し、collectstatic
はその役割を果たしています。つまり、静的フォルダーの予想される場所にファイルを配置しています。
URLは正しいですが、 admin static files には直接アクセスできませんが、その他にはアクセスできます。したがって、たとえば:
このURLにアクセスできます(ブラウザーでコピーします):myserver.com:8080/static/css/base/base.css
しかし、他のURL(ブラウザでコピー)にアクセスできません:myserver.com:8080/static/admin/css/admin.css
does work もしadmin/
ディレクトリ構造を__other_admin_directory_name/__
にコピーし、次にmyserver.com:8080/static/__other_admin_directory_name__/css/admin.css
にアクセスすると
また、
最後に、それは重要な手掛かりのようです:
admin/
ディレクトリ構造を__admin_and_then_any_suffix/__
にコピーしようとしました。その後、myserver.com:8080/static/__admin_and_then_any_suffix/__/css/admin.css
にアクセスできません。したがって、ディレクトリの名前がadmin
で始まる場合(たとえば、administrationまたはadmin2
)、それは機能しません。
EDIT-@sarnoldの観測のおかげで追加:
問題はnginx設定ファイル/ etc/nginx/sites-available/mysiteにあるようです
location /static/admin {
alias /home/vl3/.virtualenvs/vl3/lib/python2.7/site-packages/Django/contrib/admin/media/;
}
私の提案:
Django 1.3+(および ADMIN_MEDIA_PREFIXは現在非推奨) )を使用します
両方を設定 STATIC_URL
およびSTATIC_ROOT
your settings.py
Nginx confに単一の静的エントリのみを定義します(末尾にスラッシュを付けます)。 不要アドレス指定する2番目のstatic/admin/
:
location /static/ {
alias /path/to/static/;
}
collectstatic
を使用すると、admin-> static/adminが収集されます。収集された他のすべての静的メディアと同じ場所に存在します。
python manage.py collectstatic
私は同じ問題を抱えています。 Centos 7.6上のnginxサーバーがパス/home/user/app/mysyte/static/
の静的フォルダーにアクセスできません。 /var/log/nginx/error.log
で同じエラー
open() "/home/user/app/mysyte/static/*.css" failed (13: Permission denied)
この問題を解決して理解するために:=*
getenforce
cat /var/log/audit/audit.log | grep nginx
私にとって、エラーのある文字列は次のようになります
type=AVC msg=audit(1558033633.723:201): avc: denied { read } for pid=7758 comm="nginx" name="responsive.css" dev="dm-0" ino=17312394 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file permissive=0
type=SYSCALL msg=audit(1558033633.723:201): Arch=c000003e syscall=2 success=no exit=-13 a0=564f710dd55d a1=800 a2=0 a3=68632f656d6f682f items=0 ppid=7757 pid=7758 auid=4294967295 uid=998 gid=996 euid=998 suid=998 fsuid=998 egid=996 sgid=996 fsgid=996 tty=(none) ses=4294967295 comm="nginx" exe="/usr/sbin/nginx" subj=system_u:system_r:httpd_t:s0 key=(null)
監査メッセージのIDをコピー1558033633.723:201
grep yours_audit_id /var/log/audit/audit.log | audit2why
を実行します私のための出力
[root@uwsgi ~]# grep 1558034479.384:221 /var/log/audit/audit.log | audit2why
type=AVC msg=audit(1558034479.384:221): avc: denied { read } for pid=7758 comm="nginx" name="responsive.css" dev="dm-0" ino=17312394 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file permissive=0
Was caused by:
The boolean httpd_read_user_content was set incorrectly.
Description:
Allow httpd to read user content
Allow access by executing:
# setsebool -P httpd_read_user_content 1
ここで答えを見ることができるようにsetsebool -P httpd_read_user_content 1
このコマンドを実行すると、静的コンテンツが表示されます