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
