====== Verwante Seiten ====== * [[infos:phpmyadmin]] * [[infos:netzwerk:ajaxterm]] ====== 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: - Root werden: sudo bash - In den Account von Apache wechseln. Meistens heisst er '''www-data''' - Wechsle in das Root-Verzeichnis: # cd / - 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 '''''': LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so Wenn die URL's dann nicht richtig übersetzt werden, brauchst du noch das Modul da: mod_proxy_html ====== PHP5 ====== Dieser Abschnitt ist evt. etwas [[infos:linux: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 "" > /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 [[infos:linux#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: - In '''sites-available''' eine neue Datei mit dem DNS-Namen erstellen. Z.B: '''example.com''' - Diese Datei bekommt nun alle Angaben, für die Konfiguration. Das Minimum findest du unten. - Dann erstellst du eine zweite Datei mit dem DNS-Name der zweiten Homepage. Z.B. '''example.net''' - Auch diese Datei füllst du mit den entstprechenden Informationen - 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 - 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 ServerAdmin webmaster@example.com ServerName example.com ServerAlias example *.example.com DocumentRoot /var/www/example.com/ Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all 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 ===== Fehlerbehebung ===== * Apache * Log-Datei lesen! * DNS * Sind die DNS-Einträge richtig gesetzt? * [[infos:netzwerk:bind]] * Unix/Linux * [[infos:linux:Dateirechte]] ====== SSL ====== * http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html#vhosts2 ====== Userdir ====== # a2enmod userdir # /etc/init.d/apache2 restart Quelle: http://wiki.ubuntuusers.de/Apache#mod-userdir-aktivieren