Comme le dit le titre
L'histoire lorsque l'application Django est placée sous / home / ec2-user /
sur AWS
Le serveur WEB utilise Nginx
Lors de la publication d'une application Django, les fichiers statiques
$ python manage.py collectstatic
Besoin d'être assemblé quelque part
settings.py ressemble à ceci
settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR, "app/static/"),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
En faisant cela, divers css et js seront rassemblés dans / home / ec2-user / django_project_root / static
et peuvent être accédés sous http: // domain / static
.
Rendre nginx.conf accessible aux fichiers statiques comme suit
nginx.conf
server {
...
location /static/ {
autoindex on;
alias /home/ec2-user/django_project_root/static/;
}
Si vous regardez l'état de l'application car cela peut être fait avec cela, css n'est pas appliqué (403 interdit) En regardant /var/log/nginx/error.log
2017/08/29 02:17:27 [error] 11629#0: *22 open() "/home/ec2-user/django_project_root/static/apps/css/base.css" failed (13: Permission denied), client: xx.xxx.xxx.xxx, server: xx.xxx.xxx.xxx, request: "GET /static/apps/css/base.css HTTP/1.1", host: "xx.xxx.xxx.xxx", referrer: "http://xx.xxx.xxx.xxx/"
J'ai une erreur d'autorisation comme celle-ci
SElinux est mauvais quand j'essaye différents googles, n'est-ce pas? Il y avait un article comme
$ getenforce
Disabled
A été désactivé
J'ai essayé de jouer avec les permissions des fichiers statiques et les permissions du répertoire / home / ec2-user / django_project_root / static /
, mais l'état n'a pas changé.
L'état initial est 700 (drwx ------), mais il était nécessaire de donner l'autorisation d'exécution à d'autres.
$ sudo chmod o+x /home/ec2-user/
avec ça
xx.xxx.xxx.xxx - - [29/Aug/2017:02:54:10 +0000] "GET /static/apps/css/login.css HTTP/1.1" 200 1203 "http://xx.xxx.xxx.xxx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36" "-"
Oui Vous pouvez désormais accéder en toute sécurité aux fichiers statiques
C'était une histoire rudimentaire que même si vous avez une autorisation d'exécution sur le répertoire enfant, vous ne pouvez pas "déplacer vers le répertoire lui-même" sans autorisation d'exécution sur le répertoire parent ...
Recommended Posts