Ich möchte meine Erfahrungen mit der Übersetzung von Apache 2.4 auf PCRE2 teilen, da selbst PHP 7 schon lange die PCRE2-Bibliothek unterstützt, die Open-Source-Software-Stiftung Apache jedoch noch nicht.
Natürlich bin ich wahrscheinlich mit meiner Implementierung von PCRE2 in Apache der Veröffentlichung zuvor, da ich die Quellcodes von der Apache-Git-Nutzungsquelle verwende, was darauf hinweist, dass PCRE2 möglicherweise schon in der nächsten Version unterstützt wird. Für diejenigen, die jetzt schon PCRE2 in Apache 2.4 haben möchten und nicht auf die Veröffentlichung warten wollen, teile ich eine der Methoden.
Der Artikel geht davon aus, dass Sie die gesamte notwendige Software aus den Quellcodes zusammenstellen, die Liste der Software und ihrer Versionen zum Zeitpunkt des Schreibens des Artikels:
PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41
Schritt eins: PCRE2 kompilieren
Lassen Sie den Teil des Herunterladens der Quellcodes von den offiziellen Quellen außen vor, da dies zu offensichtlich ist. Nachdem Sie das Archiv entpackt haben, wechseln Sie in das Verzeichnis mit den PCRE2-Quellcodes und führen Sie den folgenden Befehl zur Unterstützung von UTF aus:
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicodeIm Präfix 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 Präfix.
Die anderen Befehle beziehen sich auf die Unterstützung von 8-Bit-, 16-Bit- und 32-Bit-Codeblöcken von PCRE. In diesem Fall wurde die Kompilierung mit ihnen durchgeführt.
Und natürlich kompilieren wir das Ganze durch die aufeinanderfolgende Ausführung der Befehle:
make
make install Wenn alles in Ordnung ist und die Kompilierung ohne Fehler durchgelaufen ist, fahren wir mit dem nächsten Schritt fort.
Schritt zwei: Binden Sie die PCRE2-Bibliothek in APR ein
Da Apache die Quellcodes mithilfe von APR kompiliert, müssen wir die Bibliothek in APR selbst einbinden, da sonst Fehler bezüglich unbekannter Funktionen in den Apache-Quellcodes auftreten können, da wir die neuen Funktionen von PCRE2 verwenden werden.
Lassen Sie den Teil des Herunterladens der Quellcodes von den offiziellen Quellen außen vor, da dies zu offensichtlich ist. Nachdem Sie das Archiv entpackt haben, haben Sie die APR-Konfiguration ausgeführt:
./configure --prefix=/etc/webserver/apr-170Natürlich geben Sie im Präfix Ihren Pfad an, wenn Sie nicht den Standardinstallationsort für die Bibliothek verwenden möchten, oder lassen es einfach weg:
--prefix=/Ihr/Pfad/zur/BibliothekNach der Konfiguration wechseln Sie in das Verzeichnis: /etc/webserver/srcsrv/apr-1.7.0/build
Oder: /Ihr/Pfad/zur/Bibliothek/build
Suchen Sie die Datei apr_rules.mk in diesem Verzeichnis und fügen Sie am Ende der Zeile, wo steht:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldlBinden Sie die Bibliothek ein:
-lpcre2-8 -L/Ihr/Pfad/zur/Bibliothek pcre2/libWir speichern und gehen in das Stammverzeichnis der APR-Quellen: /ihr/pfad/zur/bibliothek.
Wir kompilieren unser modifiziertes APR:
make
make installWenn alles in Ordnung ist und die Kompilierung ohne Fehler durchgelaufen ist, fahren wir mit dem nächsten Schritt fort.
Schritt drei: Wir erstellen aus den APR-util-Quellen für Apache
Sie haben diese Bibliothek von der offiziellen Quelle heruntergeladen, gehen Sie nun in das Stammverzeichnis des entpackten APR-util-Archivs und geben Sie der Reihe nach 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 Pfad an, wenn Sie nicht den Standardinstallationsort für die Bibliothek verwenden möchten, oder lassen es einfach weg:
--prefix=/Ihr/Pfad/zur/BibliothekHier binden wir auch unser APR ein:
--with-apr=/ihr/pfad/zur/bibliothek/aprSchritt vier: Herunterladen der Quellen von Apache-Git zur Unterstützung von PCRE2
Wichtig: Die Quellen werden aus der neuesten Version von Git heruntergeladen.
Wir müssen zwei Quellen herunterladen, nämlich ap_regex.h und util_pcre.c, die Links finden Sie unten:
Jetzt gehen wir in unser Verzeichnis der Apache httpd-Quellen und bauen Apache mit den folgenden Befehlen zusammen:
./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 Pfad an, wenn Sie nicht den Standardinstallationsort für die Bibliothek verwenden möchten, oder lassen es einfach weg:
--prefix=/ihr/pfad/zur/Apache httpdZusätzlich können Sie weitere Befehle zum Bauen von Apache nach eigenem Ermessen angeben, ich meine Befehle zum Aktivieren oder Deaktivieren von Modulen und Bibliotheken.
Danach gehen wir in unser Verzeichnis der Apache httpd-Quellen, bei mir ist das:
/etc/webserver/srcsrv/httpd-2.4.41Natürlich gehen Sie in Ihr Verzeichnis und ersetzen im Verzeichnis:
/etc/webserver/srcsrv/httpd-2.4.41/includeDie Datei ap_regex.h durch die, die wir von Apache-Git heruntergeladen haben.
Wir gehen auch in das Verzeichnis:
/etc/webserver/srcsrv/httpd-2.4.41/serverErsetzen Sie die Datei util_pcre.c durch die, die wir von Apache-Git heruntergeladen haben.
Jetzt müssen wir nur noch die PCRE2-Anbindung in Apache selbst hinzufügen. Suchen Sie die Datei ap_config_auto.h, sie befindet sich im Verzeichnis:
/etc/webserver/srcsrv/httpd-2.4.41/includeFügen Sie am Anfang dieser Datei 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 Unterstützung für PCRE2.
Gehen Sie in Ihr Verzeichnis der Apache httpd-Quellen und kompilieren Sie das Ganze durch die sequentielle Ausführung der Befehle:
make
make installWenn alles gut gelaufen ist und keine Fehler aufgetreten sind, wird Ihr Apache httpd mit Unterstützung für PCRE2 kompiliert, was positive Änderungen in den Apache-Modulen bedeutet, die PCRE reguläre Ausdrücke verwenden, eines davon ist das Modul rewrite.
Zusammenfassend lässt sich sagen, dass diese Methode die Verwendung von PCRE2 vor dem offiziellen Release von der Apache Software Foundation ermöglicht. Ich hoffe, dass bald eine Version mit Unterstützung für PCRE2 veröffentlicht wird.
Während des Testens der Standard-.htaccess traten keine Fehler auf. Wenn jemand Fehler hat, schreibt gerne in die Kommentare.
P.S.
Die Situation mit der Verwendung von zwei verschiedenen PCRE-Versionen für meinen Stack hat mich etwas gestresst, und ich habe beschlossen, das zu beheben.
Quelle: habr.com
