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-unicodeIm Prefix geben Sie Ihren Pfad an, wenn Sie nicht den Standardinstallationsort für die Bibliothek verwenden möchten:
--prefix=/Ihr/Pfad/zur/BibliothekAndernfalls 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-170Natü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/BibliothekNach 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 -ldlEinbindung der Bibliothek:
-lpcre2-8 -L/Ihr/Pfad/zur/PCRE2/Bibliothek/libWir wechseln in das Hauptverzeichnis der APR-Quellen: /Ihr/Pfad/zur/Bibliothek.
Wir kompilieren unser modifiziertes APR:
make
make installWenn 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 installNatü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/BibliothekHier verbinden wir auch unser APR:
--with-apr=/Ihr/Pfad/zur/Bibliothek/aprVierter 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:
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-configNatü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/HTTPDZusä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.41Natürlich gehen Sie in Ihr Verzeichnis, wir ersetzen im Verzeichnis:
/etc/webserver/srcsrv/httpd-2.4.41/includeDie 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/serverWir 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/includeGanz 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 installWenn 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
