Ik ben bezig met een python scripts die hun output via fastcgi aan lighttpd door geven. Tot nu toe heel simpel:
Dit is een wsgi script maar waar het om gaat is dat de regel "Hello World! It is <tijd-om-naar-bed-te-gaan>" door de socket naar de webserver wordt gestuurd.
Als ik dit programma met de hand start en vanuit mijn browser dit script aan roep, krijg ik netjes de verwachte output. Maar als ik lighttpd het script laat starten krijg ik geen reactie van de webserver. Maar ook geen foutmelding: de verbinding wordt blijkbaar gelegd, maar er wordt niets teruggestuurd door de server.
Mijn fastcgi configuratie is:
Als ik een commentaar voor de bin-path regel zet en het fcgi script met de hand start gaat het dus wel goed. Lighttpd start wel hello.py. Hij start er zelfs vier en er worden 5 sockets gemaakt in /tmp:
Ik heb max-proc 1 gemaakt! Waarom krijgt mijn browser de output van het script niet te zien?
In de error.log van lighttpd komt niets te staan, maar access.log geeft een kleine aanwijzing:
Als hello.py standalone draait :
192.168.0.5 192.168.0.1 - [10/Nov/2010:08:12:11 +0100] "GET /cgi-bin/hello.py HTTP/1.1" 200 28 "http://192.168.0.1/cgi-bin/" "Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.2.10) Gecko/20100915 Ubuntu/10.04 (lucid) Firefox/3.6.10"
En als hello.py door lighttpd wordt gestart:
192.168.0.5 192.168.0.1 - [10/Nov/2010:08:08:55 +0100] "GET /cgi-bin/ HTTP/1.1" 200 2183 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.2.10) Gecko/20100915 Ubuntu/10.04 (lucid) Firefox/3.6.10"
Hoe moet ik dit interpreteren?
Python:
1
2
3
4
5
6
7
8
9
10
11
12
| #!/usr/bin/python import os, time from flup.server.fcgi import WSGIServer SocketAddress = "/tmp/fcgi.sock" def myapp(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) return ['Hello World! It is %s\n' % time.strftime("%X")] Server = WSGIServer(application = myapp, bindAddress = SocketAddress, umask=011) Server.run() |
Dit is een wsgi script maar waar het om gaat is dat de regel "Hello World! It is <tijd-om-naar-bed-te-gaan>" door de socket naar de webserver wordt gestuurd.
Als ik dit programma met de hand start en vanuit mijn browser dit script aan roep, krijg ik netjes de verwachte output. Maar als ik lighttpd het script laat starten krijg ik geen reactie van de webserver. Maar ook geen foutmelding: de verbinding wordt blijkbaar gelegd, maar er wordt niets teruggestuurd door de server.
Mijn fastcgi configuratie is:
code:
1
2
3
4
5
6
7
| fastcgi.server = ( ".py" => (( "bin-path" => "/home/www/cgi-bin/hello.py", "socket" => "/tmp/fcgi.sock", "max-proc" => 1, )) ) |
Als ik een commentaar voor de bin-path regel zet en het fcgi script met de hand start gaat het dus wel goed. Lighttpd start wel hello.py. Hij start er zelfs vier en er worden 5 sockets gemaakt in /tmp:
code:
1
2
3
4
5
6
7
8
9
10
| ebox:/home/www/cgi-bin# ps ax | grep hello 21204 ? Sl 0:00 /usr/bin/python /home/www/cgi-bin/hello.py 21205 ? Sl 0:00 /usr/bin/python /home/www/cgi-bin/hello.py 21206 ? Sl 0:00 /usr/bin/python /home/www/cgi-bin/hello.py 21207 ? Sl 0:00 /usr/bin/python /home/www/cgi-bin/hello.py srwxrw-rw- 1 www-data www-data 0 2010-11-10 00:30 /tmp/fcgi.sock srwxr-xr-x 1 www-data www-data 0 2010-11-10 00:30 /tmp/fcgi.sock-0 srwxr-xr-x 1 www-data www-data 0 2010-11-10 00:30 /tmp/fcgi.sock-1 srwxr-xr-x 1 www-data www-data 0 2010-11-10 00:30 /tmp/fcgi.sock-2 srwxr-xr-x 1 www-data www-data 0 2010-11-10 00:30 /tmp/fcgi.sock-3 |
Ik heb max-proc 1 gemaakt! Waarom krijgt mijn browser de output van het script niet te zien?
In de error.log van lighttpd komt niets te staan, maar access.log geeft een kleine aanwijzing:
Als hello.py standalone draait :
192.168.0.5 192.168.0.1 - [10/Nov/2010:08:12:11 +0100] "GET /cgi-bin/hello.py HTTP/1.1" 200 28 "http://192.168.0.1/cgi-bin/" "Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.2.10) Gecko/20100915 Ubuntu/10.04 (lucid) Firefox/3.6.10"
En als hello.py door lighttpd wordt gestart:
192.168.0.5 192.168.0.1 - [10/Nov/2010:08:08:55 +0100] "GET /cgi-bin/ HTTP/1.1" 200 2183 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.2.10) Gecko/20100915 Ubuntu/10.04 (lucid) Firefox/3.6.10"
Hoe moet ik dit interpreteren?
[ Voor 16% gewijzigd door Sir Isaac op 10-11-2010 08:09 ]