Ik probeer FastCGI aan te praat te krijgen in Lighttpd om een website te (kunnen) maken in c/c++.
De (test) website heb ik al:
Wat succesvol gecompileerd is naar een bestandje met het commandje:
Als ik het bestand vervolgens uitvoer in terminal, gaat dat prima:
Deze "website" wil ik aan de praat krijgen in lighttpd. Lighttpd heb ik geinstalleerd via synaptics package manager en volgens de bijgesloten readme.
Uiteindelijk heb ik een werkende webserver welke ik kon bereiken via localhost en mijn eigen IP.
Nu, om mijn fastcgi bin aan de praat te krijgen heb ik gekloot aan de config files.
Het binnetje is hernoemd en verplaatst naar "/var/www/helloweb". Mijn configfile'tje, wat opgeslagen is in "/etc/lighttpd/conf-available" en te bereiken is via een dynamic link in "/etc/lighttpd/conf-enabled" heet "10-fastcgi.conf" en heeft de volgende inhoud, wat grotendeels het resultaat is van hopeloos googlen:
Tot slot een lijstje ingestelde rechten:
Nou is het probleem: het werkt niet.
Als ik mijn localhost nu bezoek, met de nieuwe config (en na restarten van server) krijg ik "500 - Internal Server Error".
In de errorlog is het volgende te vinden:
Nou zal het me niets verbazen als ik de rechten/owner weer verkeerd ingestelt heb. Ik heb altijd ruzie met linux's rechten systeem; gebruik linux nog maar een paar maanden als hoofd-OS.
Vergeet me de eventuele onduidelijkheid; heb niet eens geslapen en het is al ochtend
De (test) website heb ik al:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| #include "fcgi_stdio.h" /* fcgi library; put it first*/ #include <stdlib.h> int count; void initialize(void) { count=0; } void main(void) { /* Initialization. */ initialize(); /* Response loop. */ while (FCGI_Accept() >= 0) { printf("Content-type: text/html\r\n" "\r\n" "<title>FastCGI Hello! (C, fcgi_stdio library)</title>" "<h1>FastCGI Hello! (C, fcgi_stdio library)</h1>" "Request number %d running on host <i>%s</i>\n", ++count, getenv("SERVER_HOSTNAME")); } } |
Wat succesvol gecompileerd is naar een bestandje met het commandje:
code:
1
| gcc -o test -lfcgi test.c |
Als ik het bestand vervolgens uitvoer in terminal, gaat dat prima:
code:
1
2
3
4
| root@toby-desktop:/home/toby/Desktop# ./test Content-type: text/html <title>FastCGI Hello! (C, fcgi_stdio library)</title><h1>FastCGI Hello! (C, fcgi_stdio library)</h1>Request number 1 running on host <i>(null)</i> |
Deze "website" wil ik aan de praat krijgen in lighttpd. Lighttpd heb ik geinstalleerd via synaptics package manager en volgens de bijgesloten readme.
Uiteindelijk heb ik een werkende webserver welke ik kon bereiken via localhost en mijn eigen IP.
Nu, om mijn fastcgi bin aan de praat te krijgen heb ik gekloot aan de config files.
Het binnetje is hernoemd en verplaatst naar "/var/www/helloweb". Mijn configfile'tje, wat opgeslagen is in "/etc/lighttpd/conf-available" en te bereiken is via een dynamic link in "/etc/lighttpd/conf-enabled" heet "10-fastcgi.conf" en heeft de volgende inhoud, wat grotendeels het resultaat is van hopeloos googlen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| ## FastCGI programs have the same functionality as CGI programs, ## but are considerably faster through lower interpreter startup ## time and socketed communication ## ## Documentation: /usr/share/doc/lighttpd-doc/fastcgi.txt.gz ## http://www.lighttpd.net/documentation/fastcgi.html server.modules += ( "mod_fastcgi" ) ## Start an FastCGI server for php (needs the php5-cgi package) #fastcgi.server = ( ".php" => # (( # "bin-path" => "/usr/bin/php-cgi", # "socket" => "/tmp/php.socket", # "max-procs" => 2, # "idle-timeout" => 20, # "bin-environment" => ( # "PHP_FCGI_CHILDREN" => "4", # "PHP_FCGI_MAX_REQUESTS" => "10000" # ), # "bin-copy-environment" => ( # "PATH", "SHELL", "USER" # ), # "broken-scriptfilename" => "enable" # )) #) fastcgi.server = ( "" =>(( "bin-path" => "/var/www/helloweb", "max-procs" => 1, "socket" => "/tmp/helloweb.socket", "check-local" => "disable" ))) |
Tot slot een lijstje ingestelde rechten:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| root@toby-desktop:/etc/lighttpd/conf-enabled# ls -o total 0 lrwxrwxrwx 1 root 44 2009-11-16 06:39 10-fastcgi.conf -> /etc/lighttpd/conf-available/10-fastcgi.conf root@toby-desktop:/var/www# ls -o total 12 -rwxrwxrwx 1 www-data 9259 2009-11-16 06:10 helloweb root@toby-desktop:/tmp# ls -o total 44 srwxr-xr-x 1 root 0 2009-11-16 07:10 gedit.root.1862093313 srwxr-xr-x 1 toby 0 2009-11-16 06:58 gedit.toby.569244332 srwxr-xr-x 1 www-data 0 2009-11-16 06:53 helloweb.socket-0 drwx------ 2 toby 4096 2009-11-16 04:48 keyring-CuxirR drwx------ 2 toby 4096 2009-11-16 04:53 libgksu-tMcYY9 drwx------ 2 root 4096 2009-11-16 07:10 orbit-root drwx------ 2 toby 4096 2009-11-16 07:06 orbit-toby drwx------ 2 toby 4096 2009-11-16 05:23 plugtmp drwx------ 2 toby 4096 2009-11-16 04:48 pulse-A9DbEQSUq3lX drwx------ 2 toby 4096 2009-11-16 04:48 seahorse-GJtb2t -rw------- 1 nobody 226 2009-11-16 05:17 sess_db862n3aq00ik5t57gpujopdr2 drwx------ 2 toby 4096 2009-11-16 04:48 ssh-gfHELf3561 drwx------ 3 toby 4096 2009-11-16 04:48 tracker-toby drwx------ 2 toby 4096 2009-11-16 04:48 virtual-toby.JR46nX |
Nou is het probleem: het werkt niet.
Als ik mijn localhost nu bezoek, met de nieuwe config (en na restarten van server) krijg ik "500 - Internal Server Error".
In de errorlog is het volgende te vinden:
code:
1
2
3
4
5
| 2009-11-16 07:13:01: (server.c.1475) server stopped by UID = 0 PID = 15610 2009-11-16 07:13:02: (log.c.75) server started 2009-11-16 07:13:12: (mod_fastcgi.c.2489) unexpected end-of-file (perhaps the fastcgi process died): pid: 15639 socket: unix:/tmp/helloweb.socket-0 2009-11-16 07:13:12: (mod_fastcgi.c.3256) child signaled: 11 2009-11-16 07:13:12: (mod_fastcgi.c.3299) response not received, request sent: 862 on socket: unix:/tmp/helloweb.socket-0 for / , closing connection |
Nou zal het me niets verbazen als ik de rechten/owner weer verkeerd ingestelt heb. Ik heb altijd ruzie met linux's rechten systeem; gebruik linux nog maar een paar maanden als hoofd-OS.
Vergeet me de eventuele onduidelijkheid; heb niet eens geslapen en het is al ochtend
Let op: Mijn post bevat meningen, aannames of onwaarheden