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:

  • Die Dateirechte anpassen. Genauergesagt: entweder allen Recht geben, den Ordner aufzulisten (# chmod 755 /home/hans) oder den User 'www-data' der Gruppe von hans, meistens heisst die gleich wie der User → 'hans' (# nano /etc/group).
  • Den Ort wechseln. Eine bequemere Lösung bietet die Variante mit dem Symlink. Nötig ist dazu aber nur ein einfacher Move-Befehl mit dem Root-Accout (# mv /home/hans/meineHomepage /ein/Ort/wo/Apache/lesenkann/meineHomepage) und die Pfadanpassung in der Datei mit den VHost-Informationen (Normalfall: # nano /etc/apache2/sites-enabled/${meineHomepage})
  • Einen Symlink verwenden. Dank Symlinks kann eine Datei mehrfach im Dateisystem auftauchen. Auch ein Ordner ist eine Datei. Darum können wir mit einem Befehl das gleiche erreichen wie mit dem Verschieben (# ln -s ${Ziel ⇒ /home/hans/meineHomepage} ${Startpunkt ⇒ /ein/Ort/wo/Apache/lesenkann/meineHomepage}), mit der Ausnahme, dass die Dateien immernoch im Ordner '/home/hans' liegen. Das ist sehr wichtig für ein Backup! Zum Schluss muss auch hier die VHost Datei angepasst werden (Normalfall: # nano /etc/apache2/sites-enabled/${meineHomepage}).

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

  • Apache
    • Log-Datei lesen!
  • DNS
    • Sind die DNS-Einträge richtig gesetzt?
  • Unix/Linux

SSL

Userdir

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

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

 
infos/netzwerk/apache2.txt · Zuletzt geändert: 2010/03/27 23:50 von schule
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki