Seminarinhalt
Jede*r Teilnehmer*in erhält mehrere Linux VMs (SUSE, Red Hat und Debian) und hat die Möglichkeit das erlernte Wissen auf allen Plattformen zu testen.
Programm
- Aufbau eines (X)HTML Dokumentes
- Funktionsweise des HTTP-Protokolls
- HTTP Request und HTTP Responce im Detail
- HTTP Methoden
- HTTP Header Felder
- HTTP Status Codes (1xx, 2xx, 3xx, 4xx, 5xx)
- Common Gateway Interface (CGI)
Apache Webserver Grundlagen
- Apache Versionen und Linux Distributionen
- Funktionserweiterungen durch Apache Module
- Apache Portable Runtime (APR)
- Apache Multiprocessing Module (MPM)
Apache HTTP Server Grundkonfiguration
- Installation auf SUSE, CentOS und Debian
- Aufbau der Konfigurationsdateien
- Unterschiede beim Verzeichnislayout auf SUSE, CentOS und Debian
- Gängige Directiven in der httpd.conf, apache2.conf
- Apache Verwaltungsprogramme
- httpd, apachectl, ab, htpasswd, logresolve, rotatelogs,...
- a2enmod, a2dismod, a2ensite, a2dissite, a2enflags
- DocumentRoot und Dateirechte
- Listen Directive und IPv4 und IPv6 Konfiguration
- Verzeichniseinstellungen mit Options konfigurieren
- Indexes, FollowSymLinks, SymLinksIfOwnerMatch, Multiviews, ...
- Flexible Konfiguration mit if-Directiven (IfDefine, IfModule, If expression)
- URL Rewriting mit mod_alias
- Alias, ScriptAlias
- Redirect
- Container Direktiven
- Directory, Files, Location
- DirectoryMatch, FilesMatch, LocationMatch
- Dezentrale Verwaltung mit .htaccess Dateien
Einbinden und konfigurieren von zusätzlichen Apache Modulen
- mod_php, mod_status, mod_info, mod_dir, mod_autoindex, mod_userdir, mod_negotiation, mod_ssl, mod_vhost_alias, mod_alias, mod_redirect
Einrichten von Virtual Hosts auf Apache
- Port basierend
- IP-basierend
- Namens-basierend
- Alias-basierend
- Default Virtual Host (_default_:*)
- Massenhosting mit mod_vhost_alias
- Unterschiede auf SUSE, RHEL und Debian
Apache und Sicherheitseinstellungen
- Zugriff auf Webserverbereiche einschränken mit
- mod_access_compat (Allow, Deny, Order, Satisfy)
- mod_authz_core (Require, RequireAll, RequireAny, RequireNone)
- Absicheren von Webseiten mit Benutzerauthentifizierung
- Praktisches Beispiel mit der Apache Benutzer Datenbank (mod_auth_basic, mod_authn_file, mod_authz_user, mod_authz_groupfile)
- Theorie: Varianten mit LDAP, Kerberos, usw. (mod_authnz_ldap, mod_ldap, mod_auth_mysq, mod_auth_kerb)
- SELinux Einstellungen (Apache spezifische SELinux File Types, fcontext, port, booleans,...)
- Einschränken des Apache Servers Footprint (ServerSignature, ServerTokens, X-Content-Encodes-By, X-Powered-By,...)
- Secure Socket Layer (SSL)
- Verbindungsaufbau via HTTPS im Detail
- Erstellen von Server Zertifikaten mit openssl
- Einbinden der Zertifikatsdateien in SUSE, CentOS und Debian
- VHOST durch SSL absichern
- Automatischer Redirect von Port 80 auf 443
- Apache SSL Einstellungen für erhöhte Sicherheit (SSLProtocol, SSLCipherSuite,...)
- PHP Integration
- PHP Installation auf SUSE, CentOS und Debian
- Apache PHP Integration testen
Apache Logging und Troubleshooting
- Apache Server Auslastungsstatus bereitstellen mit mod_status
- Apache Server Konfigurationsstatus bereitstellen mit mod_info
- Apache Logging Konfiguration mit mod_log_config
- Logformat
- Aufbau der StandardLog Formate (common, combined)
- Log Datei Variablen im Detail
- Definieren von eigenen Log Formaten
- CustomLog Konfiguration
- ErrorLog Konfiguration
- Apache Modul spezifisches anpassen des LogLevel
- Rotieren der Logdateien
- Auswertungsprogramme für das Apache Access Log
- Programme im Überblick (apachetop, Apache Log Viewer, Webalizer, awstats, Kibana,...)
- Live Analyse mit apachetop
- Grafische Auswertung mit Awstats
Apache Webserver Tuning
- Grundlagen Ressourcenbedürfnisse von Webservern (CPU, Disk I/O, Memory, Threads, Connections, ...)
- Empfohlene Analysewerkzeuge wie ab, PageSpeed Insights, Browser Developer Tools, Apache JMeter im Überblick
- Web Content komprimierung mit mod_deflate und mod_filter
- Definieren von Web Crawler Einstellungen mit einer robots.txt
- Apache Multiprozessing Module (mod_prefork, mod_event, mod_worker)
- Grundlagen Prozesse und Threads
- Tuning Einstellungen der MPM Module
- Persistent Connection und KeepAlive Einstellungen
Zielgruppen
Vorkenntnisse
Es sind keine Web Programmierkenntnisse erforderlich!