Apache HTTP Server: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 29: Zeile 29:
== Verwendung ==
== Verwendung ==


Starten des Apache-Servers.
Starten des Apache HTTP Servers.


  # <b>/usr/local/apache2/bin/apachectl start</b>
  # <b>/usr/local/apache2/bin/apachectl start</b>
Zeile 43: Zeile 43:
Oder Verwendung des Startskripts "/etc/rc.d/apache start" (muss vorher angepasst werden!)
Oder Verwendung des Startskripts "/etc/rc.d/apache start" (muss vorher angepasst werden!)


Aufruf des Apache-Servers über den Browser mit http://hostname/
Aufruf des Apache HTTP Servers über den Webbrowser mit http://hostname/


== Auswertung der Datei "access_log" ==
== Auswertung der Datei "access_log" ==
Zeile 50: Zeile 50:


Eine externe Logauswertung erfolgt mit folgendem Skript: Der Aufruf von "cat" liest zunächst die Logdatei vollständig ein und übergibt sie der for-Schleife als Parameterliste - die Bash muss den gesamten Dateiinhalt also erst mal zwischenspeichern. Anschliessend wird für jeden Logeintrag "cut" als externes Programm aufgerufen.
Eine externe Logauswertung erfolgt mit folgendem Skript: Der Aufruf von "cat" liest zunächst die Logdatei vollständig ein und übergibt sie der for-Schleife als Parameterliste - die Bash muss den gesamten Dateiinhalt also erst mal zwischenspeichern. Anschliessend wird für jeden Logeintrag "cut" als externes Programm aufgerufen.
<pre>
 
#!/bin/bash
#!/bin/bash
IFS=$'\n'
IFS=$'\n'
for l in $(cat access_log)
for l in $(cat access_log)
  do
  do
  IFS=" "
  IFS=" "
  echo "${l}  " | cut -d" " -f7
  echo "${l}  " | cut -d" " -f7
  done
  done
</pre>


Eine interne Logauswertung erfolgt mit folgendem, wesentlich schnellerem Skript. Es öffnet die Logdatei über den Dateideskriptor 3 und liest in der while-Schleife jeweils eine zeile in die Variable "Anfrage" - die Bash braucht also stets nur einen Logeintrag zwischenzuspeichern. Anschliessend werden vom Zeilenanfang bis einschliesslich "GET " und vom Ende alle Zeichen bis einschliesslich " HTTP/" entfernt.
Eine interne Logauswertung erfolgt mit folgendem, wesentlich schnellerem Skript. Es öffnet die Logdatei über den Dateideskriptor 3 und liest in der while-Schleife jeweils eine zeile in die Variable "Anfrage" - die Bash braucht also stets nur einen Logeintrag zwischenzuspeichern. Anschliessend werden vom Zeilenanfang bis einschliesslich "GET " und vom Ende alle Zeichen bis einschliesslich " HTTP/" entfernt.
<pre>
 
#!/bin/bash
#!/bin/bash
exec 3<access_log
exec 3<access_log
while read -u 3 Anfrage
while read -u 3 Anfrage
  do
  do
  Anfrage="${Anfrage##*GET }"
  Anfrage="${Anfrage##*GET }"
  echo "${Anfrage%% HTTP/*}"
  echo "${Anfrage%% HTTP/*}"
  done
  done
</pre>


== Weblinks ==
== Weblinks ==

Version vom 5. August 2009, 18:48 Uhr

Der Apache HTTP Server (auch: Apache) ist ein Produkt der Apache Software Foundation und der meistbenutzte Webserver im Internet.

Neben Unix und Linux unterstützt Apache auch Windows (Win32), NetWare sowie viele weitere Betriebssysteme. In Version 2.0 wurde die Stabilität und Geschwindigkeit des Servers erheblich verbessert: Die Bibliothek Apache Portable Runtime (APR) stellt eine Verallgemeinerung wichtiger Systemaufrufe zur Verfügung, sodass die Stärken des jeweiligen Betriebssystems ausgenutzt werden können. Hinzu kommen verschiedene Multiprocessing-Module (MPM), die je nach Plattform unterschiedliche Lösungen für die gleichzeitige Bedienung mehrerer Client-Anfragen anbieten.

Der Apache ist modular aufgebaut: Durch entsprechende Module kann er beispielsweise die Kommunikation zwischen Webbrowser und Webserver verschlüsseln (mod_ssl), als Proxyserver eingesetzt werden (mod_proxy) oder komplexe Manipulationen von HTTP-Kopfdaten (mod_headers) und URLs (mod_rewrite) durchführen.

Der Apache bietet die Möglichkeit, mittels serverseitiger Skriptsprachen Webseiten dynamisch zu erstellen. Häufig verwendete Skriptsprachen sind PHP, Perl oder Ruby. Diese sind kein Bestandteil des Webservers, sondern müssen ebenfalls entweder als Module eingebunden werden oder über das CGI angesprochen werden. Über das bei der Apache-Installation enthaltene mod_include kann Server Side Includes (SSI) ausgeführt werden. Damit können einfache dynamische Webseiten erstellt und der Verwaltungsaufwand von statischen Webseiten minimiert werden.

Gegenwärtig werden noch die stabilen Versionen 1.3.x, 2.0.x und 2.2.x unterstützt und somit beispielsweise mit Sicherheitsupdates versorgt. Die Apache-Entwickler empfehlen aber, die Version 2.2.x einzusetzen, da sie diese Version für die beste erhältliche halten.

Merke: Unix is like a wigwam: no windows, no gates - only Apache inside...

Geschichte

Datum Version Beschreibung
1995.04 Apache 0.6.2 allererste öffentlich verteilte Version
1995.12.01 Apache 1.0
Apache 2.0

Installation

Konfiguration

Verwendung

Starten des Apache HTTP Servers.

# /usr/local/apache2/bin/apachectl start
# ps -ef | grep httpd
root      4621     1  0 12:23 ?        00:00:00 /usr/local/apache2/bin/httpd
bin       4622  4621  0 12:23 ?        00:00:00 /usr/local/apache2/bin/httpd
bin       4623  4621  0 12:23 ?        00:00:00 /usr/local/apache2/bin/httpd
bin       4624  4621  0 12:23 ?        00:00:00 /usr/local/apache2/bin/httpd
bin       4625  4621  0 12:23 ?        00:00:00 /usr/local/apache2/bin/httpd
bin       4626  4621  0 12:23 ?        00:00:00 /usr/local/apache2/bin/httpd
root      4630   866  0 12:24 tty2     00:00:00 grep httpd

Oder Verwendung des Startskripts "/etc/rc.d/apache start" (muss vorher angepasst werden!)

Aufruf des Apache HTTP Servers über den Webbrowser mit http://hostname/

Auswertung der Datei "access_log"

Um festzustellen, welche Seiten abgefragt wurden, wird die GET-Zeichenkette aus der Datei "/var/log/apache2/access_log" herausgelöst.

Eine externe Logauswertung erfolgt mit folgendem Skript: Der Aufruf von "cat" liest zunächst die Logdatei vollständig ein und übergibt sie der for-Schleife als Parameterliste - die Bash muss den gesamten Dateiinhalt also erst mal zwischenspeichern. Anschliessend wird für jeden Logeintrag "cut" als externes Programm aufgerufen.

#!/bin/bash
IFS=$'\n'
for l in $(cat access_log)
  do
  IFS=" "
  echo "${l}  " | cut -d" " -f7
  done

Eine interne Logauswertung erfolgt mit folgendem, wesentlich schnellerem Skript. Es öffnet die Logdatei über den Dateideskriptor 3 und liest in der while-Schleife jeweils eine zeile in die Variable "Anfrage" - die Bash braucht also stets nur einen Logeintrag zwischenzuspeichern. Anschliessend werden vom Zeilenanfang bis einschliesslich "GET " und vom Ende alle Zeichen bis einschliesslich " HTTP/" entfernt.

#!/bin/bash
exec 3<access_log
while read -u 3 Anfrage
  do
  Anfrage="${Anfrage##*GET }"
  echo "${Anfrage%% HTTP/*}"
  done

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen