~~NOCACHE~~ ~~META: date issued = 2009-09-09 ~~ {{tag>webserver httpserver apache linux heiko_teichmeier glauchau sachsen}} ===== Tipp HTTP-Server (1) ===== __letzte inhaltliche Überarbeitung:__ 09.09.2009 ===== 1. Apache - DER HTTP-Server in der Linux (und Windowswelt) - Teil 1 ===== ==== 1.1. Allgemeine Beschreibung ==== [[https://www.apache.org|Apache]] ist ein kompletter und sehr komplexer HTTP-Server der mittels Modulen und Plugins um zusätzliche und neue Eigenschaften erweitert und ergänzt werden kann. Dieser Server läuft hinter 60-70% aller Internet-Seiten da er sich im Laufe der Zeit durch ständige Code-Pflege und viele Patches //(this is a patchi Server)// eine hervorragende Stabilität und Anpassbarkeit an die verschiedensten Einsatzszenarien erworben hat. Das Programm ist für Linux kostenlos und Open-Source. Darüberhinaus gibt es Versionen für MS-Windows ab NT, NovellNetware, HP MPE/iX, UnixWare und TPE. ==== 1.2. Installation ==== Ich habe //Apache// einfach von der CD meiner Distribution bzw. aus dem Internet als RPM-Paket installiert. Dabei sollte man wieder beachten -> im Internet nach Updates zu suchen und diese dann auch einzuspielen [[..:linux-grundlagen:tipp_linuxgrundlagen_01#1.6.3 Update von RPM-Paketen|Tipp Linux-Grundlagen (1)>(RPM-Pakete updaten)]]. Heutzutage wird dies durch die Softwareverwaltung bzw. den SW-Paketmanager im Rahmen der regelmäßigen Updates erledigt. **Beachte:** sobald ihr eine neue Version des Apache-Servers einspielt oder darauf upgradet, müssen auch die dazu gehörigen Module eingespielt (erneuert) werden. Heutzutage wird dies durch die Softwareverwaltung bzw. den SW-Paketmanager erledigt. ==== 1.3. Konfiguration ==== Die (Haupt-)Konfigurationsdatei von Apache heißt **//httpd.conf//** und liegt unterhalb von **///etc/httpd//**. Die Konfigurationsoptionen werden meist in Form von **//Option Wert//** angegeben. Zusätzlich gibt es Abschnitte die von **//Start- und End-'Tags'//** eingeschlossen sind. Alle dazwischen liegenden Optionen und Einstellungen gelten für //dieses (von den 'Tags' eingeschlossene) Objekt//. Das folgende Beispiel zeigt einen solchen Abschnitt (die Hochkommas dienen nur zum Sichtbarmachen der 'Tags'). Darin wird bestimmt, das nur **//wenn SSL definiert ist//** die darin enthaltenen Optionen ("lauschen" an Port 80 und 443) wirksam werden. Listen 80 Listen 443 Im nächsten "Abschnitt" werden Optionen für das Root-Verzeichnis ("/") des Servers festgelegt: * Die Datei für User-Authentifizierung ist **///etc/httpd/passwd//** * Die Datei für Gruppen-Authentifizierung ist **///etc/httpd/group//** * Optionen: * **//Symlinks darf gefolgt werden//** * **//Multiviews sind erlaubt//** * (weiß ich nicht so genau was das ist) * Die Berechtigungen für das Verzeichnis dürfen **//nicht//** von //.htaccess-Dateien// geändert oder überschrieben werden AuthUserFile /etc/httpd/passwd AuthGroupFile /etc/httpd/group Options +FollowSymLinks +Multiviews AllowOverride None Die HTML-, Bild- und Script(CGI)-Dateien liegen im Normalfall in Unterverzeichnissen von **///usr/local/httpd//**. Bei **SuSE 8.1** wurde dieser **Pfad geändert**. Neuerdings findet man das Apache-root-Verzeichnis unter **///srv/www//**. === 1.3.1 Bedeutung der Konfigurationsoptionen === Nachfolgend werde ich versuchen die wichtigsten Optionen zur Konfiguration von Apache in Ihrer Bedeutung zu erklären, oder zumindest zu übersetzen. Die meisten Einstellungen kann man so übernehmen, wie es von der SuSE-Installation vorgegeben wurde. Die wenigen Werte die ich geändert oder angepasst habe markiere ich in der folgenden Liste ROT. ^ ServerType | //inetd// | - inetd nur auf Unix-Systemen verfügbar (Server wird bei Anfragen an den Server-Host über inetd gestartet) | | ::: | //standalone// | - standalone (Defaultwert; für uns geeignet) | ^ ServerRoot | //"/usr/local/httpd"// | //Wurzelverzeichnis// in dem die darzustellenden Dateien (cgi-Skripte, HTML-Seiten, Bilder) dieses Servers liegen;\\ für virtuelle Server werden eigene //Root-Verzeichnisse// festgelegt | ^ LockFile | //[Pfad/Name]// | Pfad und Namen der //"Lock-Datei"//\\ hier werden Zugriffe auf Dateien aufgezeichnet und diese Dateien teilweise gesperrt (speziell beim Schreiben darauf) | ^ PidFile | //[Pfad/Name]// | In diese Datei wird beim Start des Servers die //ProzessID// des Serverprozesses geschrieben | ^ ScoreBoardFile | //[Pfad/Name]// | In diese Datei werden vom laufenden Server interne //ProzessInformationen// geschrieben (zwei getrennte Serverinstanzen sollten nicht auf ein und dieselbe Datei zugreifen!!!) | ^ Timeout | //300// | Anzahl von Sekunden, bevor der Empfang bzw. Versand von Seiten mit einem Timeout beendet wird. | ^ KeepAlive | //On// | | ^ MaxKeepAliveRequests | //100// | | ^ KeepAliveTimeout | //15// | | ^ MinSpareServers | //1// | Festlegung einer Mindestanzahl an aktiven Serverprozessen,\\ für stark frequentierte Sites sollte man diese Zahl höher setzen,\\ bei **SuSE 8.1** wird dieser Wert durch //SuSEconfig// entsprechend dem Wert der Variablen //HTTPD_PERFORMANCE// in ///etc/sysconfig/apache// gesetzt. | ^ MaxSpareServers | //1// | s.o. => Maximale Anzahl Server | ^ StartServers | //1// | Anzahl der beim Systemstart zu startenden Server => Variable s.o. | ^ MaxClients | //150// | Erlaubte maximale Anzahl gleichzeitig anfragender Clients => Variable s.o. | ^ MaxRequestsPerChild | //0// | | ^ Listen 192.168.100.50:80 | | Auf welche IP-Adresse:Port (außer Standard) lauscht Apache;\\ auf jeder neuen Zeile kann man weitere //Listen IP:Port//-Kombinationen angeben;\\ anpassen an Virtuelle Domains;\\ wenn hier nicht eingeschränkt lauscht Apache auf alle eingehenden IP's und den Default-Port | ^ Listen 192.168.100.50:443 | | ::: | ^ Listen 192.168.100.51:80 | | ::: | ^ Listen 192.168.100.51:443 | | ::: | ^ Listen 192.168.100.52:80 | | ::: | ^ Listen 192.168.100.52:443 | | ::: | ^ Port | //80// | Standardport auf dem Apache lauscht (irgendeine IP) | ^ | //[Optionen]// | Wenn SSL definiert ist, dann ... => [Optionen], im o. g. Beispiel: lauschen auf Port 80 und 443 | | ::: | //[Optionen]// | ::: | | ::: | //[Optionen]// | ::: | ^ User | //wwwrun// | User und Gruppe unter denen Apache laufen soll (als root laufen lassen bedeutet ein hohes Sicherheitsrisiko) | ^ Group | //nogroup// | ::: | ^ ServerAdmin | //webmaster@meine-domain.de// | Mail-Adresse wird bei Error-Seiten mit angezeigt; bei **SuSE 8.1**mithilfe von HTTPD_SEC_SERVERADMIN in ///etc/sysconfig/apache// gesetzt | ^ ServerName | //mein-intranet.meine-domain.de// | Name unter dem der HTTP-server ansprechbar sein soll | ^ DocumentRoot | ///srv/www/htdocs// | Verzeichnis mit den anzuzeigenden HTML-, PHP- und anderen Dateien. | ^ | //[Optionen]// | Hier werden für alle von Apache benutzten Verzeichnisse grundlegende Sicherheitsrichtlinien festgeschrieben.\\ Soll später ein Verzeichnis anders (legerer) behandelt werden, muß speziell für dieses oder ein übergeordnetes die Restriktionen gelockert werden. | | ::: | //[Optionen]// | ::: | | ::: | //[Optionen]// | ::: | ^ AuthUserFile | //[Pfad/Name]// | Pfad und Name einer Username-Passwort Datei zur Berechtigungsprüfung | ^ AuthGroupFile | //[Pfad/Name]// | Pfad und Name einer Group:Username-Datei zur Berechtigungsprüfung | ^ Options | //-FollowSymlinks// | **"-"** Minus bedeutet so viel wie **"Nein"**, **"+"** Plus das Gegenteil; => Folge symbolischen Links nicht! | ::: | //+Multiviews// | ::: | ^ AllowOverride | //None// | Durch eine .htaccess-Datei mit entsprechend gesetzten Berechtigungen, können die global festgelegten Limitierungen **nicht** umgangen werden (für dieses Verzeichnis) | * auf welchem **Port** werden Verbindungen erwartet (standardmäßig für HTTP Port 80, HTTPS Port 443) * auf welcher **IP-Adresse** werden Verbindungen erwartet (standardmäßig die IP-Adresse der entsprechenden Netzwerkkarte - intern oder/und extern; bei virutellen Domains die der jeweiligen Domain zugeordnete - und auch vorher konfigurierte!!!) * auf welchen **Namen** hört der Server * **Mailadresse des Webmasters** - erscheint als Link auf Fehlerseiten ... der Installation des Apache-HTTP-Servers, muß man in der Datei **//"/etc/httpd/httpd.conf"//** noch so einiges anpassen. Hier könnt ihr meine "/etc/httpd/httpd.conf" herunterladen oder einfach mal so reinschauen. Sobald ich noch etwas Zeit finde baue ich meine Konfigurationtips noch etwas aus. Bis dahin bitte ich euch um etwas Geduld. Die wichtigsten Teile habe ich mal an das Ende der Datei geschrieben. Hierbei handelt es sich um "include-Anweisungen" mit denen man andere Konfigurationsdateien in die große einbinden kann. Das habe ich mit meinen virtuellen Domains so gemacht. Damit ich alles auf einem Haufen und auch etwas übersichtlich habe, habe ich alle Angaben für diese (IP-basierten) virtuellen Domains in extra Konfigurations-Dateien zusammen gefasst. Hier habe ich aber noch kein extra SSL-Zertifikat für jede Domain erstellt, geschweige denn eingebunden. Hier nur der Übersichtlichkeit halber diese Einbindung der Include-Dateien, da die Datei "httpd.conf" doch sehr lang ist: Include /etc/httpd/suse_include.conf ############################################# # Einbinden von virtuellen Hosts/Domains # ############################################# Include [[..:..:downloads:apache:www.sw-meerane.de:httpd.conf|/etc/httpd/www.sw-meerane.de/httpd.conf]]\\ Include [[..:..:downloads:apache:swm-intranet:httpd.conf|/etc/httpd/swm-intranet/httpd.conf]]\\ Include [[..:..:downloads:apache:www.tei-lin-net.de:httpd.conf|/etc/httpd/www.tei-lin-net.de/httpd.conf]]\\ Include [[ ..:..:downloads:apache:test-site:httpd.conf|/etc/httpd/test-site/httpd.conf]]\\ ### Vorlage - nur noch die /your-domain/httpd.conf anpassen # Include /etc/httpd/your-domain/httpd.conf [<>] ~~DISQUS~~