So stellen Sie PCRE2-Unterstützung für Apache 2.4 her

Ich möchte meine Erfahrungen mit der Übersetzung von Apache 2.4 in PCRE2 teilen, da selbst PHP 7 die PCRE2-Bibliothek schon seit langem unterstützt, die Open-Source-Apache Software Foundation jedoch immer noch nicht.
Natürlich bin ich der Apache-Version mit PCRE2-Unterstützung jetzt wahrscheinlich voraus, da ich die Quellen aus dem Apache-Git verwende, die uns sagen, dass PCRE2-Unterstützung bereits in der nächsten Version möglich ist, aber für diejenigen, die bereits PCRE2-Unterstützung wünschen Apache 2.4, und wer nicht auf die Veröffentlichung warten möchte, dem teile ich eine der Möglichkeiten.

Der Artikel geht davon aus, dass Sie die gesamte erforderliche Software aus dem Quellcode, einer Liste der Software und den Versionen zum Zeitpunkt des Schreibens zusammenstellen:

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

Schritt eins: PCRE2 erstellen und kompilieren

Lassen Sie uns den Moment des Herunterladens der Quellen von den offiziellen Quellen überspringen, da dies zu offensichtlich ist. Sie haben also das Archiv entpackt, gehen in den Ordner mit den PCRE2-Quellen und führen den folgenden Befehl aus, um UTF zu unterstützen:

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

Geben Sie Ihren Pfad im Präfix an, wenn Sie nicht den Standardspeicherort für die Installation der Bibliothek verwenden möchten:

--prefix=/ваш/путь/до библиотеки

Ansonsten sammeln Sie ohne Präfix.

Die übrigen Befehle weisen auf die Aufnahme von Unterstützungen für 8-Bit-, 16-Bit- und 32-Bit-PCRE-Codeblöcke hin, in dieser Version wurde die Montage mit ihnen durchgeführt.

Und natürlich kompilieren wir dieses Ding durch sequentielle Ausführung von Befehlen:

make
make install

Wenn alles in Ordnung ist und die Kompilierung fehlerfrei verlief, fahren Sie mit dem nächsten Schritt fort.

Schritt zwei: Verbinden Sie die PCRE2-Bibliothek mit APR

Da Apache Quellen mit APR kompiliert, müssen wir die Bibliothek in APR selbst einbinden, andernfalls kann es zu Fehlern bezüglich unbekannter Funktionen in Apache-Quellen kommen, da wir neue PCRE2-Funktionen verwenden werden.

Lassen wir den Moment des Herunterladens von Quellen aus offiziellen Quellen weg, da dies zu offensichtlich ist. Sie haben also das Archiv entpackt und die APR-Konfiguration durchgeführt:

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

Selbstverständlich geben Sie Ihren Pfad im Präfix an, wenn Sie nicht den Standardspeicherort für die Installation der Bibliothek verwenden möchten oder wenn Sie Folgendes nicht angeben:

--prefix=/ваш/путь/до библиотеки

Wechseln Sie nach Abschluss der Konfiguration in das Verzeichnis: /etc/webserver/srcsrv/apr-1.7.0/build

Oder: /Ihr/Pfad/zur Bibliothek/Build

Suchen Sie in diesem Verzeichnis nach der Datei apr_rules.mk und fügen Sie am Ende die folgenden Zeilen hinzu:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Anbindung der Bibliothek:

-lpcre2-8 -L/ваш/путь/до библиотеки pcre2/lib

Speichern Sie und gehen Sie zum Stammverzeichnis der APR-Quellen: /Ihr/Pfad/zur Bibliothek.

Lassen Sie uns unseren modifizierten effektiven Jahreszins zusammenstellen:

make
make install

Wenn alles in Ordnung ist und die Kompilierung fehlerfrei verlief, fahren Sie mit dem nächsten Schritt fort.

Schritt drei: Erstellen Sie APR-util für Apache aus Quellen

Sie haben diese Bibliothek von der Quelle heruntergeladen, gehen mit APR-util in den Stammordner des entpackten Archivs und geben nacheinander die folgenden Befehle ein:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/ваш/путь/до библиотеки apr
make
make install

Selbstverständlich geben Sie Ihren Pfad im Präfix an, wenn Sie nicht den Standardspeicherort für die Installation der Bibliothek verwenden möchten oder wenn Sie Folgendes nicht angeben:

--prefix=/ваш/путь/до библиотеки

Hier verbinden wir auch unseren effektiven Jahreszins:

--with-apr=/ваш/путь/до библиотеки apr

Schritt vier: Laden Sie Quellen von Apache Git herunter, um PCRE2 zu unterstützen

Wichtig: Wir laden die Quellen aus der neuesten Ausgabe des Git herunter.

Wir müssen zwei Quellen herunterladen, z. B. ap_regex.h und util_pcre.c, Links unten:
ap_regex.h
util_pcre.c

Gehen Sie nun in Ihr Apache httpd-Quellverzeichnis und erstellen Sie Apache mit den folgenden Befehlen:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/путь/до библиотеки apr --with-apr-util=/ваш/путь/до библиотеки apr-util --with-pcre=/ваш/путь/до библиотеки pcre2/bin/pcre2-config

Selbstverständlich geben Sie Ihren Pfad im Präfix an, wenn Sie nicht den Standardspeicherort für die Installation der Bibliothek verwenden möchten oder wenn Sie Folgendes nicht angeben:

--prefix=/ваш/путь/до Apache httpd

Sie können nach eigenem Ermessen auch zusätzliche Befehle zum Erstellen von Apache angeben, ich meine die Befehle zum Aktivieren oder Deaktivieren von Modulen und Bibliotheken.

Als nächstes gehen wir zu unserem Apache httpd-Quellverzeichnis. Ich habe Folgendes:

/etc/webserver/srcsrv/httpd-2.4.41

Sie gehen natürlich in Ihr Verzeichnis und ersetzen im Verzeichnis:

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

Die Datei ap_regex.h, die wir vom Apache-Git heruntergeladen haben.

Wir gehen auch in das Verzeichnis:

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

Wir ersetzen die Datei util_pcre.c durch die, die wir vom Apache-Git heruntergeladen haben

Jetzt müssen Sie nur noch die PCRE2-Verbindung in Apache selbst hinzufügen. Sie müssen die Datei ap_config_auto.h finden. Sie befindet sich im Verzeichnis:

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

Fügen Sie ganz am Anfang dieser Datei die folgenden Zeilen ein:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Nun sind wir bereit für den eigentlichen Moment der Kompilierung von Apache httpd mit PCRE2-Unterstützung.
Gehen wir zu unserem Apache httpd-Quellverzeichnis und kompilieren es, indem wir nacheinander die folgenden Befehle ausführen:

make
make install

Wenn nun alles gut und ohne Fehler gelaufen ist, haben Sie Apache httpd mit PCRE2-Unterstützung zusammengestellt und kompiliert, was positive Änderungen in Apache-Modulen bedeutet, die reguläre PCRE-Ausdrücke verwenden, eine davon ist das Umschreiben von Modulen.

Zusammenfassend lässt sich sagen, dass diese Methode die Verwendung von PCRE2 vor der Veröffentlichung durch die Apache Software Foundation ermöglicht. Ich hoffe, dass bald eine Version mit PCRE2-Unterstützung veröffentlicht wird.

Außerdem sind beim Testen der Standard-.htaccess-Datei keine Fehler aufgetreten. Wenn jemand Fehler hat, schreiben Sie ihn in die Kommentare.

PS

Die Situation, zwei verschiedene Versionen von PCRE für meinen Stack zu verwenden, verwirrte mich ein wenig und ich beschloss, das Problem zu beheben.

Source: habr.com

Kommentar hinzufügen