Kompilierung von Apache

#Befehle zur Vorbereitung
apt-get update
apt-get upgrade
apt-get clean
apt-get install build-essential
apg-get install checkinstall
cd /usr/local/src
mkdir lamps
cd lamps

#Installation OpenSSL
wget http://www.openssl.org/source/openssl-1.0.1p.tar.gz
tar -xzvf openssl-1.0.1p.tar.gz
cd openssl-1.0.p
./config --prefix=/usr/local/openssl
make
make test
checkinstall --fstrans=no #Paketname, Defaulteinstellungen lassen

#Installation Webserver
cd /usr/local/src/lamps
wget http://mirror.switch.ch/mirror/apache/dist/httpd/httpd-2.2.31.tar.gz
#Apache wird nun als DSO-Version kompiliert->Module wie PHP können dynamisch geladen werden.
#\-verwenden um den Befehl auf Zeilen aufzuteilen
tar -xzvf httpd-2.2.3.1.tar.gz
cd httpd-2.2.31/
/configure \
--prefix=/usr/local/apache2 \
--enable-modules=most \
--enable-shared=max \
--enable-ssl \
--with-ssl=/usr/local/openssl
make
checkinstall --fstrans=no
cd

#Status der installierten Pakete
dpkg -s openssl
dpkg -s httpd
#Alle dazugehörigen Dateien anzeigen
dpkg -L openssl | less
dpkg -L httpd | less
#Paket entfernen
dpkg -r openssl

httpd.conf

Pfad: /usr/local/apache2/conf/httpd.conf

ServerRoot

ServerRoot "/usr/local/apache2"

PidFile

Hier ist definiert, wo die Verzeichnisse conf  & logs zu finden sind:

PidFile logs/httpd.pid

In dieser Datei ist auch die aktuelle ProzessID. So kann die Prozessnummer ausgelesen und “gekillt” werden:

Kill -USR1 ’cat /usr/local/apache2/httpd.pid'

Listen

Hier lässt sich die Portnummer des HTTP-Servers angeben. Wenn eine andere Portnummer unter 1024 genommen wird, muss der Server mit root-Rechten neu gestartet werden.

Listen 80
Listen 192.170.2.1:80
Listen 192.170.2.5:8000

ServerName

ServerName localhost:80

User, Group

Sobald der Apache startet, muss er mit Benutzerrechten auf die Serverdaten zugreifen. Diese User heissen meist wwwrun, www-data, httpd, apache usw.

User daemon
Group daemon

DocumentRoot

DocumentRoot /usr/local/apache/htdocs

ErrorDocument

ErrorDocument 404 "<h1>Ups, nothing found</h1>"
ErrorDocument 404 /error/404.php
ErrorDocument 404 http://404.com/

IndexOptions

IndexOrderDefault Descending Size

IndexIgnore *.php .?? #Dateien wie .php oder .htaccess nicht anzeigen

AddIcon

AddIcon /srv/icon.ico *.png

Weitere Varianten:

#DefaultIcon
Defaulticon /srv/icon.ico
#AddIconByEncoding
AddIconByEncoding (CMP, /srv/icon.gif) x-compress x-gzip
#AddIconByType
AddIconByType (SND,/srv/soundicon.gif) audio/
#AddAlt
AddAlt TXT *.txt
#AddDescription
AddDescription "theseareimages" *.jpg

 

LAnguage

LanguagePriority de en fr
AddLanguage de de
AddLanguage en en
AddLanguage fr fr
Options +MultiViews
DefaultLanguage de

<Directory> -Tag

Durch Beschränkungen von Richtlinien auf einzelne Ordner können Indizes und Icons besser gesteuert werden. Dies funktioniert auch mit <Files> und <Location>.

<Directory /folderuwant/download>
IndexOptions ...
AddIconByType ...
</Directory>

Übersicht Apache

Installationsstruktur

Unter /usr/local/apache2/ befinden sich folgende Ressourcen:

  • bin
    • Alle ausführbaren Programme, die zu Apache  gehören
  • cgi-bin
    • Das Programm printenv lässt einem Umgebungsvariablen von Apache (sofern Perl installiert ist) anschauen
  • conf
    • Hier sind die Apache-Konfigurationsdateien abgelegt. Die wichtigste davon ist httpd.conf. Falls einmal Konfigurationsdateien verstellt sind, ist die httpd.conf.default vorhanden, auf die man allenfalls zurückwechseln könnte
  • error
    • Ort der HTTP-Fehlerdokumente
  • htdocs
    • Standardverzeichnis für HTML-Seiten
  • icons
  • logs
    • Logfiles
  • manual
    • englische Dokumentation
  • modules
    • Die hinzugefügten Module (weitere können dynamisch dazugeladen werden)

Start/Stop

Folgende Befehle können verwendet werden, um den Apache-Server zu steuern:

/usr/local/apache2/bin/apachectl start
/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl restart