Это больше, чем кажется на первый взгляд.
Payne правильно, так как этот слушатель fastcgi использует stdin в качестве сокета для связи.
Однако, это всего лишь один из способов запуска респондента FastCGI. На самом деле это неправильный способ запуска респондента для lighttpd, потому что lighttpd не поддерживает общение со своими респондентами через stdin.
Ключ лежит в этой строке:
runfastcgi(method="threaded", daemonize="false")
Это правильная строка для apache, но не правильная строка для lighttpd. Для lighttpd вы хотите что-то вроде этого:
runfastcgi(method="prefork", daemonize="true", host="127.0.0.1", port="3033")
Что это будет делать, так это запускать процесс fastcgi вместо хоста / порта по вашему выбору в качестве демона, который будет переходить в фоновый режим. Установите daemonize = "false" для отладки или если вы используете что-то вроде supervisord
, но большинство людей обычно хотят демона.
Следует отметить, что весь скрипт не нужен, если ваш скрипт такой же простой, как тот, который вы только что вставили. Вместо этого вы можете просто запустить респондент fastCGI через manage.py:
./manage.py runfcgi method=prefork host=127.0.0.1 port=3033 pidfile=/path/to/foo.pid
Теперь, когда вы (надеюсь) запустили свой респондент FastCGI, вы хотите сделать это в своей конфигурации lighttpd:
"/mysite.fcgi" => (
"main" => (
"host" => "127.0.0.1",
"port" => 3033,
"check-local" => "disable",
)
),
То есть, какой бы порт вы ни выбрали для своего респондента fastcgi, вам нужно указать lighttpd там.
Следует отметить, что все это доступно в документации Django FastCGI , но эта документация утратила большую часть своей ясности из-за частых изменений и некоторой ползучести функций в проекте с открытым исходным кодом.