Apache konfigurieren

« Apache installieren

Jetzt müssen wir den Apache-Server konfigurieren. Das passiert in der Datei '/usr/local/etc/apache/httpd.conf'. Ich werde hier nicht alle Funktionen erklären können, ich biete dir hier eine httpd.conf zum Download an, die ich etwas aufgeräumt habe. Was bzgl. der Sicherheit des Apache noch wichtig ist: Lade nur die Module, die du auch brauchst.

Hier gilt übrigens das gleiche wie bei sicherlich 99% aller Konfigurationsdateien unter FreeBSD: Zeilen, die mit einer '#' angeführt werden, werden ignoriert. Bitte kopiere allerdings nicht diese httpd.conf ohne sie anzupassen. Es sind vielleicht nicht alle Module und Pfade so konfiguriert wie du das willst. Aber du kannst gut davon lernen denke ich!

  • ServerRoot "/usr/local": gibt das Server-Rootverzeichnis an, unter dem der Server installiert ist
  • Listen 10.0.0.1:80: gibt die IP-Adresse und den Port (80) an, auf die der Server hören soll
  • Port 80: gibt den Standardport an, auf den der Apache hört
  • User/Group: gibt Benutzernamen bzw. Benutzergruppe an, unter denen der Apache läuft
  • DocumentRoot "/www/vhosts": gibt das Basisverzeichnis der Webseiten an
  • SSLCertificateFile /usr/local/etc/apache/ssl.crt/server.crt: Pfad zum SSL-Zertifikat
  • SSLCertificateKeyFile /usr/local/etc/apache/ssl.key/server.key: Pfad zur SSL-Schlüsseldatei

Bitte beachte bei diesem Beispiel: Es wird hier klar in SSL-Hosts und "Nicht-SSL-Hosts" unterschieden. Diese sind durch entsprechende Kommentare in Abschnitten abgetrennt. Kurz ein "Nicht-SSL-Host" erklärt:

  • DocumentRoot "/www/vhosts/www.domain2.de": gibt das Basisverzeichnis für die Webseiten an
  • ServerName "www.domain2.de": gibt den Servernamen des virtuellen Servers an
  • ServerAlias www.domain2.de *.domain2.de: gibt die verschiedenen Namen an, auf die der Server reagieren soll. Hierzu gleich noch eine Bemerkung am Ende.
  • ErrorLog /var/log/www.domain2.de/error_log: gibt den Pfad zum Logfile an, in dem Fehler gespeichert werden
  • CustomLog /var/log/www.domain2.de/access_log combined: gibt den Pfad zum Logfile an, in dem Zugriffe protokolliert werden.

Achtung: Die Verzeichnisse unter '/var/log' müssen per Hand erstellt werden. Existieren sie nicht, wird der Apache wohl nicht starten. Achte auch darauf, dass die Inhaber jeweils 'www' bzw. die entsprechende Benutzergruppe des Servers sind.

Noch ein Hinweis zu den ServerAliasen: Der Apache geht die Liste von oben nach unten durch, wenn eine Anfrage an den Server eingeht. Trifft kein Eintrag zu, so wird der erste Eintrag bzw. VirtualHost gewählt. Das musst du bei deiner Konfiguration beachten. Daher habe ich den Server "unknown" eingerichtet.

 

PHP-Konfigurationen über die httpd.conf
Wenn du PHP installieren willst, solltest du dir überlegen, noch ein paar Sicherheitsvorkehrungen zu treffen. Später werden wir zwar in der 'php.ini' einige Einstellungen vornehmen, aber es ist trotzdem geschickter manche Einstellungen für jeden virtuellen Host selbständig vorzunehmen. Das Erhöht die Flexibilität und kann dir viel Ärger ersparen.
Folgende Zeilen solltest du daher für jeden virtuellen Host, der PHP-Skripte ausführen können soll, in der 'httpd.conf' eintragen:

php_admin_flag engine on
php_admin_flag safe_mode on
php_admin_value open_basedir /www/vhosts/www.domain1.de:/usr/local/lib/php
php_admin_value upload_tmp_dir /www/vhosts/www.domain1.de/.tmp
php_admin_value session.save_path /www/vhosts/www.domain1.de/.session

Hier musst du allerdings darauf achten, dass du das "DocumentRoot"-Verzeichnis dann auf bspw. "html" oder "web" oder "htdocs" oder sowas änderst, da hier eine weitere Ebene eingefügt wird. Du willst ja nicht, dass jemand das Verzeichnis "session" öffnen kann über das Web. Ein Beispiel wie das aussieht findest du übrigens auch in meiner Beispiel-httpd.conf-Datei.

Auch hier müssen die Verzeichnisse ".tmp" und ".session" für den Apache schreibbar sein und sollten ihm gehören. Wichtig ist auch, dass du das Verzeichnis "/usr/local/lib/php" mit bei open_basedir einträgst, da sonst nicht auf die PHP-Funktionen zugegriffen werden kann. Weitere Verzeichnisse kannst du entsprechend der Beispielsyntax hinzufügen (also mit ':' getrennt).

Einen persönlichen Rat von mir: Über die beiden ersten php_admin_flags kann man zum einen PHP für einen vHost komplett abschalten (wenn man nur HTML-Dateien anbietet) oder den safe_mode ausschalten. Ich würde den Safe-Mode überall dort ausschalten, wo die gehostete Software nicht damit zurecht kommt. Das steht dann meistens in den Systemvorraussetzungen des entsprechenden Skripts. 

Zend und eAccelerator » 
Einen Kommentar hinzufügen

Einen Kommentar hinzufügen

This is a captcha-picture. It is used to prevent mass-access by robots. (see: www.captcha.net)
Code im diesem Bild:
Ihr Name(*):
Kommentar(*):