On my Raspberry Pi Zero-W I like to control my GPIO in and outputs with a webserver. I chose lighttpd
as server since I can use cgi scrips with c++.
But my setup has issues. I configured lighttpd
without problem. Normal HTML pages are running without problem. I used the command "lighty-enable-mod cgi" as mentioned on the default welcome page to enable cgi scripts.
I made a small C++ test program:
#include <iostream>
using namespace std;
int main()
{
cout<<"Content-type: text/plain"<<endl<<endl;
cout<<"Hello World!"<<endl;
return 0;
}
I compile it with G++ rename the binary output to hello.cgi
and place this file in the directory /usr/www/cgi-bin/
.
I restart lighttpd and on my pc I type the IP address of my Pi in the web browser and get the default welcome page. the I extend my the web browsers address with /hello.cgi
and get error 404 Not Found.
Then I saw a web page telling me to change lighttpd.conf
. So did I:
server.modules = (
"mod_access",
"mod_cgi",
"mod_alias",
"mod_accesslog",
"mod_compress",
"mod_redirect",
)
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
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"
$HTTP["url"] =~ "/cgi-bin/" {
cgi.assign = ( "" => "" )
}
cgi.assign = (
".cgi" => ""
)
I still get error 404 Not found.
What am I doing wrong?
Should I use an other URL?
Should I use an other lighttpd.conf
?
Should I put my cgi executable file in an other location than /usr/www/cgi-bin/
?
<your local host address>/cgi-bin/hello.cgi
in your browser? Does that work instead? – Aurora0001 Nov 1 '17 at 15:44