So machen Sie PCRE2-Unterstützung für Apache 2.4

Ich möchte meine Erfahrungen mit der Übersetzung von Apache 2.4 in PCRE2 teilen, da sogar PHP 7 die PCRE2-Bibliothek seit langem unterstützt und die Open Source Apache Software Foundation immer noch nicht vorhanden ist.
Natürlich bin ich jetzt wahrscheinlich der Veröffentlichung von Apache mit PCRE2-Unterstützung voraus, da ich die Quellen von Apache Geo verwende, aus denen hervorgeht, dass die PCRE2-Unterstützung bereits in der nächsten Veröffentlichung möglich ist, aber für diejenigen, die bereits PCRE2-Unterstützung in Apache 2.4 wünschen und nicht warten möchten Release Sharing eine der Möglichkeiten.

In dem Artikel wird davon ausgegangen, dass Sie die gesamte erforderliche Software aus der Quelle, eine Liste der Software und Versionen zum Zeitpunkt des Schreibens sammeln:

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

Erster Schritt: Erstellen und Kompilieren von PCRE2


Wir werden den Moment des Herunterladens der Quelle aus den Quellen weglassen, da dies zu offensichtlich ist. Sie haben das Archiv entpackt, gehen zum Quellordner PCRE2 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 im Präfix Ihren Pfad an, wenn Sie den Standardspeicherort für die Installation der Bibliothek nicht verwenden möchten:

 --prefix=///  

Andernfalls sammeln Sie ohne Präfix.

Die verbleibenden Befehle zeigen die Aufnahme von unterstützenden 8-Bit-, 16-Bit- und 32-Bit-Codeblöcken PCRE an. In dieser Ausführungsform wurde die Montage mit ihnen durchgeführt.

Und natürlich kompilieren wir diesen Fall mit der sequentiellen Ausführung von Befehlen:

 make make install 

Wenn alle Regeln und die Kompilierung reibungslos verlaufen sind, fahren Sie mit dem nächsten Schritt fort.

Schritt zwei: Verbinden Sie die PCRE2-Bibliothek mit dem APR


Da Apache die Quellen mit APR kompiliert, müssen wir die Bibliothek im APR selbst verbinden, da es sonst zu Fehlern bei unbekannten Funktionen in den Apache-Quellen kommen kann, da wir die neuen PCRE2-Funktionen verwenden.

Wir lassen den Moment des Herunterladens der Quelle aus den Quellen aus, da dies zu offensichtlich ist. Daher haben Sie das Archiv entpackt und den APR konfiguriert:

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

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

 --prefix=///  

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

Nun, oder: / Ihr / Pfad / zur Bibliothek / Build

Suchen Sie die Datei apr_rules.mk in diesem Verzeichnis und fügen Sie am Ende der Zeile Folgendes hinzu:

 EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl 

Bibliotheksanbindung:

 -lpcre2-8 -L///  pcre2/lib 

Speichern Sie, gehen Sie zum Stammverzeichnis der APR-Quellen: / your / path / zur Bibliothek.

Kompilieren Sie unseren modifizierten APR:

 make make install 

Wenn alle Regeln und Kompilierungen reibungslos verlaufen sind, fahren Sie mit dem nächsten Schritt fort.

Dritter Schritt: APR-util für Apache aus dem Quellcode erstellen


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

 ./configure --prefix=/etc/webserver/apr-util-161 --with-apr=///  apr make make install 

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

 --prefix=///  

Auch hier verbinden wir unseren APR:

 --with-apr=///  apr 

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


Wichtig: Laden Sie die Quelle von der neuesten Version der Gita herunter.

Wir müssen zwei Quellen wie ap_regex.h und util_pcre.c herunterladen, die folgenden Links:
ap_regex.h
util_pcre.c

Jetzt gehen wir zu unserem Apache httpd-Quellverzeichnis und erstellen 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 

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

 --prefix=/// Apache httpd 

Geben Sie außerdem nach eigenem Ermessen zusätzliche Befehle zum Erstellen von Apache an. Ich meine die Befehle zum Deaktivieren von Modulen und Bibliotheken.

Als nächstes gehen Sie zu Ihrem Apache httpd-Quellverzeichnis. Ich habe Folgendes:

 /etc/webserver/srcsrv/httpd-2.4.41 

Du gehst natürlich in dein Verzeichnis, ersetze es im Verzeichnis:

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

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

Gehen Sie auch in das Verzeichnis:

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

Ersetzen Sie die Datei util_pcre.c durch den Apache, von dem wir heruntergeladen haben

Jetzt muss noch die PCRE2-Verbindung in Apache selbst hinzugefügt werden. Sie müssen die Datei ap_config_auto.h suchen, 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 Moment, in dem Apache httpd mit PCRE2-Unterstützung kompiliert wird.
Wir gehen in unser Apache httpd Quellverzeichnis und kompilieren diesen Fall mit der sequentiellen Ausführung von Befehlen:

 make make install 

Wenn nun alles gut und fehlerfrei gelaufen ist, haben Sie Apache httpd mit PCRE2-Unterstützung zusammengestellt und kompiliert, was positive Änderungen in Apache-Modulen mit regulären PCRE-Ausdrücken bedeutet, darunter Module rewrite.

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

Außerdem sind beim Testen von Standard .htaccess keine Fehler aufgetreten, wenn jemand Fehler in die Kommentare geschrieben hat.

PS


Die Situation, zwei verschiedene Versionen von PCRE für meinen Stack zu verwenden, hat mich ein wenig gestört, und ich habe beschlossen, das Problem zu beheben.

Source: https://habr.com/ru/post/de474556/


All Articles