Как настроить django с lighttpd?

У меня есть живой сайт, который работает под управлением lighttpd. Теперь у меня есть поддомен, который я хочу запустить под django. Я не хочу переходить на Apache, так как у меня нет ресурсов для поддержки двух производственных веб-серверов. Часть django работает хорошо со встроенным сервером разработки django, так что теперь мне просто нужно перенести его в production.

Похоже, что вся документация по настройке django с lighttpd устарела более 10 лет и использует fastcgi, который, насколько я могу судить, был устаревшим и удален из django. Новая документация указывает на использование wscgi - scgi под lighttpd. Но даже по нему трудно найти какую-либо документацию.

Нужно ли мне запустить uwsgi и использовать его для передачи страниц в mod_scgi? Или я должен использовать gunicorn? Я в растерянности, что делать.

Предложения приветствуются!

Вы можете рассмотреть несколько различных вариантов обслуживания приложения Django под Lighttpd. Одним из популярных вариантов является использование mod_proxy для перенаправления запросов на отдельный процесс, выполняющий ваше приложение Django, такой как Gunicorn или uWSGI.

Gunicorn может быть легко интегрирован с Lighttpd с помощью mod_proxy. Вы можете запустить Gunicorn в фоновом режиме в качестве демона и настроить Lighttpd на пересылку запросов к нему с помощью mod_proxy

uWSGI также может быть интегрирован с Lighttpd с помощью mod_proxy, и основным преимуществом uWSGI перед Gunicorn является его масштабируемость и производительность, но он может быть более сложным в настройке.

Если вы новичок, я бы рекомендовал сначала попробовать настроить Gunicorn, поскольку это более простой вариант, а затем перейти к uWSGI если вам нужна большая производительность!

ОБНОВЛЕНИЕ: Как вы упомянули в комментарии, вы хотите использовать mod_fastcgi для подключения Lighttpd к вашему приложению Django, поэтому вам нужно будет запустить Django, используя менеджер процессов FastCGI, предоставляемый flup.

Как запустить ваше приложение Django с помощью flup:

#!/bin/bash

# activate your virtual environment
source /path/to/venv/bin/activate

# Start the FastCGI process manager
python -m flup.server.fcgi -d -m django.core.servers.fastcgi

Вам также потребуется настроить Lighttpd на использование mod_fastcgi и указать ему на сокет, созданный flup, для подключения к приложению Django

fastcgi.server = ( "/" =>
    ( "localhost" =>
        (
            "socket" => "/tmp/fcgi.sock",
            "check-local" => "disable",
        )
    )
)

lighttpd поддерживает uwsgi с помощью mod_scgi и scgi.protocol = "uwsgi"

scgi.protocol = "uwsgi"
scgi.server = ( "/" =>
    (
        (
            "socket" => "/tmp/scgi.sock",
            "check-local" => "disable",
        )
    )
)

Использование mod_scgi и протокола uwsgi для связи с сервером Django, вероятно, будет быстрее и использует меньше ресурсов, чем использование gunicorn (и связь с помощью lighttpd mod_proxy)

Как использовать Django с uWSGI

В документации uWSGI по ссылке рекомендуется настроить веб-сервер на обслуживание статических файлов, а не отправлять эти запросы в Django.

Вернуться на верх