Mit diesem Paket ist es möglich, den lighttpd Webserver zu erstellen.
Um den Webserver nutzen zu können, muss ein Verzeichnis erstellt werden, in dem der lighttpd agieren kann. Dieses muss unbedingt erstellt und mit den nötigen Rechten versehen werden.
Unbedingt beachten: In dieser Anleitung wird angenommen, dass
USB-root genutzt wird. Sollte USB-root nicht
verwendet werden, muss auf die folgenden Verzeichnisstrukturen noch
größeres Augenmerk gelegt werden. In solch einem Fall könnte
/var/media/ftp/uStor01/rootfs/www
eine Analogie für /www
sein.
Zunächst muss eine Konsolensitzung mit dem Router bestehen, es spielt keine Rolle, ob dafür Telnet oder SSH genutzt wird.
# erstelle Webserver-Verzeichnis und setze 'rwxr-xr-x'-Rechte
mkdir /www
chmod -R 755 /www
Nun kann man im Freetz-Konfigurationsfrontend die Einstellungen für den
lighttpd anpassen und übernehmen. Daraufhin wird die benötigte
Verzeichnisstruktur innerhalb des Webserver-Verzeichnisses angelegt. Die
Dokumente müssen im Verzeichnis /www/websites
liegen. Je nach
Einstellung ist der Server nun bspw. über http://fritz.box:8008
verfügbar.
Will man Perl-Skripte mit dem Webserver benutzen und den chroot
-Modus
benutzen, muss man sich darum kümmern, dass das Paket
microperl sowie dessen Bibliotheken in die
Verzeichnisstruktur des lighttpd kopiert wird.
# kopiere 'microperl' als 'perl' in das '/usr/bin'-Verzeichnis des Webservers
cp -p /usr/bin/microperl /www/usr/bin/perl
# erstelle ein Verzeichnis '/lib' für die Bibliotheken
mkdir /www/lib
# kopiere die von 'microperl' benötigten Bibliotheken in das '/lib'-Verzeichnis des Webservers
# Abhängigkeiten können mit 'ldd /usr/bin/microperl' ausgegeben werden
cp -p /lib/ld-uClibc.so.0 /www/lib
cp -p /lib/libc.so.0 /www/lib
cp -p /lib/libgcc_s.so.1 /www/lib
cp -p /lib/libm.so.0 /www/lib
Wenn neben *.cgi
-Dateien auch *.pl
-Dateien ausgeführt werden sollen,
muss außerdem noch eine Zeile in die ‘Additional’-Konfiguration von
lighttpd (zu finden im Freetz-Konfigurationsmenü unter Settings
→
'lighttpd: Additional
):
# aktiviere CGI Unterstützung für *.pl-Dateien
cgi.assign += ( ".pl" => "/usr/bin/perl" )
Außerdem muss darauf geachtet werden, dass jegliche Perl-Skripte
Ausführrechte haben, dies ist mit einem einfachen chmod 755 DATEI.pl
zu erledigen.
make menuconfig:
Example:
server.modules += ( "mod_magnet" )
magnet.attract-physical-path-to = ( server.document-root + "/ip.lua" )
lighty.header["Content-Type"] = "text/html"
lighty.content = { "Your IP-address is: ", lighty.env["request.remote-ip"] }
return 200
Um die Zugriffe aus bestimmten Ländern zu sperren werden die Lighttpd-Module mod_magnet
und mod_maxminddb
genutzt.
Dadurch wird die Library libmaxminddb
ausgewählt welche eine GeoLite2-City.mmdb
-Datenbank (~70MB) benötigt die von
https://github.com/P3TERX/GeoLite.mmdb/ heruntergelden werden kann.
Ausserdem ein LUA-Script geoblock.lua
, XX
entsprechend anpassen:
if (lighty.r.req_env["GEOIP_COUNTRY_CODE"] == "XX") then return 403 end
return 0
Erweiterung der Lighttpd-Konfiguration, die Pfade der .lua
und .mmdb
sind anzupassen:
server.modules += ( "mod_maxminddb" )
maxminddb.activate = "enable"
maxminddb.db = "/var/media/ftp/GeoLite2-City.mmdb"
maxminddb.env = (
"GEOIP_COUNTRY_CODE" => "country/iso_code",
"GEOIP_COUNTRY_NAME" => "country/names/en",
"GEOIP_CITY_NAME" => "city/names/en",
"GEOIP_CITY_LATITUDE" => "location/latitude",
"GEOIP_CITY_LONGITUDE" => "location/longitude",
)
server.modules += ( "mod_magnet" )
magnet.attract-raw-url-to = ( "/var/media/ftp/geoblock.lua" )
Advantage over PHP: small, fast, low memory usage, feature rich programming language.