LINUX.ORG.RU
решено ФорумAdmin

Lighttpd + uwsgi + Django = проблемы

 , ,


0

1

Приветствую.

Пытаюсь поднять Django-приложение на Lighttpd + uwsgi. Но получаю проблему: статические и медиа-файлы возвращают 404. Вот часть выхлопа консоли веб-браузера:

Failed to load resource: the server responded with a status of 404 (Not Found) http://<мой ip>/static/css/base.css
Failed to load resource: the server responded with a status of 404 (Not Found) http://<мой ip>/static/css/3party/highlight.css
Failed to load resource: the server responded with a status of 404 (Not Found) http://<мой ip>/static/css/3party/jquery-ui.min.css
...
Failed to load resource: the server responded with a status of 404 (Not Found) http://<мой ip>/media/files/113d014b-8bf8-411d-8ba6-d7bd065f13f4.200x150.png

И далее всё в этом же духе.

Конфиг Lighttpd:

server.modules = (
        "mod_access",
        "mod_accesslog",
        "mod_alias",
        "mod_compress",
        "mod_redirect",
        "mod_rewrite",
        "mod_scgi"
)
server.document-root = "/root/neboard/"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80


index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny             = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/javascript", "text/css", "text/html", "text/plain" )

include_shell "/root/lighttpd-1.4.45/doc/scripts/create-mime.conf.pl"

scgi.protocol = "uwsgi"
scgi.server = (
  "/" => (( "host" => "127.0.0.1", "port" => 8080, "check-local" => "disable" )),
)

alias.url = (
        "/static" => "/root/neboard/boards/static/",
        "/media" => "/root/neboard/media/",
)
url.rewrite-once = (
        "^(/static.*)$" => "$1",
        "^(/media.*)$" => "$1",
)

Часть файла settings.py:

# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = '/root/neboard/media/' 

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = 'http://<мой ip>/media/'

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = '/root/neboard/boards/static/'

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = 'http://<мой ip>/static/'
Конфиг uwsgi предоставлен автором приложения, его не менял:
[uwsgi]
module = neboard.wsgi:application
master = true
pidfile = /tmp/neboard.pid
socket = 127.0.0.1:8080
processes = 5
harakiri = 20
max-requests = 5000
disable-logging = true
vacuum = true
# socket=/var/run/neboard.sock
Что я делаю не так?

Заранее благодарю за помощь.

★★

Последнее исправление: the_electric_hand (всего исправлений: 1)

tl; dr, но скажу что джанга не раздаёт статику не в дебаг-режиме по дизайну.
Проблема в вебсервере, инфа 100%.

Goury ★★★★★
()

Интереса ради хочу спросить, а ты нафига все это в /root держишь?

По поводу проблемы - скорее всего виноват Lighttpd, так как это его работа раздавать статику. На всякий случай глянь куда браузер стучится когда статику просит, может он вообще не туда ломится

gnunixon ★★★
()
Ответ на: комментарий от gnunixon

Интереса ради хочу спросить, а ты нафига все это в /root держишь?

Я провожу тестирование приложения, это не продакшен, поэтому всё сделано, как говорится, «на скорую руку».

the_electric_hand ★★
() автор топика

Кажется, я понял.

В документации к джанге есть пример для апача:

<Directory /path/to/mysite.com/static>
Require all granted
</Directory>

<Directory /path/to/mysite.com/media>
Require all granted
</Directory>
Вопрос в том, как бы сделать то же самое на Lighttpd...

the_electric_hand ★★
() автор топика
Ответ на: комментарий от the_electric_hand

Хотя, судя по всему, алиасы именно это и делают...

the_electric_hand ★★
() автор топика

С nginx та же проблема :-(... Буду ковырять settings.py.

server {
    listen 80;
    server_name neborda;

    location /media/ {
        alias /root/neboard/media/;
    }
    location /static/ {
        alias /root/neboard/boards/static/;
    }

    location / {
        uwsgi_pass unix:///var/run/neboard.sock;
        include uwsgi_params;
    }
}

the_electric_hand ★★
() автор топика
Последнее исправление: the_electric_hand (всего исправлений: 3)
Ответ на: комментарий от deadNightTiger
getfacl /root/neboard/media/
getfacl: Removing leading '/' from absolute path names
# file: root/neboard/media/
# owner: root
# group: root
user::rwx
user:www-data:rwx
group::r-x
mask::rwx
other::r-x
the_electric_hand ★★
() автор топика

FastCGI

Зачем люди юзают сраный uwsgi? Зачем они до этого юзали сраный mod_wsgi? Зачем они до этого юзали сраный mod_python? Почему они ничему не учатся?

anonymous
()
Ответ на: комментарий от the_electric_hand

Ничего странного, execute-бит на директориях так и работает - проверяется каждая директория в пути

deadNightTiger ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.