Einen Router bauen
arrow.gif Entwicklungsumgebung
arrow.gif Hardware Plattformen
arrow.gif Slackware Router
arrow.gif Downloads
   
Weiterentwicklung
arrow.gif Tasks pending
arrow.gif Bugs
   
Informationen
arrow.gif Security
arrow.gif FAQ
arrow.gif Links
 
Slackware Linux Router
Prev Next

6. Apache installieren

6.1 Übersicht

Grundsätzlich können alle Konfigurations- und Wartungsarbeiten am Router via SSH oder mittles der seriellen Konsole durchgeführt werden. Um alltägliche Konfigurationsarbeiten (Eintrag der IP-Adressen von POP-, SMTP oder DNS-Servern) mit Hilfe eines Web-basierten Konfigurationstools durchführen zu können, muss der Router mit einem HTTP-Server ausgerüstet werden.

Im Projekt wird Apache 1.3.xx eingesetzt. Der Server wird auf dem Entwicklungssystem kompiliert, installiert und getestet und dann auf das Router System SLACK_LNX kopiert.

6.2 Vorbereitung

Den Apache Source Code in ein geeignetes Verzeichnis auf dem Entwicklungsrechner kopieren, z.B. /home/myname/apache/ und entpacken.

myname@DEVBOX:~/apache $ tar -xzvf apache_1.3.xx.tar.gz
 

Auf dem Entwicklungsrechner und auf dem Router SLACK_LNX eine Gruppe und einen User www anlegen. (-c = comment, -d = the home directory of the account, -g = initial group, -s = the login shell of the account.)

# /user/sbin/groupadd www
# /user/sbin/useradd www -c "apache server" -d /dev/null -g www -s /sbin/false
 

6.3 Apache kompilieren

Apache kompilieren. Das nachstehende Beispielscript «build_apache.sh» zeigt eine Beispielkonfiguration. (Die Option --with-layout=Apache installiert Apache im Verzeichnis /usr/local/apache des Entwicklungssystems. Die Pfade sind im File ~/apache/apache_1.3.xx/config.layout definiert.)

#!/bin/sh      
#   
# Script: build_apache.sh   
#      
# Description: Configuration file to build Apache
#  
# The server will be compiled in static mode,   
# hence there is no need to include mod_so 
#
./configure --with-layout=Apache \
--server-uid=www \
--server-gid=www \
--disable-module=all \ 
--enable-module=access \
--enable-module=auth \  
--enable-module=dir \
--enable-module=log_config \
--enable-module=mime \
--enable-module=cgi \
--enable-module=alias   
  
make clean  
make     
 

Das Script ausführen.

myname@DEVBOX:~/apache/apache_1.3.xx $ ./build_apache.sh
 

Apache nach /usr/local/apache installieren.

~ $ su -
# cd /home/myname/apache/apache_1.3.xx
# umask 022
# make install
 

Überflüssige Files löschen.

# rm -rf /usr/local/apache/cgi-bin/*
# rm -rf /usr/local/apache/htdocs/index.html.* (Ein File behalten zum Testen.)
# rm -rf /usr/local/apache/htdocs/manual/*
# rm -rf /usr/local/apache/icons/*
# rm -rf /usr/local/apache/include/*
# rm -rf /usr/local/apache/man/*
 

Apache starten.

# usr/sbin/apache/bin/apachectl start | stop | restart
 

Gemäss den Einstellungen des Default-Konfigurationsfiles hört Apache auf dem Entwicklungsrechner auf Port 80. Der Aufruf http://entwicklungsrechner:80 ab einem Browser im LAN sollte die Apache Startseite produzieren.

6.4 Apache konfigurieren

Das Konfigurationsscript httpd.conf von Apache erstellen und nach /usr/local/apache/conf kopieren. (Das Script steht unter Downloads zur Verfügung. Die IP-Adresse des Interfaces, auf dem Apache hört und die URL des Rechners, von dem aus auf den Server zugegriffen werden darf, müssen angepasst werden.)

# Script: httpd.conf   
#      
# Description: Apache's configuration script    
#       
# Script first completed:	2003-12-12      
# Script last changed:		2003-12-13      
#          
# -----------------------------------------------------------   
# Basic settings     
# ----------------------------------------------------------- 
ServerType standalone  
ServerRoot "/usr/local/apache"    
PidFile /usr/local/apache/logs/httpd.pid  
ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard  
ResourceConfig /dev/null  
AccessConfig /dev/null  
#  
# -----------------------------------------------------------
# Performance settings  
# -----------------------------------------------------------
Timeout 300  
KeepAlive On  
MaxKeepAliveRequests 100  
KeepAliveTimeout 15  
MinSpareServers 5  
MaxSpareServers 10  
StartServers 5  
MaxClients 150  
MaxRequestsPerChild 0  
#  
# -----------------------------------------------------------
# Apache's modules  
# -----------------------------------------------------------
ClearModuleList  
AddModule mod_log_config.c  
AddModule mod_mime.c  
AddModule mod_dir.c  
AddModule mod_access.c  
AddModule mod_auth.c 
AddModule mod_alias.c
AddModule mod_cgi.c 
#  
# -----------------------------------------------------------
# Main settings  
# -----------------------------------------------------------
#Port 80 
# 'Listen' overrides the 'Port' directive 
# specifies the interface on which the server listens 
Listen 10.10.10.1:80  
User www  
Group www  
ServerAdmin rolf@joyce.zurich  
UseCanonicalName Off  
ServerSignature Off  
HostnameLookups Off  
ServerTokens Prod  
<IfModule mod_dir.c>  
    DirectoryIndex index.html default.html  
</IfModule>  
DocumentRoot "/usr/local/apache/htdocs"    
#  
# -----------------------------------------------------------
# Access control  
# -----------------------------------------------------------
<Directory /> 
# disable symlinks, gci-scripts  
    Options None  
    AllowOverride None  
    Order deny,allow  
    Deny from all  
</Directory>  
<Directory "/usr/local/apache/htdocs">  
    Order deny,allow  
    Deny from all  
    Allow from 10.10.10.10 
</Directory>
#
# Tell Apache that everything under the URL prefix 'cgi-bin' 
# should be considered a CGI program.
<IfModule mod_alias.c>
    ScriptAlias /cgi-bin/  "/usr/local/apache/cgi-bin/"
    <Directory "/usr/local/apache/cgi-bin">
        AllowOverride none
        Options none
        Order deny,allow
        Deny from all
        Allow from 10.10.10.10
    </Directory>
</IfModule>
#  
# -----------------------------------------------------------
# MIME encoding  
# -----------------------------------------------------------
<IfModule mod_mime.c>  
    TypesConfig /usr/local/apache/conf/mime.types  
</IfModule>  
DefaultType text/plain  
<IfModule mod_mime.c>  
    AddEncoding x-compress .Z  
    AddEncoding x-gzip .gz .tgz  
    AddType application/x-tar .tgz  
</IfModule>  
# -----------------------------------------------------------
# Logs  
# -----------------------------------------------------------
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
ErrorLog /var/log/apache/error_log
CustomLog /var/log/apach/access_log combined
 

Sicherstellen, dass die Apache-Binaries, Config- und Logfiles geschützt sind.

# chmod 111 /usr/local/apache/bin/*
# chown www:www /usr/local/apache/cgi-bin/*
# chmod 700 /usr/local/apache/cgi-bin/*
# chmod 644 /usr/local/apache/conf/*
# chmod 644 /usr/local/apache/log
 

Im Verzeichnis /usr/local/apache/htdocs sollten keine Files vorhanden sein, die «root» gehören.

# chown myname:users /usr/local/apache/htdocs/*
# chmod 644 /usr/local/apache/htdocs/*
 

Apache auf dem Entwicklungsrechner testen.

6.5 Apache auf den Router kopieren

Die Partition, auf welcher der Router installiert ist, mounten und auf dem Router das Verzeichnis /usr/local/apache anlegen.

# mount /dev/hda5 /mnt
# mkdir /mnt/usr/local/apache
 

Apache auf den Router kopieren (-d = Links nicht dereferenzieren, -p = preserve mode, Ownerships beibehalten, -R = rekursiv kopieren):

# cp -dpR /usr/local/apache/* /mnt/usr/local/apache
 

Mit # ldd /mnt/usr/local/apache/bin/httpd überprüfen, welche Bibliotheken Apache benötigt und sicherstellen, dass diese auf dem Router zur Verfügung stehen.

SLACK_LNX booten, /usr/local/apache/conf/httpd.conf anpassen und testen, ob Apache wie gewünscht funktioniert und ob die Permissions seiner Files korrekt übernommen wurden. Anschliessend den Server in die Bootsequenz des Routers einbinden. Dazu die Datei /etc/rc.d/rc.httpd ausführbar machen und gegebenenfalls den Pfad auf das Startscript /usr/local/apache/bin/apachectl anpassen:

# chmod 755 /etc/rc.d/rc.httpd
 


Prev Home Next
Serielle Konsole Content Systemsicherheit