Как я могу использовать серверные блоки Nginx и Django?
Я следую руководству из https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04 Однако, когда я связываю свой файл home.html в папке шаблонов моего приложения django, он не загружает файлы css и не понимает синтаксис "{& &}"
Как настроить блок сервера nginx для правильной загрузки моего приложения django? мой файл /etc/nginx/sites-available/myonlinefp.com:
сервер {
root /home/stelity/myonlinefp/foodpantry/templates/; index index.html index.htm index.nginx-debian.html home.html; server_name myonlinefp.com www.myonlinefp.com; location / { try_files $uri $uri/ =404; } location /media { alias /home/stelity/myonlinefp/foodpantry/media/; } listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/myonlinefp.com/fullchain.pem; # managed by
Certbot ssl_certificate_key /etc/letsencrypt/live/myonlinefp.com/privkey.pem; # управляется Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # управляется Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # управляется Certbot }
.server {
if ($host = www.myonlinefp.com) { return 301 https://$host$request_uri; } # managed by Certbot if ($host = myonlinefp.com) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; listen [::]:80; server_name myonlinefp.com www.myonlinefp.com; return 404; # managed by Certbot
}
Вот обновленная nginx конфигурация
server {
root unix:://run/gunicorn.sock;
server_name myonlinefp.com www.myonlinefp.com;
location / {
try_files $uri $uri/ =404;
}
location /media {
alias /home/stelity/myonlinefp/foodpantry/media/;
}
location /static {
autoindex on;
alias /home/stelity/myonlinefp/foodpantry/static/;
}
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/myonlinefp.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myonlinefp.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = www.myonlinefp.com) {
return 301 https://$host$request_uri;
}
if ($host = myonlinefp.com) {
return 301 https://$host$request_uri;
}
listen 80;
listen [::]:80;
server_name myonlinefp.com www.myonlinefp.com;
}
после добавления этого вам нужно выполнить
python manage.py collectstatic
команда & убедитесь, что вы настроили ваши статические файлы в settings.py
вот так
STATIC_URL = '/static/'
STATICFILES_DIR = ['/path/to/static/dir/']
STATIC_ROOT = '/path/to/static_root/dir/'
убедитесь, что ваше STATIC_ROOT
должно быть таким же, как имя расположения вашего nginx. Для получения дополнительной информации вы можете проверить Serving Static Content