aptitude -y install zlib1g libmysqlclient15-dev libpcre3-dev zlib1g-dev libbz2-dev \ libssl-dev debhelper libgtkhtml2-0 libgtkhtml2-dev gcc g++ flex libcurl3-dev libxpm-dev apache2-utils \ php5-cgi php5-gd php5-common php5-mysql psmisc openssl ssl-cert build-essential \ mysql-common mysql-server mysql-server-5.0 phpmyadmin
Quellcode Lighttpd 1.4.25 runterladen.
Auf der Seite des Herstellers bitte vorher nachsehen, ob Updates oder eine neue Version des Lighty verfügbar ist.
cd /usr/src/ wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.23.tar.gz wget http://download.nixhelp.de/sonstiges/lighttpd-1.4.7.tar.gz
Im Teil
tar zxf lighttpd-1.4.23.tar.gz tar zxf lighttpd-1.4.7.tar.gz cp -R lighttpd-1.4.7/debian lighttpd-1.4.23 cd lighttpd-1.4.23/
Du fragst dich bestimmt, wieso muss ich die Version 1.4.7 runterladen. Es liegt daran, dass es in den neuen Sourcen vom Lighty kein 'debian' Verzeichnis mehr mit den Files die man zum erstellen eines .deb braucht gibt. Diese müssten entweder manuell erstellt werden oder man benutzt die Dateien aus einer älteren Version. Um die Geschichte zu vereinfachen, hab ich mich für die letztgenannte Variante entschieden.
Diese Dateien werden unseren Bedürfnissen angepasst
Datei | Erklärung |
---|---|
changelog | Informationen über Maintainer sowie Dateiinformation zum DEB |
control | Hier werden die Abhängigkeiten des Pakets zum bauen festgelegt |
dirs | Dateiverzeichnisse die bei der Installation erstellt werden wie htdocs, logs etc |
lighttpd.conf | Die Konfigurationsdatei des Lighty |
lighttpd.postinst | Postinstallationsskript für den Lighty |
rules | Wie der Name bereits sagt… welche Funktionen der Lighty bekommen soll wie ipv6 Support |
Wir beschreiben nun die Installation mit PHP5.
So könnte die changelog nach dem editieren aussehen. Dabei muss der Syntax sowie das Format genauso beachtet werden wie beschrieben. Nach dem editieren diese Datei ganz oben einfügen und abspeichern
lighttpd (1.4.23) unstable; urgency=low * updated to 1.4.23 -- Max Mustermann <max@mustermann.tld> Thu, 23 Jul 2009 22:55:00 +0100
Hier legst du die Abhängigkeiten fest, mit welcher sich das Paket installieren läßt. Die ersten beiden dürfen nicht verändert werden. Hier ein kleines Beispiel mit PHP5. Bedenke immer: die Abhängigkeiten müssen vor dem bauen bzw. vor der Installation des DEB aufgelöst werden!
Source: lighttpd Section: web Priority: optional Maintainer: Max Mustermann <max@mustermann.tld> Build-Depends: debhelper (>= 4.0.0), libssl-dev, zlib1g-dev, libbz2-dev, libpcre3-dev, php5-common, php5-cgi, gcc, g++ Standards-Version: 3.6.0 Package: lighttpd Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Provides: httpd, httpd-cgi Suggests: openssl, rrdtool Description: A fast webserver with minimal memory footprint lighttpd is intended to be a frontend for ad-servers which have to deliver small files concurrently to many connections.
Wenn später das erstellte Paket installiert wird, müssen auch die Verzeichnispfade eingerichtet werden. Wir legen jetzt die Pfade für die Domain, der Subdomain … fest.
Wenn man sich folgendes Beispiel anschaut, werden sich noch offene Fragen selbst beantworten. Auch hier ist wieder der Syntax zu beachten, d.h. vor Beginn einer Pfadangabe kein Slash '/' eingeben.
Die Subdomain bezeichnen wir als 'download'.
usr/bin usr/sbin var/www/{domain,download}/htdocs var/www/{domain}/secure var/log/lighttpd
Wir erreichen nun den Punkt der Konfiguration des späteren Lighty. Es wird die Domain sowie eine Subdomain incl. PHP konfiguriert. Hier muss man jetzt sehr sorgfältig vorgehen. Einen kleinen Fehler in der lighttpd.conf könnte entweder einen instabilen Lighty oder einen Abbruch der Installation verursachen.
server.username = "www-data" server.groupname = "www-data" server.document-root = "/var/www/{domain}/htdocs/" server.pid-file = "/var/run/lighttpd.pid" server.errorlog = "/var/log/lighttpd/error.log" accesslog.filename = "/var/log/lighttpd/access.log" server.stat-cache-engine = "simple" server.event-handler = "linux-sysepoll" server.name = "www.DEINEDOMAIN.TLD" server.max-fds = 2048 server.follow-symlink = "enable" server.dir-listing = "disable" server.max-keep-alive-idle = 10 server.modules = ( "mod_access", "mod_status", "mod_alias", "mod_auth", "mod_evasive", "mod_fastcgi", "mod_rewrite", "mod_redirect", "mod_accesslog" ) server.indexfiles = ( "index.xhtml", "index.html", "index.htm", "index.php", ) mimetype.assign = ( ".pdf" => "application/pdf", ".sig" => "application/pgp-signature", ".spl" => "application/futuresplash", ".class" => "application/octet-stream", ".ps" => "application/postscript", ".torrent" => "application/x-bittorrent", ".dvi" => "application/x-dvi", ".pac" => "application/x-ns-proxy-autoconfig", ".swf" => "application/x-shockwave-flash", ".tgz" => "application/x-tgz", ".mp3" => "audio/mpeg", ".m3u" => "audio/x-mpegurl", ".wma" => "audio/x-ms-wma", ".wax" => "audio/x-ms-wax", ".ogg" => "application/ogg", ".wav" => "audio/x-wav", ".xbm" => "image/x-xbitmap", ".xpm" => "image/x-xpixmap", ".xwd" => "image/x-xwindowdump", ".asc" => "text/plain", ".c" => "text/plain", ".h" => "text/plain", ".cc" => "text/plain", ".cpp" => "text/plain", ".hh" => "text/plain", ".hpp" => "text/plain", ".conf" => "text/plain", ".log" => "text/plain", ".text" => "text/plain", ".txt" => "text/plain", ".diff" => "text/plain", ".patch" => "text/plain", ".ebuild" => "text/plain", ".eclass" => "text/plain", ".rtf" => "application/rtf", ".bmp" => "image/bmp", ".tif" => "image/tiff", ".tiff" => "image/tiff", ".ico" => "image/x-icon", ".mpeg" => "video/mpeg", ".mpg" => "video/mpeg", ".mov" => "video/quicktime", ".qt" => "video/quicktime", ".avi" => "video/x-msvideo", ".asf" => "video/x-ms-asf", ".asx" => "video/x-ms-asf", ".wmv" => "video/x-ms-wmv", ".tbz" => "application/x-bzip-compressed-tar", ".tar.bz2" => "application/x-bzip-compressed-tar", ".tar.gz" => "application/x-tgz", ".bz2" => "application/x-bzip", ".gz" => "application/x-gzip", ".tar" => "application/x-tar", ".zip" => "application/zip", ".jpeg" => "image/jpeg", ".jpg" => "image/jpeg", ".png" => "image/png", ".gif" => "image/gif", ".xhtml" => "text/html", ".html" => "text/html", ".htm" => "text/html", ".dtd" => "text/xml", ".xml" => "text/xml", ".css" => "text/css", ".js" => "text/javascript", ".deb" => "application/x-deb", ".php" => "application/x-httpd-php", "" => "text/plain", ) static-file.exclude-extensions = ( ".fcgi", ".php", ) url.access-deny = ( "~", ".ini", ".inc", ".cfg", ".tpl", ".bak", ".dist", ".orig", ".htaccess", ".htpasswd", ".example", ".sample", ".lang", ) cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl" ) fastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "/tmp/php-fastcgi.socket", "bin-path" => "/usr/bin/php5-cgi" ) ) ) $SERVER["socket"] == ":80" { $HTTP["host"] == "download.DEINEDOMAIN.TLD" { server.document-root = "/var/www/download/htdocs/" server.dir-listing = "disable" accesslog.filename = "/var/log/lighttpd/download-access.log" } } $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/lighttpd/ssl/lighttpd.pem" $HTTP["host"] == "secure.domain.de:443" { server.document-root = "/var/www/{domain}/secure/" connection.kbytes-per-second = 512 evasive.max-conns-per-ip = 5 accesslog.filename = "/var/log/lighttpd/secure.log" status.status-url = "/server-status" status.config-url = "/server-config" status.statistics-url = "/server-statistics" auth.backend = "htpasswd" auth.backend.htpasswd.userfile = "/etc/lighttpd/password/admin.pwd" auth.require = ("/" => ( "method" => "basic", "realm" => "admin", "require" => "valid-user" )) } }
Als nächstes bearbeiten wir diese Datei. Es können auf diesem Weg noch zusätzliche Befehle ausgeführt werden, wie Änderung von Dateiberechtigungen, Erstellung eines Users oder ein komplettes chroot für den Lighty bei der Installation des DEBs. Hier findest du ein Beispiel für eine Lighty Standardinstallation:
#! /bin/sh # postinst script for lighttpd # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * <postinst> `configure' <most-recently-configured-version> # * <old-postinst> `abort-upgrade' <new version> # * <conflictor's-postinst> `abort-remove' `in-favour' <package> # <new-version> # * <deconfigured's-postinst> `abort-deconfigure' `in-favour' # <failed-install-package> <version> `removing' # <conflicting-package> <version> # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package # case "$1" in configure) chown www-data:www-data /var/log/lighttpd echo "Installation Lighttpd + PHP5-FCGI erfolgreich abgeschlossen" ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0
Wie der Name sagt, kann man in diesem Teil den 'configure' Skript ein paar Parameter übergeben, wie z.B. IPv6 deaktivieren usw.
Hier beachte aber bitte, es kann bei bestimmten Funktionen vorkommen, dass zusätzliche Abhängigkeiten aufgelöst werden müssen, da sonst ein Bau des deb nicht ausgeführt wird. Wir richten uns weiterhin an die im Howto beschriebenen Vorgaben:
Wir suchen uns den entsprechenden Teil und editieren diesen entsprechend:
config.status: configure dh_testdir # Add here commands to configure the package. CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) \ --build=$(DEB_BUILD_GNU_TYPE)\ --prefix=/usr \ --mandir=\$${prefix}/share/man \ --infodir=\$${prefix}/share/info \ --sysconfdir=/etc/lighttpd \ --libdir=/usr/lib/lighttpd \ --with-openssl \ --disable-ipv6
Somit haben wir erstmal die erste Hürde genommen und können nun zum Bau des Pakets fortschreiten.
Bevor wir nun anfangen mit dem Bau des debs, empfehle ich dringend nochmals alle editierten Dateien nach Tippfehlern oder evtl. vergessenen Funktionen zu überprüfen.
dpkg-buildpackage
Sollten keine Fehler während des Kompiliervorgangs aufgetreten sein, befindet sich eine Ebene tiefer in /usr/src das fertige DEB mit deinem persönlich angepassten Lighttpd der Version 1.4.23
cd .. dpkg -i $DEBNAME.deb
!!!Wenn der Lighty nun mit Fehlern den Start abbricht, nicht beeinflussen lassen, alles wird gut ;)!!!
SSL Zerfitikat erstellen:
mkdir -p /etc/lighttpd/ssl openssl req -new -nodes -x509 -keyout /etc/lighttpd/ssl/lighttpd.pem -out /etc/lighttpd/ssl/lighttpd.pem -days 3650 chown www-data:www-data /etc/lighttpd/ssl/lighttpd.pem chmod 600 /etc/lighttpd/ssl/lighttpd.pem
Das schaut dann folgendermaßen aus:
Country Name (2 letter code) [AU]:DE State or Province Name (full name) [Some-State]:$deinbundesland Locality Name (eg, city) []:$deinestadt Organization Name (eg, company) [Internet Widgits Pty Ltd]:$deinebezeichnung(firma etc) Organizational Unit Name (eg, section) []:$gruppenname Common Name (eg, YOUR name) []:mail.meinedomain.tld Email Address []:$mailadmin@mainedomain.tld
Verzeichnisschutz erstellen:
mkdir /etc/lighttpd/password/ htpasswd -cmd /etc/lighttpd/password/download.pwd $downloaduser htpasswd -cmd /etc/lighttpd/password/admin.pwd $adminuser
Wer weitere User hinzufügen möchte, muss das 'c' weglassen, also 'htpasswd -md …'
Per default ist mysql mit dem User root ohne Passwort, das soll so natürlich nicht sein.
Also erstellt ihr auf der Konsole nach folgendem Schema ein Passwort:
mysqladmin -u root -p password 'IhrNeuesMysqlRootPasswort'\\ Enter password: hier einfach mit Enter bestätigen, da zu Beginn noch kein Passwort gesetzt ist
PhpMyAdmin wird per default in /var/www/phpmyadmin verlinkt. Wenn ihr euch allerdings obige Lighttpd.config
anschaut, werdet ihr feststellen das wir dorthin kein öffentliches oder auch geschützes Verzeichnis legen.
Es bietet sich an phpmyadmin in den verschlüsselten Passwortgeschützten bereich zu schieben.
cp -R /var/www/phpmyadmin /var/www/{domain}/secure/
Euer PhpMyAdmin ist nun per http://secure.domain.de/phpmyadmin erreichbar.
So, nachdem nun alles eingestellt ist könnt ihr euren Lighty neu starten.
/etc/init.d/lighttpd restart
Wenn dieser läuft könnt ihr den Server testen.
Legt dazu folgende Datei an →
nano /var/www/domain/htdocs/test.php
und folgender Inhalt→
<?php phpinfo(); ?>
Das ganze nun speichern.
Check : http://deinedomain.de/test.php
Viel Spaß mit Lighty
Gruß Sven
Zurück zum Index