Как настроить параметр bin-path для lighttpd с помощью flup / python - PullRequest
2 голосов
/ 04 января 2012

Я использую lighttpd 1.4.26 в Ubuntu 10.04 с версией Flup 1.0.3 dev.

При настройке mod_fastcgi, я могу успешно заставить lighttpd взаимодействовать с процессом fcgi через локальный сокет, если я запускаю fcgi вручную (как www-данные) перед запуском lighttpd.

sudo su www-data
/webapps/test/test.fcgi

тогда в другой оболочке ...

sudo /etc/init.d/lighttpd/start

Когда я пытаюсь использовать параметр bin-path в конфигурации fastcgi.server для автоматического запуска этого процесса, процесс запускается, но не связывается с ним успешно.

Я выделил сообщения в файле lighttpd \ error.log следующим образом:

Успешно (ручной запуск):

2012-01-03 11:56:52: (mod_fastcgi.c.3647) handling it in mod_fastcgi
2012-01-03 11:56:52: (response.c.468) -- before doc_root
2012-01-03 11:56:52: (response.c.469) Doc-Root     : /webapps/test
2012-01-03 11:56:52: (response.c.470) Rel-Path     : /test.fcgi
2012-01-03 11:56:52: (response.c.471) Path         :
2012-01-03 11:56:52: (response.c.519) -- after doc_root
2012-01-03 11:56:52: (response.c.520) Doc-Root     : /webapps/test
2012-01-03 11:56:52: (response.c.521) Rel-Path     : /test.fcgi
2012-01-03 11:56:52: (response.c.522) Path         : /webapps/test/test.fcgi
2012-01-03 11:56:52: (configfile-glue.c.583) === start of condition block ===
2012-01-03 11:56:52: (configfile-glue.c.541) 1 (cached) result: false
2012-01-03 11:56:52: (configfile-glue.c.583) === start of condition block ===
2012-01-03 11:56:52: (configfile-glue.c.541) 2 (cached) result: false
2012-01-03 11:56:52: (response.c.539) -- logical -> physical
2012-01-03 11:56:52: (response.c.540) Doc-Root     : /webapps/test
2012-01-03 11:56:52: (response.c.541) Rel-Path     : /test.fcgi
2012-01-03 11:56:52: (response.c.542) Path         : /webapps/test/test.fcgi
2012-01-03 11:56:52: (mod_fastcgi.c.3071) got proc: pid: 0 socket: unix:/tmp/fcgi.sock load: 1
2012-01-03 11:56:52: (connections.c.1773) state at exit: 7 handle-req
2012-01-03 11:56:52: (mod_fastcgi.c.1492) released proc: pid: 0 socket: unix:/tmp/fcgi.sock load: 0
2012-01-03 11:56:52: (connections.c.1367) state at start 7 handle-req
2012-01-03 11:56:52: (connections.c.1431) state for fd 7 handle-req
2012-01-03 11:56:52: (connections.c.1511) state for fd 7 resp-start
2012-01-03 11:56:52: (response.c.128) Response-Header:
HTTP/1.1 200 OK^M
Content-Type: text/plain^M
Content-Length: 13^M
Date: Tue, 03 Jan 2012 19:56:52 GMT^M
Server: lighttpd/1.4.26^M

Неудачно:

2012-01-03 11:53:17: (mod_fastcgi.c.3647) handling it in mod_fastcgi
2012-01-03 11:53:17: (response.c.468) -- before doc_root
2012-01-03 11:53:17: (response.c.469) Doc-Root     : /webapps/test
2012-01-03 11:53:17: (response.c.470) Rel-Path     : /test.fcgi
2012-01-03 11:53:17: (response.c.471) Path         :
2012-01-03 11:53:17: (response.c.519) -- after doc_root
2012-01-03 11:53:17: (response.c.520) Doc-Root     : /webapps/test
2012-01-03 11:53:17: (response.c.521) Rel-Path     : /test.fcgi
2012-01-03 11:53:17: (response.c.522) Path         : /webapps/test/test.fcgi
2012-01-03 11:53:17: (configfile-glue.c.583) === start of condition block ===
2012-01-03 11:53:17: (configfile-glue.c.541) 1 (cached) result: false
2012-01-03 11:53:17: (configfile-glue.c.583) === start of condition block ===
2012-01-03 11:53:17: (configfile-glue.c.541) 2 (cached) result: false
2012-01-03 11:53:17: (response.c.539) -- logical -> physical
2012-01-03 11:53:17: (response.c.540) Doc-Root     : /webapps/test
2012-01-03 11:53:17: (response.c.541) Rel-Path     : /test.fcgi
2012-01-03 11:53:17: (response.c.542) Path         : /webapps/test/test.fcgi
2012-01-03 11:53:17: (mod_fastcgi.c.3071) got proc: pid: 23117 socket: unix:/tmp/fcgi.sock-0 load: 1
2012-01-03 11:53:17: (connections.c.1773) state at exit: 7 handle-req
2012-01-03 11:53:27: (connections.c.1367) state at start 8 error
2012-01-03 11:53:27: (connections.c.1746) shutdown for fd 8
2012-01-03 11:53:27: (connections.c.1598) state for fd 8 close
2012-01-03 11:53:27: (connections.c.1621) connection closed for fd 8
2012-01-03 11:53:27: (connections.c.1587) state for fd 8 connect
2012-01-03 11:53:27: (connections.c.1773) state at exit: 8 connect

Мой конфиг fastcgi:

server.modules   += ( "mod_fastcgi" )

## Start an FastCGI server
fastcgi.debug = 1

fastcgi.server    = ( ".fcgi" =>
                      ( "localhost" =>
                        (
                        "socket" => "/tmp/fcgi.sock",
                        #"bin-path" => "/webapps/test/test.fcgi",
                        "max-procs" => 1,
                        "check-local" => "disable"
                                        )
                                      )
                                )

Единственное изменение, которое я делаю, - раскомментируйте строку bin-path для прямой ссылки на файл fcgi.

Содержимое файла fcgi представляет собой простой привет мир:

#!/usr/bin/python2.6

from flup.server.fcgi import WSGIServer

def myapp(environ, start_response):
    print 'got request: %s' % environ
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return ['Hello World!\n']

WSGIServer(myapp, bindAddress = '/tmp/fcgi.sock').run()

Я новичок в lighttpd, поэтому, возможно, мне не хватает чего-то простого. Заранее спасибо!

1 Ответ

1 голос
/ 27 января 2013

У меня была такая же проблема в моей установке lighttpd и Django с flup.Решил это, установив flup для файла сокета xxx.sock-0 вместо xxx.sock, как раньше.Это может сработать и для вас.

Это выглядит немного странно.Я не гуру Linux, может быть, кто-то еще ответит решением.

...