2017-01-26 18 views
0

(также размещены на FastCGI ++ - пользователи почты список, однако он не был активным в значительной продолжительности времени)Какова правильная конфигурация Lighttpd для демона, реализующего библиотеку FastCGI ++?

Я в настоящее время пытается использовать FastCGI ++ (версия 2.1) библиотеки в приложении я пишу. Приложение будет запускаться как демон на машине Linux, с веб-страницей статуса, обслуживаемой через lighttpd. Я намерен периодически использовать интерфейс FastCGI ++, автоматически обновляя веб-страницу состояния.

Я начал с добавления потока к моему приложению, которое создает экземпляр FastCGI ++ Manager, и echos строковый литерал в ответ на любой запрос (по существу такой же, как пример Hello World).

Однако я не могу получить доступ к этому в браузере, и я подозреваю, что неправильно настроил модуль lighttpd fastcgi (/etc/lighttpd/lighttpd.conf, приведенный ниже). В журнале ошибок lighttpd указано, что «нет такого файла или каталога в unix: /tmp/Myapp.sock».

Каков правильный способ настройки lighttpd для взаимодействия с демоном, реализующим библиотеку fastcgi ++? Нужно ли запускать демона с помощью spawn-fcgi?

Спасибо,

Майк

кот /etc/lighttpd/lighttpd.conf:

server.modules = (
    "mod_access", 
    "mod_alias", 
    "mod_compress", 
    "mod_redirect", 
     "mod_rewrite", 
    "mod_cgi", 
    "mod_fastcgi", 
) 

server.document-root  = "/var/www/html" 
server.upload-dirs   = ("/var/cache/lighttpd/uploads") 
server.errorlog    = "/var/log/lighttpd/error.log" 
server.pid-file    = "/var/run/lighttpd.pid" 
server.username    = "www-data" 
server.groupname   = "www-data" 
server.port     = 80 

cgi.assign = (".py" => "/usr/bin/python3") 
fastcgi.debug = 1 
fastcgi.server = ("/device" => (( 
        "socket" => "/tmp/Myapp.sock", 
        "check_local" => "disable", 
        "docroot" => "/" 
       )) 
     ) 

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") 

# default listening port for IPv6 falls back to the IPv4 port 
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port 
include_shell "/usr/share/lighttpd/create-mime.assign.pl" 
include_shell "/usr/share/lighttpd/include-conf-enabled.pl" 

ответ

0

"Нет такого файла или каталога на UNIX: /tmp/Myapp.sock"

Это означает, что гнездо отсутствует.

Ваш демон работает? Вы начали?

Если вы хотите, чтобы lighttpd запускал демон, тогда вы должны включить «bin-path» в настройках fastcgi.server для вашего «/ device». См. https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModFastCGI

+0

Демон работает. У меня создалось впечатление, что если lighttpd запускает приложение, то (а) каждый запрос создаст новый экземпляр, и (б) приложение будет работать только на время запроса. Учитывая, что демон задействован в мониторинге и управлении конкретными аппаратными устройствами, мне нужно, чтобы он постоянно работал с загрузкой. –

+0

У вас неверное впечатление. lighttpd запускает демона при запуске и отправляет ему сигнал термина при его выключении lighttpd. Независимо от того, запускает ли или нет lighttpd демона, lighttpd создает новое соединение сокетов с бэкэнд FastCGI для каждого запроса. Если демон запущен, то должен существовать файл /tmp/Myapp.sock. Имеет ли это? Если нет, выполнялось ли задание cron из/tmp из-за «старой» метки времени? Может быть, подумайте о том, чтобы положить сокет в другое место? – gstrauss