Webserver und CGI
- CLUG Stammtisch, 04. Dezember 1998 -
Agenda:
- Historisches
- Apache Webserver
- Installation
- Konfiguration
- Module
- PHP/FI
- und noch 1000 andere ...
- Nutzung
- CGI
- Möglichkeiten
- Beispiele
- Vorteile/Nachteile
- Zeit für Fragen
1. Historisches
Im Jahre 1989 wurde das World Wide Web (WWW) eingerichtet und hatte 1990 seine erste Implementation. Die Popolarität des WWW stieg vor allem durch die Einführung des WWW-Browsers NSCA Mosaic (1993) in hohem Masse. Dieser und andere Browser machten das WWW für die breite Masse zugänglich.
Anfang 1995 war der Public Domain HTTP daemon von Rob McCool der populärste Webserver.
Da Rob die NCSA Mitte 94 verlassen hatte und entwickelten viele Webmaster an ihren eigenen Erweiterungen.
Eine kleine Gruppe dieser begann über Email über ihre lokalen Anpassungen zu sprechen, und beschlossen Ihre Arbeit gemeinsam weiter zu führen.
Ende Februar 95 wurde dann die Apache Group gegründet.
Aufbauend auf dem NCSA httpd 1.3 wurde nun am Apache Server gebastelt.
Bereits im April wurde die erste offizelle Version veröffentlicht (0.6.2).
Zur gleichen Zeit nam die NSCA ihre Entwicklung wieder auf. Brandon Long und Beth Frank von NSCA traten der Apache Mailingliste bei.
Jetzt war ein Erfahrungsaustausch zwischen beiden Projekten möglich.
Nachdem der erste Apache ein großer Erfolg ist er nun einer der Verbreitetsten Webserver geworden.
Derzeit steht das Projekt bei Version 1.3.3
2. Der Apache Webserver
2.1. Installation
Nach dem Download gibt es zwei Möglichkeiten entweder man hat ein fertiges RPM gezogen (mit allen modulen die man braucht), oder die Sourcen und Module.
Beim ersten ist man dann auch nach dem RPM-Install schon fertig und kann zum Konfigurieren übergehen.
Zweiters gestaltet sich dank der guten Dokumentation des Apache auch nicht sonderlich schwierig.
Hier nur die wichtigsten Schritte:
Configuration
File an lokale bedürfnisse anpassen (Module angeben)
./configure
ausführen
make
und abschließ
make install
2.2. Konfiguration
Die Konfigurationsfiles liegen nach der Installation üblicherweise im /etc/httpd/conf/
Verzeichnis.
Zur Steuerung eines Standard Apache werden nur drei Konfigurationsfiles benötigt:
access.conf
hier lassen sich die Zugriffsmoeglichkeiten auf die einzelnen Verzeichnisse des Webservers einstellen.
httpd.conf
erlaubt die Optionen des Serverdaemon zu konfigurieren.
srm.conf
enthält die Spezifikationen, nach welchen der Server Dokumente, File u.ä. an den Clienten schickt.
2.3. Module
Die Module des Apache ermöglichen es spezielle Funktionen zu bewerkstelligen, ohne die Anfordeungen an den Clienten zu ändern.
Das derzeit wohl bekannteste Modul für den Apache ist PHP/FI. Es stellt eine C ähnliche Sprache zur Verfügung mit welcher man Datenbankanbindungen per WWW realisieren kann. Neben dieser Funktion läßt ich aber so ziehmlich alles rund herum auch gleich damit erledigen.
Eine Lückenlose Dokumentation findet sich auf den Webseiten von PHP, dort finden sich auch Beispiele, die Datein und viele Interessante Links zum Thema.
PHP/FI 3.0.5 besitzt folgende Funktionen.
PHP/FI sei hier stellvertretend für alle Module genannt, hier ist eine Liste aller von der Apache.org mitgelieferten Modulen.
2.4. Nutzung
Unter /etc/httpd/logs/
warten die Logfiles auf das geübte Auge des Administrators, dort finden sich alle Anfragen von Clienten, Produzierte Fehler und evtl noch andere sinnfällige Daten.
Der Apache Webserver läft absolut stabil. Im Start/Stop-Skrip sind noch eine Reihe weiterer Nützlicher finessen eingebaut. So kann man die Konfiguration während des Betriebs neu lesen reload
.
Weiterhin läßt sich der status
abfragen. Für den Fall, daß des doch mal zu Problem kommt dürfte die Option restart von Nutzen sein.
Die Arbeit, welche der Webserver zu verrichten hat hängt natürlich stark vom Angebot ab. So wird ein Webserver mit der Homepage von HP mit sicherheit mehr angefragt, als ein Webserver des örtlichen Kegelklubs.
Ein häufig angefragter Webserver sollte ausschließlich Web anbieten, wohingegen auf einem Normalen PC durchaus nebenbei noch eine Datenbank liegen darf, die dann über Web zugänglich gemacht wird.
Es ist notwendig einen Kompromiss zwischen Web und anderen Diensten zu finden.
3. CGI
CGI steht für Common Gateway Interface. Es handelt sich eigentlich um ein ganz normales Programm, nur das die Ein- und/oder Ausgabe an den Clienten geschickt wird und dort im Browser erscheint.
3.1. Möglichkeiten
Im Prinzip gibt es keine Einschränkungen was sich mit CGIs machen läßt, jedoch wird es vorwiegend für rechenintensive Aufgaben auf dem Server verwandt, der Client schickt eine Anfrage und/oder Daten, diese werden vom Server bearbeitet und das Ergebniss im allg. an den Clienten zurück geschickt.
Dadurch lassen sich Filezugriffe ohne grossen Netztraffic, Datenbank abfragen u.ä. erledigen.
Ein Paradebeispiel für CGI sind die sogenannte Guestbooks.
Durch den Einsatz von Java und Javascript wird CGI immer mehr verdrängt. Viele Lösungen wären auf einfach Art per CGI zu realisieren.
3.2. Beispiele
Alle Beispiele wurden als Shellskripte oder Perlskripte erstellt.
3.3. Vor-/Nachteile
Aufgrund der Flexibilität läßt sich eine relativ gute Sicherheit erreichen, der Nutzer kennt nur die Schnittstelle zur Software, diese liegt allerdings "untouchable" und ausschließlich auf dem Server.
Auf diese Art wäre ein Angriff nur über gezielte Parameterübergabe denkbar.
Die von einem CGI erzeugte Rechnerlast ist deutlich geringer als Beispielsweise Java und auch als Javascript, da nur eine "normale" Website aufgebaut werden muss. Enthält diese allerdings Java oder Javascript ist die Last vergleichbar.
©Thomas Steinbach, Dezember 1998