web-dev-qa-db-ja.com

Djangoは、uWSGIを使用して管理ページのCSSファイルを見つけられません

公式の説明 に従っても、Django uWSGIを使用してテストサイトを開始すると、管理インターフェイスのCSSファイルが読み込まれません。 CSSファイル、たとえばhttp://localhost:8443/static/admin/css/base.cssの場合、404エラーが発生します。ローカルファイルを検索したところ、パスが/usr/local/lib/python3.3/dist-packages/Django/contrib/admin/static/admin/css/base.cssだと思います。そのため、ルートとしてuwsgiを実行しようとしましたが、何も変わりませんでした。

python3 manage.py runserverを使用しても問題ありません。 http://localhost:8000/static/admin/css/base.cssを開くと、ファイルがブラウザに読み込まれ、管理ページにスタイルが適用されます。

これは私がbashで実行するコマンドです:

uwsgi --ini ~/.uwsgi/conf/Django.ini --set-placeholder project_name=mysite --set-placeholder port=8443

これはDjango.iniの内容です:

[uwsgi]
module = %(project_name).wsgi:application
https = :%(port),/usr/local/nginx/conf/server.crt,/usr/local/nginx/conf/server.key,HIGH
strict = true
chdir = /home/marco/Django-projects/%(project_name)
env = Django_SETTINGS_MODULE=%(project_name).settings
socket = /home/marco/.uwsgi/%(project_name).socket
pidfile = /home/marco/.uwsgi/%(project_name).pid
daemonize = /home/marco/.uwsgi/%(project_name).log
master = true
enable-threads = true
harakiri = 20
max-requests = 5000
vacuum = true
5
Marco Sulla

(WSGIサーバーによって独立して)公式のデプロイメントドキュメントは、静的ファイル(通常はWebサーバーによって管理されます)の提供をカバーしていません。適切なドキュメントは次のとおりです。

https://docs.djangoproject.com/en/dev/howto/static-files/deployment/

uWSGIを使用すると、最終的に静的ファイルの提供はかなり簡単になります。

http://uwsgi-docs.readthedocs.org/en/latest/StaticFiles.html

あなたがnginxでそれを行うことができるならば、それはより良いです

4
roberto

私は同じ問題を抱えています。 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)

この問題を解決して理解するために:=*

  1. コマンドを実行getenforce
  2. 強制する場合-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

  1. コマンド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このコマンドを実行すると、静的コンテンツが表示されます

1
N. Turshiev