So aktivieren Sie die PCRE2-Unterstützung für Apache 2.4

Ich möchte meine Erfahrungen beim Umstieg auf PCRE2 in Apache 2.4 teilen, da sogar PHP 7 diese Bibliothek bereits lange unterstützt, während die Apache Software Foundation weiterhin ohne Unterstützung bleibt.
Natürlich liege ich wahrscheinlich mit der PCRE2-Unterstützung in Apache voraus, da ich die Quellcodes von Git Apache benutze, was darauf hindeutet, dass die PCRE2-Unterstützung möglicherweise in der nächsten Version verfügbar sein wird. Für diejenigen, die jedoch jetzt schon PCRE2 in Apache 2.4 integrieren möchten und nicht auf die offizielle Version warten wollen, teile ich einen der möglichen Ansätze.

Der Artikel setzt voraus, dass Sie alle benötigten Softwarekomponenten aus dem Quellcode kompilieren. Hier sind die Software und Versionen zum Zeitpunkt der Erstellung des Artikels:

PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41

Schritt eins: PCRE2 kompilieren und erstellen

Lassen Sie uns den Download der Quellcodes von den offiziellen Quellen weglassen, da dies zu offensichtlich ist. Nachdem Sie das Archiv entpackt haben, navigieren Sie in das Verzeichnis mit den PCRE2-Quellen und führen Sie den folgenden Befehl zur Aktivierung der UTF-Unterstützung aus:

./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode

Im Prefix geben Sie Ihren Pfad an, wenn Sie nicht den Standardinstallationsort für die Bibliothek verwenden möchten:

--prefix=/Ihr/Pfad/zur/Bibliothek

Andernfalls kompilieren Sie ohne Prefix.

Die anderen Befehle beziehen sich auf die Aktivierung der Unterstützung für 8-Bit-, 16-Bit- und 32-Bit-PCRE-Codeblöcke. In dieser Version wurde die Kompilierung mit diesen durchgeführt.

Und natürlich kompilieren wir das Ganze, indem wir die Befehle nacheinander ausführen:

make
make install

Wenn alles in Ordnung ist und die Kompilierung ohne Fehler abläuft, können wir mit dem nächsten Schritt fortfahren.

Zweiter Schritt: PCRE2-Bibliothek in APR einbinden

Da Apache die Quellcodes über APR kompiliert, müssen wir die Bibliothek in APR einbinden, andernfalls können Fehler bezüglich unbekannter Funktionen in den Apache-Quellcodes auftreten, da wir neue Funktionen von PCRE2 verwenden werden.

Wir überspringen den Schritt des Herunterladens der Quellen von den offiziellen Quellen, da dies zu offensichtlich ist. Angenommen, Sie haben das Archiv entpackt und die APR-Konfiguration ausgeführt:

./configure --prefix=/etc/webserver/apr-170

Natürlich geben Sie im Präfix Ihren eigenen Pfad an, wenn Sie nicht den Standardinstallationsort für die Bibliothek verwenden möchten, oder Sie lassen es einfach weg:

--prefix=/Ihr/Pfad/zur/Bibliothek

Nach der Konfiguration gehen Sie in das Verzeichnis: /etc/webserver/srcsrv/apr-1.7.0/build

Oder: /Ihr/Pfad/zur Bibliothek/build

Sie finden die Datei apr_rules.mk in diesem Verzeichnis und fügen am Ende der Zeile hinzu, wo:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Einbindung der Bibliothek:

-lpcre2-8 -L/Ihr/Pfad/zur/PCRE2/Bibliothek/lib

Wir wechseln in das Hauptverzeichnis der APR-Quellen: /Ihr/Pfad/zur/Bibliothek.

Wir kompilieren unser modifiziertes APR:

make
make install

Wenn alles in Ordnung ist und die Kompilierung ohne Fehler abläuft, können wir mit dem nächsten Schritt fortfahren.

Dritter Schritt: Quellcode von APR-util für Apache kompilieren

Sie haben diese Bibliothek von der offiziellen Quelle heruntergeladen, navigieren Sie zu dem Hauptordner des entpackten Archivs mit APR-util und geben Sie nacheinander die folgenden Befehle ein:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/Ihr/Pfad/zur/Bibliothek/apr
make
make install

Natürlich geben Sie im Präfix Ihren eigenen Pfad an, wenn Sie nicht den Standardinstallationsort für die Bibliothek verwenden möchten, oder Sie lassen es einfach weg:

--prefix=/Ihr/Pfad/zur/Bibliothek

Hier verbinden wir auch unser APR:

--with-apr=/Ihr/Pfad/zur/Bibliothek/apr

Vierter Schritt: Quellcode von Apache Git für PCRE2 herunterladen

Wichtig: Der Quellcode sollte aus dem Git der neuesten Version heruntergeladen werden.

Wir müssen zwei Dateien herunterladen: ap_regex.h und util_pcre.c, Links siehe unten:
ap_regex.h
util_pcre.c

Jetzt gehen wir in das Verzeichnis der Apache HTTPD-Quellen und bauen Apache mit den folgenden Befehlen:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/Ihr/Pfad/zur/Bibliothek/apr --with-apr-util=/Ihr/Pfad/zur/Bibliothek/apr-util --with-pcre=/Ihr/Pfad/zur/Bibliothek/pcre2/bin/pcre2-config

Natürlich geben Sie im Präfix Ihren eigenen Pfad an, wenn Sie nicht den Standardinstallationsort für die Bibliothek verwenden möchten, oder Sie lassen es einfach weg:

--prefix=/Ihr/Pfad/zur/Apache/HTTPD

Zusätzlich können Sie weitere Befehle zur Apache-Baukonfiguration nach eigenem Ermessen angeben, beispielsweise das Aktivieren oder Deaktivieren von Modulen und Bibliotheken.

Als Nächstes wechseln wir in unser Verzeichnis der Apache httpd-Quellen, bei mir ist es:

/etc/webserver/srcsrv/httpd-2.4.41

Natürlich gehen Sie in Ihr Verzeichnis, wir ersetzen im Verzeichnis:

/etc/webserver/srcsrv/httpd-2.4.41/include

Die Datei ap_regex.h durch die, die wir von Git heruntergeladen haben.

Dann gehen wir in das Verzeichnis:

/etc/webserver/srcsrv/httpd-2.4.41/server

Wir ersetzen die Datei util_pcre.c durch die, die wir von Git heruntergeladen haben.

Jetzt müssen wir die PCRE2-Anbindung in der Apache-Konfiguration hinzufügen. Wir müssen die Datei ap_config_auto.h finden, die sich im Verzeichnis befindet:

/etc/webserver/srcsrv/httpd-2.4.41/include

Ganz am Anfang dieser Datei fügen Sie die folgenden Zeilen ein:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Jetzt sind wir bereit für den entscheidenden Moment der Kompilierung von Apache httpd mit PCRE2-Unterstützung.
Wir gehen zurück in unser Verzeichnis der Apache httpd-Quellen und kompilieren dies, indem wir die Befehle nacheinander ausführen:

make
make install

Wenn jetzt alles gut gelaufen ist und keine Fehler aufgetreten sind, haben Sie einen kompilierten Apache httpd mit PCRE2-Unterstützung, was positive Änderungen in den Apache-Modulen mit PCRE-regulären Ausdrücken zur Folge hat, eines davon ist das Modul rewrite.

Zusammenfassend ermöglicht diese Methode die Verwendung von PCRE2 vor der offiziellen Veröffentlichung durch die Apache Software Foundation. Ich hoffe, dass bald eine Version mit PCRE2-Unterstützung herauskommt.

Während der Tests der Standard-.htaccess gab es keine Fehler. Sollte es irgendwelche Probleme geben, lassen Sie es mich in den Kommentaren wissen.

P.S.

Es hat mich etwas gestört, dass ich zwei verschiedene Versionen von PCRE für meinen Stack verwendet habe, und ich habe mich entschieden, das zu beheben.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster