Inhaltsverzeichnis

Verwante Seiten

Was ist das?

Apache ist der verbreitetste Web-Server.

Original Code stammt von IBM

Fehlerbehandlung

Error 403 - Access denied

Falls beim Seiten aufrufen immer nur der Fehler '403 - Zugriff verweigert' kommt, kann es an den Datei Rechten liegen. Hier mein Workaround:

  1. Root werden:
    sudo bash
  2. In den Account von Apache wechseln. Meistens heisst er 'www-data'
  3. Wechsle in das Root-Verzeichnis:
    # cd /
  4. Von jetzt an wechselst du Schritt für Schritt in die Richtung deines Ziels. Beispiel: Die Homepage liegt im Verzeichnis '/home/hans/meineHomepage/'
    $ cd home
    $ cd hans
    cd: 3: can't cd to user
    $
    

    Hier hast du den ersten Fehler gefunden. Der User 'www-data' kann nicht in das Ziel '/home/hans/meineHomepage/' gelangen. Das gilt auch wenn ein direkter Sprung ($ cd /home/hans/meineHomepage) in's Verzeichnis möglich ist. Es gibt jetzt mindestens drei mögliche Lösungen:

Reverse Proxy - mod_proxy_http

Es kann vorkommen, dass das Modul 'mod_proxy_http' nicht immer geladen wird. Bei Gentoo musste ich es einmal von Hand eintragen: In der Datei /etc/apache2/httpd.conf im Bereich '<IfDefine PROXY>':

<IfDefine PROXY>
LoadModule proxy_module modules/mod_proxy.so


LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so


</IfDefine>

Wenn die URL's dann nicht richtig übersetzt werden, brauchst du noch das Modul da: mod_proxy_html

PHP5

Dieser Abschnitt ist evt. etwas Gentoo-lastig… Vor der Installation von Apache2 oder PHP5 muss in der Datei '/etc/make.conf' das USE-Flag 'apache2' gesetzt sein. Dann kann man 'emerge' arbeiten lassen.

Nach der Installation muss man PHP in der Datei '/etc/conf.d/apache2' PHP5 in der Variable 'APACHE2_OPTS' aktivieren. Die Zeile könnte dann so aussehen:

APACHE2_OPTS="-D PHP5 -D DEFAULT_VHOST -D INFO -D LANGUAGE -D SSL -D SSL_DEFAULT_VHOST"

Zum Schluss noch den Apachen neustarten:

# /etc/init.d/apache2 restart

Sichere Sessions

Um die Sessions aus dem gefärdeten Ordner '/tmp' heraus zu befördern, muss folgendes gemacht werden.

Zuerst muss ein Ordner gefunden oder angelegt werden, wo 'apache' schreibrechte hat. Unter Gentoo wurde der Ordner '/var/cache/apache2' bereits bei der Installation von Apache angelegt.

Jetzt muss die aktive 'php.ini' bearbeitet werden. Im Zweifelsfall folgenden Befehl ausführen:

# echo "<?php phpinfo(); ?>" > /irgendwo/wo/apache/es/ausführt/info.php

Dann die Seite mit einem Browser öffnen und nach 'php.ini' suchen.

In meinem Fall war das diese Datei: '/etc/php/apache2-php5/php.ini'. Mit cat finde ich die Zeile:

# cat -n /etc/php/apache2-php5/php.ini | grep "session.save_path"

Dann öffnete ich die Datei mit dem Befehl:

# nano /etc/php/apache2-php5/php.ini

In 'nano' kann ich die aktuelle Position mit [ Ctrl ] + [ C ] herausfinden (negativer Balken unten in der Konsole). Jetzt muss der Pfad auf den Ordner angepasst werden. meine Zeile sah dann so aus:

... Vorherige Konfigurationen
session.save_path = "/var/cache/apache2"
... Weitere Konfigurationen

Zum Schuss noch die Datei mit der Komination [ Ctrl ] + [ X ] speichern und mit [ Y ] und [ Enter ] bestätigen. Um die Änderungen zu aktivieren muss jetzt Apache nochmals neugestartet werden:

# /etc/init.d/apache2 restart

VHosts

Was VHosts, etwa wie Vendetta? Eher weniger. VHost's oder 'virtual Hosts' erlauben es beliebig/sehr viele Homepages auf einem Server laufen zu lassen.

Technisch gesehen wird mit der HTTP-Header-Information 'Host' unterschieden, welcher VHost zum Zug kommt.

Wo sind die Konfigurationsdateien?

Grundsätzlich: Wo du sie hinlegst.

Bei Debian/Ubuntu liegen sie normalerweise da: '/etc/apache2/sites-available'

Darin findest du auch eine Datei namens 'default'. Die auf keinen Fall löschen, da es sonst zu lustigen/ungewollten Erscheinungen kommt, angefangen bei einem grossen Fehler ;-)

Meine zweite Homepage?

Um eine zweite Seite auf dem Server zu betreiben, muss die alte zuerst in einen VHost verschoben werden und dann ein neuer angelegt werden. Das Anlegen funktioniert so:

  1. In 'sites-available' eine neue Datei mit dem DNS-Namen erstellen. Z.B: 'example.com'
  2. Diese Datei bekommt nun alle Angaben, für die Konfiguration. Das Minimum findest du unten.
  3. Dann erstellst du eine zweite Datei mit dem DNS-Name der zweiten Homepage. Z.B. 'example.net'
  4. Auch diese Datei füllst du mit den entstprechenden Informationen
  5. Zum Schluss muss Apache noch wissen, dass er zwei neue Seiten hat. Dazu gibt es den Befehl 'a2ensite ${DNS-Name]'. Z.B.
    # a2ensite example.com
    # a2ensite example.net
    
  6. Apache überwacht seine Konfiguration nicht aktiv. Darum muss man ihn neustarten
    # /etc/init.d/apache2 restart

    oder neuladen

    # /etc/init.d/apache2 reload

Beispiel-Datei

Das Beispiel zeigt das Minimum. Einen Namen und einen Start-Ordner. Die E-Mail-Adresse wird wegen den vielen Spamern (leider) oft auch weggelassen.

#NameVirtualHost example.com
<VirtualHost *>
	ServerAdmin webmaster@example.com
	ServerName example.com
	ServerAlias example *.example.com
	
	DocumentRoot /var/www/example.com/
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/example.com/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
	
	ErrorLog /var/log/apache2/error.log
	
	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn
	
	CustomLog /var/log/apache2/access.log combined
	ServerSignature On
</VirtualHost>

Fehlerbehebung

SSL

Userdir

# a2enmod userdir 
# /etc/init.d/apache2 restart

Quelle: http://wiki.ubuntuusers.de/Apache#mod-userdir-aktivieren