Apache

Apache Konfigurationsdatei - httpd.conf -

Die httpd.conf ist die zentrale Steuerungsdatei des Apachen. Erklärungen über die einzelnen Befehle und Sektionen sind unter http://httpd.apache.org/docs-2.0/ nachzulesen.

Es gibt derzeit auch eine gute Übersetzung mit zusätzlichen Erklärungen vom Projekt SELFHTML - sie ist für LINUX und WINDOWS verfügbar.

Hinweis: Nach jeder Änderung in der httpd.conf den Apachen neu starten lassen.

Apache nur lokal

Damit der Apache nicht mehr aus dem Netzwerk/Internet erreichbar ist, reicht es aus, folgende Direktive in der httpd.conf von

Listen 80

auf

Listen 127.0.0.1:80

zu ändern. So kann der Apache nur noch über die IP-Adresse 127.0.0.1 bzw. “localhost” erreicht werden.

Umlautdomains

IDNA ist ein Internetstandard, um Domains, die Nicht-ASCII-Buchstaben enthalten, als gültige ASCII-Strings im Domain Name System abzubilden. Einen solchen Domainnamen bezeichnet man als IDN oder auch Umlautdomain. Zum Beispiel schöner-frühling.de oder bäckerei-müller.de.

Am Apache selbst müssen dafür keine Änderungen vorgenommen werden. Es muss nur darauf geachtet werden, dass der Domainname mit Punycode konvertiert ist. Der Browser (Firefox/IE etc.) muss es jedoch unterstützen!

Aus bäckerei-müller.de wird dann xn–bckerei-mller-bfb28a.de und aus schöner-frühling.de wird dann xn–schner-frhling-xpb6h.de.

TIPP: Für das schnelle Testen, ob es wie gewünscht funktioniert, einfach 127.0.0.1 xn–schner-frhling-xpb6h.de in die Datei hosts (Linux) eintragen und im Browser schöner-frühling.de eingeben. Jetzt sollte ganz normal “localhost” zusehen sein.

Ein Virtualhost für schöner-frühling.de könnte also wie folgt aussehen:

<VirtualHost *:80>
  ServerName xn--schner-frhling-xpb6h.de
  DocumentRoot /opt/lampp/htdocs/
  ServerAdmin webmaster@xn--schner-frhling-xpb6h.de
</VirtualHost>

Dazu folgender Link: Unicode/Punnycode Converter für Domainnamen mit Umlauten oder Sonderzeichen

Michael Kremsier 2007/07/04 18:39

PHP pro Vhost abstellen

Um PHP für einzelne Vhost zu deaktivieren, muss PHP als Apache Module installiert sein! Fügt dazu im jeweiligen Vhost diese Zeile ein:

php_admin_value engine off 

Das könnte dann wie folgt aussehen:

<VirtualHost *:80>
   ServerName example.de
   DocumentRoot /opt/lampp/vhosts/exmaple.de
   ServerAdmin webmaster@example.de
   php_admin_value engine off
</VirtualHost>

Michael Kremsier 2007/07/04 19:26

Windows

Fehlermeldungen

could not bind to address 0.0.0.0:80/could not bind to address 0.0.0.0:443

Diese Fehlermeldung bedeutet, dass der Port 80/443, auf dem der Apache standardmäßig läuft, schon von einer anderen Anwendung belegt wird. Dies kann ein anderer Apache, der IIS, die interne Firewall von XP oder ähnliches sein.

Einige weitere bekannte Programme, welche Probleme verursachen können, sind:

  • Netlimiter
  • ZoneAlarm ⇒ Hinweismeldung
  • manche Versionen von McAfee ⇒ Hinweismeldung
  • Kasperski Antivirus Programm - Guardian ⇒ Hinweismeldung
  • XP AntiSpy
  • WebcamXP (besitzt einen Webclient, der per default auf port 80 läuft)
  • ArGoSoft Mail Server (nutzt einen integrierten Webserver auf Port 80)
  • Peer2Peer Software mit integriertem Webfrontend (z.b. eMule und dessen Modifikationen / kaZaa)
  • AOL-Zugangsoftware (aus noch nicht verständlichen Gründen blockiert die Software Port 443) ⇒ Problemlösung

Um herauszufinden, welche Anwendung den Port blockiert, kannst du das Tool “netstat”, welches zu Windows gehört, benutzen.

  1. öffne eine Eingabeaufforderung
  2. führe folgendes Kommando aus: netstat -a -n -o
  3. suche die Zeile, in der die zweite Spalte (Lokale Adresse) mit “:80” oder “:443” endet (z.B. “0.0.0.0:80”).
  4. von dieser Zeile merkst du dir die Zahl in der letzten Spalte (PID)
    1. im Taskmanger kannst du jetzt nachschauen, welcher Prozess diese PID hat.
    2. oder (ab XP Pro, nicht XP Home) du benutzt das Kommando (foo ist die gemerkte Zahl): tasklist /fi "PID eq foo"

Beispiel (gekürzte Ausgabe):

C:\>netstat -a -n -o

Aktive Verbindungen

  Proto  Lokale Adresse         Remoteadresse          Status           PID
  TCP    0.0.0.0:443             0.0.0.0:0              ABHÖREN         1392

C:\>tasklist /fi "PID eq 1392"

Abbildname                  PID Sitzungsname      Sitz.-Nr. Speichernutzung
========================= ===== ================ ========== ===============
skype.exe                  1392 Console                   0         3.144 K

C:\>

Diese Schritte kann man auch mit in einer einzelnen Batch-Datei zusammenfassen (das ist für den Laien auch etwas übersichtlicher).

Dazu muss der folgende Code in eine leere Text-Datei kopiert werden. Nach dem Umbenennen in eine Batch-Datei (zum Beispiel httpports.cmd) kann diese ausgeführt werden und zeigt die Belegung der Ports 80 und 443 an.

@echo off
setlocal
echo.
echo   ****************************
echo   *                          *
echo   *    XAMPP-Port-Checker    *
echo   *                          *
echo   ****************************
echo   *
echo   *
for /F "usebackq skip=4 tokens=2,5" %%i IN (`netstat -a -n -o`) DO (
if "%%i"=="0.0.0.0:80" (
if not "%%j"=="" for /F "usebackq skip=3" %%l IN (`tasklist /fi "PID eq %%j"`) DO (
echo   *   --^> Port 80 wird von der Anwendung "%%l" belegt
set port80=found
))
if "%%i"=="127.0.0.1:80" (
if not "%%j"=="" for /F "usebackq skip=3" %%l IN (`tasklist /fi "PID eq %%j"`) DO (
echo   *   --^> Port 80 wird von der Anwendung "%%l" belegt
set port80=found
))
if "%%i"=="0.0.0.0:443" (
if not "%%j"=="" for /F "usebackq skip=3" %%l IN (`tasklist /fi "PID eq %%j"`) DO (
echo   *   --^> Port 443 wird von der Anwendung "%%l" belegt
set port443=found
))
if "%%i"=="127.0.0.1:443" (
if not "%%j"=="" for /F "usebackq skip=3" %%l IN (`tasklist /fi "PID eq %%j"`) DO (
echo   *   --^> Port 443 wird von der Anwendung "%%l" belegt
set port443=found
))
)
if not "%port80%"=="found" echo   *   --^> Port 80 ist derzeit *NICHT* belegt
if not "%port443%"=="found" echo   *   --^> Port 443 ist derzeit *NICHT* belegt
echo   *
echo   *
echo   *********** ENDE ***********
echo.
pause > NUL

Bei Linux ist ein ähnliches Verfahren möglich

  1. netstat -a -n -p Es erscheint eine Liste, die in zwei Sektionen unterteilt ist.
  2. aus der ersten Sektion die Zeile suchen, die in dritter Spalte folgendes aufweist :80 / :443
  3. von dieser Zeile in der letzten Spalte die PIDnummer merken (z.b.2101/apache2)
  4. mit ps -aux |grep PIDnummer erhält man die Info, welches Programm das ist.

Beispiel (gekürzte Ausgabe):

netstat -a -n -p

tcp   0  0 127.0.0.1:782     0.0.0.0:*    LISTEN     1454/famd
tcp   0  0 0.0.0.0:111       0.0.0.0:*    LISTEN     1231/portmap
tcp   0  0 0.0.0.0:80        0.0.0.0:*    LISTEN     2101/apache2

ps -aux |grep 2101

root   2101  0.0  2.6 22924 6796 ?   Ss   00:00   0:00 /usr/sbin/apache2 -k start -DSSL

Hiermit erfährt man, dass schon ein Apache im System läuft und daher der XAMPP nicht starten will.

phpinfo() phpmyadmin = ModName: sarah.dll, ModVer: 3.5.11.2001, Offset: 00003d02

Beim Aufruf des phpinfo() / phpmyadmin kann es zu einem abrupten Ausfall des Apachen kommen. Genaue Fehlermeldung: Apache HTTP Server hat ein Problem festgestellt und muss beendet werden. AppName: apache.exe, AppVer: 2.0.54.0, ModName: sarah.dll, ModVer: 3.5.11.2001, Offset: 00003d02.

Dieses Problem erscheint nur bei Usern, die eine Fritz-BOX DSL-Modem von AVM benutzen.

Die installierte Steuerungssoftware von AVM richtet eine sarah.dll ein, die für Routingabfragen zuständig ist.

Es wurde festgestellt, dass beim Betreiben der Fritz-BOX über den LAN-Anschluss diese Software nicht installiert werden muss.

Beim Benutzen der Fritz-Box über den USB Anschluss liegt weiterhin der Fehler vor. AVM selbst hat bisher noch keine eindeutige Aussage zu diesem Problem getroffen.

SKYPE Problemlösung:

In den Einstellungen von Skype den sogenannten Alternativport 80 deaktivieren. Dadurch wird der Skypestandard-Port xxxx freigegeben. Bitte das Deutsche Skype Forum besuchen, da dort hinreichende Hilfe nur über Skype zu finden ist. Deutsches Skype Forum

Ansonsten einfach zuerst den XAMPP und dann den Skype starten, dann sollte es auch gehen.

AOL Problemlösung:

Es wurde berichtet, dass AOL den Port 443 blockiert, daher zuerst den XAMPP starten und dann erst die AOL-Software.

ZoneAlarm Hinweis:

Der ZoneAlarm blockiert bei nicht vollständiger Konfiguration alle Ports, so dass XAMPP nicht läuft.

  • Bei ZoneAlarm 4.5.594.000: läuft ohne Probleme, sofern richtig konfiguriert.
  • Bei ZoneAlarm 5.0.590.043: html werden nur unvollständig angezeigt, viele Bilder nicht geladen (IE *und* Firefox)
Kasperski Hinweis:

Beim Kasperski-Antivirus-Programm wird der “Guardian” gestartet, dieser blockiert den Port 443. Laut den Programmierern von Kasperski sollte es nicht vorkommen, aber viele Tests bestätigen, dass der Guardian deaktiviert werden sollte, wenn man XAMPP starten will.

McAfee Hinweis:

Ab Version 8 des McAfee sollte das Problem behoben sein.

Linux

Laufen ASP Seiten mit dem Apache2 von XAMPP?

Hier muss man unterscheiden. Die benutzte Scriptsprache für ASP auf einem IIS ist normalerweise VBScript oder JScript. Dieses funktioniert auf dem Apache nicht. Also heißt es erst einmal “nein”, was die direkte Übernahme solcher Seiten angeht.

Man kann auf dem IIS aber auch PerlScript in ASP Seiten einsetzen. Im Zusammenspiel mit mod_perl und dem Perl Modul “Apache::ASP” sind solche ASP Seiten auch auf dem Apache möglich. Dazu musst du das Perl-AddOn vom XAMPP installiert haben.

Eng verwandt, aber nicht das Selbe, ist “ASP.NET”. Hierzu gibt es zwei Projekte die sich damit beschäftigen:

/opt/lampp/bin/XXX: /lib/libc.so.6: version `GLIBC_2.2' not found (required by XXX)

Grund: das Linux-System ist leider zu alt. Theroretisch könnte man zwar ein XAMPP zusammenstellen, dass auch auf diesen Systemen läuft, nur würde das den Umfang von XAMPP für Linux sprengen.

Keine Verbindung zu XAMPP für Linux vom LAN oder INET

Das kann mehrere Gründe haben ...

Bei den jetzigen Distribution wie SuSE 9.x; Fedora (RedHat); Mandrake 10.x; Debian Sarge 3.x (Full-CD/DVD Install) wird standardmäßig eine Firewall aktiviert, die nur Zugriffe auf localhost-Basis zulässt. Diese Firewall dementsprechend konfigurieren, sodass Port 80 (HTTP Port) freigegeben ist.

Je nach Aufbau des eigenen Internetzuganges muss entsprechend der Geräte ein sogenanntes PORTFORWARD eingerichtet werden damit die http://-Abfragen auch auf den PC, wo XAMPP for Linux läuft, geschickt werden und dementsprechend beantwortet werden können.

Siehe dazu auch den Wiki-Eintrag für “XAMPP erreichbar aus dem Internet

Kleine HTTPD.CONF Hilfen

Linux: Um die Dateiendung “.php5” (”.php” ist Standard) auch auszuführen, muss die Datei “/opt/lampp/etc/extra/httpd-xampp.conf” angepasst werden.

     26     # since LAMPP 1.0RC1
     27     AddType application/x-httpd-php .php .php3 .php4 .php5

Um “index.php5” automatisch auszuführen, muss die “/opt/lampp/etc/httpd.conf” verändert werden.

    248     #DirectoryIndex index.html
    249     # XAMPP
    250     DirectoryIndex index.html index.html.var index.php index.php3 index.php4 index.php5

Listen Port ändern

Wer seinen XAMPP dazu bringen möchte, dass dieser nicht auf dem Standard-Port 80 laufen soll, muss in der httpd.conf den Listen 80 Befehl entsprechend ändern.

Man bedenke, dass bei einer solchen Änderung der XAMPP nicht wie gewohnt unter http://localhost zu erreichen ist, sondern unter http://localhost:PORTnummer

Dazu gibt es auch die Möglichkeit, den Standard-SSL-Port (https) zu ändern. Im XAMPP Paket wird dafür die ssl.conf benötigt (ist in der httpd.conf per -include- eingebunden). In dieser ssl.conf kann man den Listen 443 wie gewünscht ändern.

Auch hier gilt der Aufruf abweichend vom Standard https://localhost:SSLPORTnummer

VHOSTs Grundaufbau WIN

Ausgehend von der Grundinstallation des XAMPPs (wiki-Beitrag = XAMPP 1.5.1-pl1 für Windows)

FIXME –> Anmerkung: Dieses Beispiel beinhaltet das Abschalten des XAMPP-Willkommenscreens!

Lösungsweg: Es muss nur der erste VHOST-Eintrag oder ein zusätzlicher VHOST eingebaut werden, der auf das “XAMPP DocumentRoot” eingerichtet ist.

Konzeptionelles:

Es sollen drei DomainDummys verwaltet werden, diese DomainDummys sollen auch auf unterschiedliche Verzeichnisse zugreifen. Unter DomainDummys könnt ihr euch das Prinzip des DynDNS-Namens annehmen.

Somit gilt folgende Beispielregel:

  • domaindummy.dyndns.org = Funktionierender Hauptdomainname

(im DynDNS-Account die “WildCards” einschalten!)

  • forum.domaindummy.dyndns.org = hiermit soll später ein Forum direkt abrufbar sein.
  • familie.domaindummy.dyndns.org = falls ihr mal eine Page habt wo eure Familie zu sehen ist.

Vorarbeit:

Erstelle dir drei Verzeichnisse innerhalb eines eindeutigen Verzeichnisnamens (es können auch andere Partitionen benutzt werden, aber keine Netzlaufwerke!)

  • c:\webseiten\server
  • c:\webseiten\forum
  • c:\webseiten\familie

In jeweils diese Verzeichnisse legst du deine PageCodes hinein die man ja sehen darf.

Vorarbeit die zweite (XAMPP-Apache vorbereiten):

1) Editiere die httpd.conf und suche nach dem Eintrag

#Include conf/extra/httpd-vhosts.conf<code> und entferne die Raute (" # ") davor, danach abspeichern. (Ab XAMPP 1.5.3a nicht mehr nötig)

2) nun die ''httpd-vhost.conf'' im Verzeichnis ''\xampp\apache\conf\extra'' editieren und folgendes komplett von hier kopieren und in die Datei einfügen (COPY/PASTE)

<code>
NameVirtualHost *:80

<VirtualHost *:80>
    ServerName domaindummy.dyndns.org
    ServerAlias www.domaindummy.dyndns.org
    ServerAdmin webmaster@localhost
    DocumentRoot c:/webseiten/server
    <Directory "c:/webseiten/server">
        AllowOverride All
        Options IncludesNoExec
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName forum.domaindummy.dyndns.org
    ServerAlias www.forum.domaindummy.dyndns.org
    ServerAdmin webmaster@localhost
    DocumentRoot c:/webseiten/forum
    <Directory "c:/webseiten/forum">
        AllowOverride All
        Options IncludesNoExec
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName familie.domaindummy.dyndns.org
    ServerAlias www.familie.domaindummy.dyndns.org
    ServerAdmin webmaster@localhost
    DocumentRoot c:/webseiten/familie
    <Directory "c:/webseiten/familie">
        AllowOverride All
        Options IncludesNoExec
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Speichern, Apache (neu)starten, jetzt sollten die konkreten HTTP-Anfragen (siehe domainamen) in die richtigen Verzeichnisse geleitet werden und einsehbar sein. Ich gehe davon aus, dass ihr verstanden habt, dass es sich hierbei um Beispielnamen handelt, dementsprechend eure Daten (Wunschverzeichnisse) eintragen.

Prinzipielles:

Alles was nun nicht mehr vom XAMPP-Apachen durch eine Anfrage aus dem WWW beantwortet werden kann, wird nun vom allerersten VHOST eintrag beantwortet. Das bedeutet, wenn jemand http://gibtsnicht.domaindummy.dyndns.org in seinem Browser eintippt, wird er nur auf das Verzeichnis des ersten VHOST geleitet. Das kommt daher, weil der Apache nun die Anfrage nicht auflösen kann. (logisch)

Mit anderen Worten, den ersten VHOST kann man als “Mutter aller Abfrage” bezeichnen, die sich meldet, sobald der Apache mit einer Anfrage nichts anfangen kann.

Für diejenigen, die das ganze auch im heimischen LAN so benutzen wollen, sei angemerkt, dass man die HOSTS-Datei eines jeden Windows-PCs im LAN editieren muss, da ein Aufruf im Browser auf den domaindummy.dyndns.org nicht funktioniert.

FIXME http://www.apachefriends.org/f/viewtopic.php?p=72083#72083 (hosts datei)

Das kleine Einmaleins für zusätzliche Funktionen:

<VirtualHost *:80>
    ServerName domaindummy.dyndns.org
    ServerAlias www.domaindummy.dyndns.org
    ServerAdmin webmaster@localhost
    DocumentRoot c:/webseiten/server
    <Directory "c:/webseiten/server">
        AllowOverride All
        Options +Indexes IncludesNoExec  # Das +Indexes veranlasst den Apache, das Verzeichnis aufzulisten, wenn keine index.html/php vorhanden ist.
        AllowOverride All # Veranlasst den Apachen, auch .htaccess Anweisungen zu beachten (z.b. Passwortschutz)
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

.htaccess und .htpasswd Passwortschutz erstellen bei XAMPP für Windows

Erstelle mittels eines Texteditors eine Datei mit dem Namen " auth.txt " in dem Webverzeichnis, das geschützt werden soll, mit folgendem Inhalt:

AuthType Basic
AuthName "Passwortschutz"
AuthUserFile ./.htpasswd

require valid-user
<Limit GET,POST,PUT>
	Order allow,deny
	Allow from all
	Deny from none
</Limit>

Nun öffne ein COMMANDFENSTER (genannt auch Eingabeaufforderung / Terminalfenster).

START –> AUSFÜHREN =⇒ cmd

Es öffnet sich ein Fenster mit schwarzem Hintergund.

cd c:\apachefriends\xampp\apache\bin (Hierbei eure Pfade annehmen !)

htpasswd.exe -c c:/apachefriends/xampp/htdocs/webseitenpfad/.htpasswd USERNAME

Jetzt wird nach einem Passwort gefragt und dann dauert es bis zu 60 Sekunden und die .htpasswd ist fertig geschrieben.

Zu guter letzt noch die " auth.txt " umbenennen hier im COMMANDFNESTER, weil der Dateiexplorer die punkt-vorgabe nicht annimmt, also folgendes:

cd c:\apachefriends\xampp\htdocs\webseitenpfad

ren auth.txt .htaccess

Jetzt kann man das COMMANDFENSTER schließen und der Passwortschutz ist eingerichtet.

 
apache.txt · Zuletzt geändert: 2009/11/13 10:49 von magna
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki