IT-Academy Logo
Sign Up Login Help
Home - Betriebssysteme - Linux - Anwendungssoftware - Der Apache Webserver



Der Apache Webserver

Der Apache-Server wird vorgestellt. Möglichkeiten fuer dynamsiche Seiten und für modulare site-strukturen werden kurz diskutiert.


Autor: Franz Schaefer (mond)
Datum: 03-03-2002, 13:45:22
Referenzen: man apache
Schwierigkeit: Anfänger
Ansichten: 5304x
Rating: 3.5 (2x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Übersicht

typische anwendung einer linux oder *BSD kiste ist der betrieb eines
webservers. das macht in unix natuerlich ein daemon programm. der
beliebteste web server ist sicherlich apache. er wird mit praktisch allen
distributionen mitgeliefert.

wenn apache noch nicht auf deiner maschine laeuft: zum starten des apache
liefern die meisten distributionen start scripts mit. in debian z.b.:

/etc/init.d/apache start

oder man verwendet das apachectl programm um den apache zu starten:

apachectl start

oder

apachectl restart

wenn man ihn neu starten will

apachectl configtest

testet das apache configurations file ob es fehlerfrei ist. (das empfiehlt
sich nach konfigurationsaendrungen auf production server bevor man ein
restart macht.. damit der server dann nicht lange down ist weil man erst
die fehler im config file beheben muss)

die apache configuration sagt dem apache wo er die html files findet die
er im web verfuegbar machen soll, wo scripts ausgefuehrt werden sollen
oder wo verzeichnisse mit passwoerter geschuetzt werden sollen.

ein

locate httpd.conf

sag einem meist wo man das httpd.conf das haupt confiugrationsfile vom
apache findet. debian z.b. hat es dort wo man es erwarten wuerde,
naehhmlich unterhalb von:

/etc/apache

dort findetn sich auch access.conf (fuer zugrifssrechte) und srm.conf

die configfiles sind ueblicherweise gut kommentiert und mit
auskommentierente beispeilen ausgestattet sodass man sich relativ leicht
zurecht findet. mit "LoadModule" zeilen kann der apache server mit
zusaetzlichen funktionen ausgetattet werden (z.b. mod_perl zum direkten
ausfuehren von perl scripts im apache)

web anfragen kommen, wenn im browser nicht anders angegeben ueber tcp port
80. auf welchen ports der server arbeite koennte man z.b. hier verstellen.

ein oft benoetigte funktion ist das einrichten von "virutal hosts" (oft kurz
vhost genannt). hat ein rechner mehrere namen die alle auf seine IP
addresse zeigen, zb.:

office.irgendwo.at
www.irgendwo.at
www.bliblablo.org

so kann der apache server verschiedenen seiten zurueckliefern je nachdem
mit welcher addresse eine http (http ist das protokoll das definiert wie
web zugriffe auf einen server zu erfolgen haben) abfage kommt verschiedene
seiten fuer jede domain zurueckliefern. (ganz ganz ganz alte browser haben
den namen den sie zum abfragen benuetzten nicht mitgeschickt da waren
vhosts nur moeglich in dem man jeder web addresse eine eigenen IP addresse
zugeordnet hat und der web server verschieden ja nach IP addresse
geantwortet hat... eine ziemliche verschwendung von IP addressen die
schon lange nicht mehr benutzt wird...)

die relevanten teile fuer eine vhost konfiguration aus einem httpd.conf
koennten etwa so aussehen:

NameVirtualHost 10.11.12.13

(die IP addresse auf der alle virtual host anfragen beantwortet werden)


ServerAdmin maxmeier@irgendwo.at
DocumentRoot /home/maxmeier/office/
ServerName office.irgendwo.at
Alias /image/ /var/www/image/
ErrorLog /var/log/apache/office-error.log
TransferLog /var/log/apache/office-access.log


ServerAdmin alfhuber@irgendwo.at
DocumentRoot /var/www/bliblablo/
ServerName www.bliblablo.org
ScriptAlias /cgi /home/alfhuber/meinecgiscripts/
ErrorLog /var/log/apache/bliblablo-error.log
TransferLog /var/log/apache/bliblablo-access.log

greift jetzt jemand auf http://www.bliblablo.org/test.html zu so wird der
apache server versuchen das file: /var/www/bliblablo/test.html zu lesen.

ebenso greift jetzt z.b. jemand auf http://www.bliblablo.org/cgi/test.cgi
zu so wird der server versuchen das script test.cgi auszufuehren und die
ausgabe als web seite zu presentieren...

wie man html seiten selbst schreibt wird im rahmen der CD nicht behandelt.
dafuer gibt es schon sehr gute doku am web. z.b. "selfhtml" von stefan
muenz:

http://selfhtml.teamone.de/

http://www.selfhtml.org/

wer selbst keinen zugriff auf die apache configuration hat und webseiten
machen will kann diese ueblicherweise in seinem homeverzeichniss in ein
verzeichniss namens

public_html/

stellen sei sind dann z.b. unter http://hostname.irgendwo.at/~username
abrubar.

in stolperstein bei der apache configuration sind oft die rechte die einem
verzeichniss (und damit unterverzeichnissen) zugeordnet sind:


AllowOverride AuthConfig
Options ExecCGI FollowSymLinks

besagt z.b. dass im verzeichniss liegende files vom apache als scripts
ausgefuehrt werden duerfen. dass er im verzeichniss vorhandene symlinks
beruecksichtigt. das "AllowOverride AuthConfig" besagt dass dort in dem
file ein file namens .htaccess liegen darf in dem man den zugriff auf
dieses verzeichniss einschraenken kann. (man beachte: dies ist zusaetzlich
zu den unix permissions. der user unter dem der web server laeuft (z.b.
www-data) muss natuerlich rechte haben in das direcotry zu kommen und das
file lesen zu koennen bzw ausfuehren zu koennen wenn es ein script ist.)

ein einfaches .htaccess file koennte z.b. so aussehen:

AuthName wer_hier_reinwill_braucht_ein_passwort
AuthType Basic
AuthUserFile /home/maxmeier/meinewebuser
require valid-user

das file in dem die user und passwoerte stehen kann man mit dem program
htpasswd bearbeiten:

htpasswd -c meinewebuser moriz

legt ein neues file meinewebuser an und fuergt einen user namens moriz ein.

noch kurz ein paar worte zu den moeglichkeiten das web mit dynamischen
inhalten zu fuellen:

* clientseitige loesungen. d.h. loesungen die das vorhandensein von
spezieller software am webbrowser benoetigen (javascript, java, flash,
etc..) sollte man so weit wie moeglich vermeiden. java kann unter
umstaenden bei spezialloesungen hilfreich sein. javascript macht aber die
meisten seiten unbedienbar (gute firewalls sollten javascript aus
sicherheitsgruenden filtern bzw verantwortungsbewusste admins erlauben
ihren usern das ausfuehren von javascript nicht). flash ist als
proprietare loesungen ohnehin zu vermeiden.

* seververseite loesungen:

o cgi scripts - das sind programme die, jedesmal wenn sie vom browser
angefordert werden neue gestartet werden und die ausgabe als html
produzieren. (cgi scripts koennen allerdings auch dirct z.b. .jpg
bilder oder reine textausgaben produzieren). cgi scripts koennen in
verschiedenen programmiersprachen geschrieben werden. wir lernen
demnaechst in perl und in bash geschrieben cgi scripts kennnen.

o mod_perl aehnlich wie CGI scripts jedoch laeuft das script nicht als
eigner prozess der jedesmal neu angestartet werden muss sondern das
perl programm wird direkt im apache selbst ausgefuehrt. mod_perl
scripts sind somit schneller und koennen durch direkten zugriff auf
apache interna einige zaubertricks...

o will man perl code direkt in eine html seite einbetten gibt es dafuer
auch loesungen. z.b.: mason, eperl, etc..

o php scripts. php ist eine inzwischen schon relativ leistungsfaehige
script sprache die gerne fuer webseiten verwendet wird. wer jedoch
schon perl kann ist mit perl meist besser bedient.

o SSI (serverside includes). (mod_include). erlaubt es andere seiten und
scripts in html (meist .shtml genannte) zu inkludiren. die seite musst
dazu vom webserver ebenfalls jedesmal wenn sie abgefragt wird
durchgelesen werden.

o asp scripts. von microsoft entwickelte und vorallem auf windows
verfuegbare script umgebung. um jeden preis vermeiden.

o zope, interchange, etc.. weitere frameworks zum dynamischen generieren
von seiten...

o ....

geht es nur darum seiten modular aus bausteinen aufzubauen (sodass man nur
an einer stelle etwas aendern muss um das layout einer gesamten site
aendern zu koennen) und braucht man ansonsten keine, bei jedem aufruf
dynamisch generieren, seiten so empiehlt es sicht die seiten einmal aus
einem script oder einer preprozessor/macro sprache generiren zu lassen und
dann nur die statisch generierent seiten im web zu haben. (natuerlich ist
auch eine mischung moeglich: aus scripts erzeugte statische seiten und
template seiten fuer perl scripts die an den stellen benuetzt werden wo
wirklich dynamischer inhalt notwendig ist.)

sofern man die macro loesungen nicht gleich selbst mit einigen
handgestrickten perl scripts bastelt... (was meist am einfachsten ist)
hier einige links fuer preprozessor/macro loesungen:

* gtml: http://www.freecode.com/projects/gtml/

* wml: http://www.engelschall.com/sw/wml/

* wpp: http://the.sunnyspot.org/wpp/

* htmlpp: http://freshmeat.net/projects/htmlpp/

....

EXERCISES:

* schau dir deine apache config an.

* richte dir einen virtual host ein.

* richt dir ein verzeichniss fuer private dokumente ein das du mit einem
.htaccess schuetzt

* diskutieren die verschiedenen moeglichkeiten fuer dynamisch generierte
seiten bzw fuer modulare site strukturen.

_______________________________________________
CD ist ein service von SILVER SERVER
der inhalt unterliegt der GFDL
_______________________________________________



TheDude
Junior-Member
Beitrag vom:
03-03-2002, 18:39:55

naja...

Der Artikel ist zwar informativ, schweift aber gegen Ende zu etwas vom Thema ab und ist vor allem keinesfalls objektiv, was schade ist.

-----------------------------------------------------
while (!asleep()) sheep++;


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04503
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16551
Queueeinträge:06238
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1138
Comments: 0