Web-Server

ID #1040 Minimalistischer Apache

Wer nur statische HTML-Seiten oder Grafiken anbieten möchte, kann auf viele Funktionen vom Apache verzichten. Über ein zusätzliches Apache-Modul sind jedoch auch dynamische Seiten mit Perl möglich.
Ziel dieser Übung ist, die Größe des Apache-Verzeichnisses auf unter 400 kB zu reduzieren.
Von der Durchführung dieser Konfiguration auf produktiven Systemen rate ich ausdrücklich ab.

Als Basis brauchen wir natürlich einige Devel-Pakete sowie Compiler und Tools:
gcc, make, linclude & glibc-devel
Als Quellcode-Paket nehmen wir die aktuelle, stabile Apache-Version von httpd.apache.org (oder einem Spiegelserver). Das Archiv sollte <code>apache_[VERSION].tar.gzcode> heißen. Entpacken mit:
<code>tar xfvz apache_[VERSION].tar.gz
cd apache[VERSION]code>

Der nächste Schritt ist das Configure-Script mit den entsprechenden Parametern zu starten. Hier kommt die Feinarbeit: alle standardmäßig eingebundenen Module werden deaktiviert; die Module 'dir' und 'mime' mit dem Apache compiliert (nicht als Modul).

./configure 
--prefix=/usr/local/apache
--without-support
--enable-module=dir
--disable-shared=dir
--enable-module=mime
--disable-shared=mime
--disable-module=cgi
--disable-module=auth
--disable-module=log_config
--disable-module=usertrack
--disable-module=env
--disable-module=negotiation
--disable-module=status
--disable-module=include
--disable-module=autoindex
--disable-module=asis
--disable-module=imap
--disable-module=actions
--disable-module=userdir
--disable-module=alias
--disable-module=access
--disable-module=setenvif

Optional können auch folgende Module noch mit einkompiliert werden:

<code>--enable-module=log_config
--disable-shared=log_config code>
Zum Protokollieren von Zugriffen und Fehlern braucht man Log-Modul.
<code>--enable-module=auth
--disable-shared=auth code>
Das Auth-Modul braucht man um Bereiche der Website nur für bestimmte Benutzer zugänglich zu machen.
<code>--enable-module=cgi
--disable-shared=cgi code>
Mit dem CGI-Modul können CGI-Programme (Perl-/PHP-Scripte) auf dem Server ausgeführt werden.

Wurde das Configure-Script ohne Fehlermeldung beendet, starten wir den compiler:
<code>makecode>

Ist auch dieser Vorgang ohne Fehler beendet worden, kann der Apache installiert werden:
<code>make installcode>

Um das Apache-Verzeichnis von überflüssigem Ballast zu befreien, können folgende Verzeichnisse und Dateien gelöscht werden:

cd /usr/local/apache/
rm -rf cgi-bin/
rm -rf icons/
rm -rf man/
rm -rf proxy/
rm -rf htdocs/manual/
rm -rf libexec/
rm -rf include/
rm -f conf/*.default
rm -f conf/srm.conf
rm -f conf/access.conf
rm -f htdocs/*

Nun kommt die Apache-Konfigurationsdatei (<code>/usr/local/apache/conf/httpd.confcode>) an die Reihe:

ServerName router.linux-fuer-alle.de
ServerAdmin root
ServerType standalone
ServerRoot "/usr/local/apache"
PidFile /usr/local/apache/logs/httpd.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 1
MaxSpareServers 10
StartServers 1
MaxClients 10
MaxRequestsPerChild 0
Port 80
Listen 192.168.1.1:80
User nobody
Group nobody

DocumentRoot "/usr/local/apache/htdocs"
DefaultType text/plain

# folgende Zeile für mod_mime aktivieren
TypesConfig conf/mime.types

# folgende Zeile für mod_dir aktivieren
DirectoryIndex index.html

# folgende Zeile für mod_cgi aktivieren
# AddHandler cgi-script .pl

# nächste Zeile für mod_auth aktivieren
# AccessFileName .htaccess

# für CGI-Programme/Perl-Scripte " ExecCGI" an folgende Zeile anhängen
Options Indexes

HostnameLookups Off
ErrorLog /usr/local/apache/logs/error_log
LogLevel warn

Vor dem ersten Start, sollte noch ein Inhalt im htdocs-Verzeichnis (<code>/usr/local/apache/htdocs/code>) angelegt werden:

<HTML>
<HEAD>
<TITLE>Apache-Test</TITLE>
</HEAD>
<BODY>
<P>Apache-Test</P>
</BODY>

Nun kann der Apache gestartet werden:
<code>/usr/local/apache/bin/httpdcode>

Prüfen ob er läuft:
<code>ps ax | grep httpdcode>

In einem Internet-Browser die URL angeben:
<code>http://192.168.1.1/code>

Den Webserver schließlich wieder beendet:
<code>killall httpdcode>

Schlußbemerkung


Alternativ kann man sich auch mal das Paket micro_httpd ansehen.
 

sozial Bookmarking
Bookmarken bei YIGG Bookmarken bei Mister-Wong Bookmarken bei Icio Bookmarken bei del.icio.us Bookmarken bei Technorati Bookmarken bei Furl Bookmarken bei Spurl Bookmarken bei Yahoo Bookmarken bei Google

huschi, zuletzt 2005-12-11 22:14     Artikel ausdrucken Artikel weiterempfehlen Als PDF-Datei anzeigen

Dieser Inhalt ist unter der Creative-Commons Lizenz lizensiert.

Probleme bitte im Server-Support-Forum diskutieren.

überflüssig 1 2 3 4 5 wertvoll  
Durchschnittliche Bewertung:   5 von 5 (2 Bewertungen)

Artikel kommentieren

Kommentar von Roger Wilco (2038-01-19 04:14:07):
Wer den Apache dermaßen "kastriert" kann auch gleich einen httpd wählen, der auf einen kleinen Footprint optimiert ist, etwa fnord, thttpd oder lighttpd. Diese bringen dann öfter noch ein Quentchen mehr Performanz.