6. Apache installieren
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.
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
|
|
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.
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.
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
|
|
|