Я столкнулся с очень странной проблемой, для которой я не мог найти причину. У меня есть приложение django с uWSGI в качестве моего сервера приложений и Nginx как наш обратный прокси. Моя исходная установка для статического URL в Django, как показано ниже:Nginx ищет другой путь, чем тот, который задан статическими файлами Django. Настройка URL
PROJECT_DIR = "/home/ubuntu/src/myapp"
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(PROJECT_DIR, 'staticfiles')
STATIC_URL = '/staticfiles/'
STATICFILES_DIRS = (
os.path.join(PROJECT_DIR, 'static'),
)
и что там в Nginx конф, как показано ниже:
server {
listen 80;
server_name stg1.myapp.com
client_max_body_size 5G; # adjust to taste
access_log /var/log/nginx/myapp-access.log combined;
error_log /var/log/nginx/myapp-error.log;
location /media {
alias /home/ubuntu/src/myapp/media/; # your Django project's media files - amend as required
}
location /static {
alias /home/ubuntu/src/myapp/staticfiles/;
}
location/{
uwsgi_pass django;
uwsgi_read_timeout 600s;
uwsgi_buffering off;
uwsgi_send_timeout 600s;
proxy_read_timeout 600s;
include /home/ubuntu/src/myapp/uwsgi_params;
}
}
Теперь, когда я пытаюсь получить доступ к серверу я был получаю эту ошибку для статических файлов:
2016/12/13 20:33:03 [error] 30533#0: *194 open() "/home/ubuntu/src/myapp/staticfiles/files/css/base.css" failed (2: No such file or directory), client: 172.31.4.166, server: stg.myapp.com, request: "GET /staticfiles/css/base.css HTTP/1.1", host: "stg.myapp.com", referrer: "http://stg.myapp.com/profile/user1"
Collectstatic
скопированные все файлы в данном STATIC_ROOT
месте. Но путь, который был обыскан, был - STATIC_ROOT/files
.
Когда я изменил STATIC_ROOT
к
STATIC_ROOT = os.path.join(PROJECT_DIR, 'staticfiles/files')
он работал. Я до сих пор не знаю, почему искали каталог staticfiles/files
, а не только каталог staticfiles
, как указано в nginx conf. Где я должен искать возможную причину?
EDIT - Я перезапустил службу nginx всякий раз, когда произошли изменения. Так что проблем нет.
Я пытался сменить nginx conf также много раз. Так что не было проблем с перезагрузкой. Также я никогда не менял путь статического на «actual_path/files». –
@Nihal Sharma Если вы хотите получить доступ к «/home/ubuntu/src/myapp/staticfiles/files/css/base.css», вам нужно посмотреть каталог STATIC_ROOT, чтобы узнать, есть ли файл (/ files/css/base.css), который завершает работу. – shady
@ Nihal Sharma Это не имеет ничего общего с STATIC_URL, у меня такая же настройка в моей локальной среде, с STATIC_URL = '/ staticfiles /'. Тем не менее Nginx мог найти файл, указанный STATIC_ROOT. – shady