MDXDave.de

Informatikstudent der TH Köln // Android + Coding

Laden...

Apache 2.4 auf Debian Wheezy installieren

veröffentlicht vor 3 Jahren, am 28. April 2014  |  10 Kommentare

Apache ist der meist verwendete Webserver der Welt. Da in den Debian-Repositories immer noch Apache 2.2 rumliegt, aber bereits Version 2.4 existiert, nachfolgend eine kleine Anleitung zur Installation dieser Version (auf Vor- oder Nachteile der Versionen untereinander oder mit lighttpd, nginx, etc. möchte ich hier nicht eingehen, mein persönlicher Anreiz waren die sichereren Cipher-Suiten, die mit Apache 2.2 nicht nutzbar waren).

Da eben noch Version 2.2 in den Repos liegt, müssen wir uns Apache 2.4 selbst zusammenbauen (=kompilieren).

Hinweis: Vor der Installation solltet ihr bei allen Paketen die neuste Version herunterladen und installieren, bei Apache ist diese hier gelistet.

Schritt 1: Vorbereitung

Zunächst die benötigten Pakete zur Kompilierung installieren:

apt-get install autoconf python libtool build-essential

Als nächstes erstellen wir einen neuen Ordner im Root-Verzeichnis:

mkdir /~/install

... und laden uns den Apache-Webserver als Source herunter, außerdem entpacken wir diese:

wget http://www.eu.apache.org/dist/httpd/httpd-2.4.20.tar.gz
wget http://www.eu.apache.org/dist/httpd/httpd-2.4.20-deps.tar.gz
tar xvfz httpd-*.tar.gz
tar xvfz httpd-*-deps.tar.gz

Anschließend wechseln wir in das Verzeichnis "srclib":

cd httpd-*/srclib

Nun laden wir uns (wieder jeweils schauen ob die verlinkte Version noch aktuell ist!) noch einige weitere benötigte Pakete herunter, darunter die Apache Portable Runtime - ICONV:

wget http://mirror.netcologne.de/apache.org/apr/apr-iconv-1.2.1.tar.gz
tar xvfz apr-iconv-*.tar.gz
mv apr-iconv-1.2.1 apr-iconv

... außerdem zLib:

wget http://zlib.net/zlib-1.2.8.tar.gz
tar xvfz zlib-*.tar.gz
mv zlib-1.2.8 zlib

... die PCRE (Perl Compatible Regular Expressions):

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
tar xvfz pcre-8.38.tar.gz
mv pcre-8.38 pcre
cd pcre*
./configure
make
make install
cd ..

... und zuletzt noch OpenSSL in Version 1.0.2g:

wget ftp://ftp.openssl.org/source/openssl-1.0.2g.tar.gz
tar xfz openssl-*.tar.gz

Anschließend kompilieren wir nun OpenSSL:

cd openssl-*
./config --prefix=/usr zlib-dynamic --openssldir=/etc/ssl shared
make
make test
sudo make

Soweit sollte alles fehlerfrei geklappt haben!

Schritt 2: Kompilierung und Installation von Apache

Weiter geht es dann nun mit der Kompilierung und Installation des Apaches:

cd ../..
./buildconf

Nun müsst ihr euch entscheiden, ob Apache mit Suexec-Unterstützung (FastCGI-PHP):

./configure --prefix=/opt/apache2 --enable-pie --enable-mods-shared=all --enable-so --disable-include --enable-deflate --enable-headers --enable-expires --enable-ssl=shared --enable-mpms-shared=all --with-mpm=event --enable-rewrite --with-z=/root/install/httpd-2.4.20/srclib/zlib --enable-module=ssl --enable-fcgid --with-included-apr --enable-suexec --with-suexec-caller=httpd --with-ssl=/root/install/httpd-2.4.20/srclib/openssl-1.0.2g --with-pcre=/root/install/httpd-2.4.20/srclib/pcre/bin/pcre-config

... oder ohne installiert werden soll:

./configure --prefix=/opt/apache2 --enable-pie --enable-mods-shared=all --enable-so --disable-include --enable-deflate --enable-headers --enable-expires --enable-ssl=shared --enable-mpms-shared=all --with-mpm=event --enable-rewrite --with-z=/root/install/httpd-2.4.20/srclib/zlib --enable-module=ssl --enable-fcgid --with-included-apr  --with-ssl=/root/install/httpd-2.4.20/srclib/openssl-1.0.2g --with-pcre=/root/install/httpd-2.42.4.2017/srclib/pcre/bin/pcre-config

Anschließend können wir Apache kompilieren:

make

Sollte hierbei die folgende Meldung auftauchen...

[...] undefined reference to `SSLv2_client_method' [...]

... öffnet ihr die Datei support/ab.c in eurem Apache-Source-Verzeichnis und fügt folgendes an den Anfang der Datei*:

#define OPENSSL_NO_SSL2

Bei folgender Meldung:

libtool not found. You need libtool version 1.4 or newer installed to build APR from SVN.

einfach libtool-bin installieren:

apt-get install libtool-bin

Anschließend sollte die Kompilierung mittels

make

funktionieren. Dann noch ein

sudo make install

hinterher und Apache ist installiert!

Schritt 3: mod_fcgid installieren

Wenn ihr noch die FCGI-Unterstützung installieren möchtet, wechselt wieder in das Installationsverzeichnis und laden die Source-Dateien für mod_fcgi herunter:

cd /root/install
wget http://www.trieuvan.com/apache/httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz

Anschließend entpacken wir diese, wechseln in das Verzeichnis und kompilieren und installieren den Mod:

tar xvfz mod_fcgid-*.tar.gz
cd mod_fcgid-*
APXS=/opt/apache2/bin/apxs ./configure.apxs
make
sudo make install

Damit ist die Installation von Apache 2.4.20 inkl. mod_fcgid abgeschlossen!

Schritt 4: Post-Konfiguration von Apache

Um unseren Apache nun mit PHP und mod_fcgid nutzen zu können, müssen wir noch eine kleine Konfiguration in der httpd.conf vornehmen. Dazu fügen wir folgendes an das Ende (oder in die Mitte) ein:

[...] 
FcgidMaxProcesses 50
FcgidFixPathinfo 1
FcgidProcessLifeTime 0
FcgidTimeScore 3
FcgidZombieScanInterval 20
FcgidMaxRequestsPerProcess 0
FcgidMaxRequestLen 33554432
FcgidIOTimeout 120
AddHandler fcgid-script .php
Options +ExecCGI
FCGIWrapper /usr/lib/cgi-bin/php5 .php

Des weiteren solltet ihr schauen, dass die folgenden zwei Module nicht auskommentiert sind:

[..]
LoadModule fcgid_module modules/mod_fcgid.so
LoadModule suexec_module modules/mod_suexec.so
[..]

Anschließend könnt ihr den Apacheserver starten:

/opt/apache2/bin/apachectl start

Troubleshooting

Wenn die Meldung

/opt/apache2/bin/httpd: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

erscheint, suchen wir die libpcre.so.1-Datei und fügen den Pfad zu dieser zur LD_LIBRARY_PATH-Variable hinzu:

find / -name libpcre.so.1 export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

Bei der Meldung

Cannot load modules/mod_ssl.so into server: /opt/apache2/modules/mod_ssl.so: undefined symbol: SSL_CONF_CTX_finish

suchen wir die libssl.so-Datei und fügen den Pfad zu dieser ebenfalls der LD_LIBRARY_PATH-Variable hinzu:

find / -name libssl.so
export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH

Wenn ihr die folgende Fehlermeldung erhaltet:

Cannot load modules/mod_fcgid.so into server: /opt/apache2/modules/mod_fcgid.so: cannot open shared object file: No such file or directory

habt ihr vergessen mod_fcgid zu installieren, geht also in den mod_fcgid-Source-Ordner und installiert das Programm:

cd /root/install/mod_fcgid*
sudo make install

Sollte die Meldung

Wrapper /usr/lib/cgi-bin/php5 cannot be accessed: (2)No such file or directory

erscheinen, einfach PHP5-CGI installieren:

apt-get install php5-cgi

Bei weiteren Fehlermeldungen, schreibt einfach einen Kommentar, ich versuche euch dann zu helfen :)

Wenn ihr alles richtig gemacht habt, könnt ihr nun Apache konfigurieren.

Start-/Stop-Script

Das passende Startscript findet ihr hier. Einfach eine Datei in /etc/init.d/ mit dem Namen apache2 erstellen und den Inhalt einfügen.

Dann die Rechte vergeben:

chmod 0755 /etc/init.d/apache2

Anschließend starten/stoppen des Apache über:

/etc/init.d/apache2 start 

oder

service apache2 start