Hur man gör PCRE2-stöd för Apache 2.4

Jag skulle vilja dela med mig av min erfarenhet av att översätta Apache 2.4 till PCRE2, eftersom till och med PHP 7 har stött PCRE2-biblioteket under lång tid, men Apache Software Foundation med öppen källkod gör det fortfarande inte.
Naturligtvis ligger jag nu troligen före Apache-utgåvan med PCRE2-stöd, eftersom jag använder källorna från Apache-git, vilket säger oss att PCRE2-stöd är möjligt redan i nästa utgåva, men för de som redan vill ha PCRE2-stöd i Apache 2.4, och som inte vill vänta på release delar jag ett av sätten.

Artikeln förutsätter att du samlar in all nödvändig programvara från källkod, en lista över programvara och versioner i skrivande stund:

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

Steg ett: bygg och kompilera PCRE2

Låt oss utelämna ögonblicket för att ladda ner källorna från de officiella källorna eftersom detta är för uppenbart, så du har packat upp arkivet, gå till mappen med PCRE2-källorna och kör följande kommando för att stödja UTF:

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

Ange din sökväg i prefixet om du inte vill använda standardplatsen för att installera biblioteket:

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

Annars samlar du utan prefix.

De återstående kommandona indikerar införandet av stöd för 8-bitars, 16-bitars och 32-bitars PCRE-kodblock, i denna version utfördes monteringen med dem.

Och naturligtvis kompilerar vi denna sak med sekventiell exekvering av kommandon:

make
make install

Om allt är bra och kompileringen gick utan fel, gå vidare till nästa steg.

Steg två: anslut PCRE2-biblioteket till APR

Eftersom Apache kompilerar källor med hjälp av APR måste vi inkludera biblioteket i själva APR, annars kan det uppstå fel om okända funktioner i Apache-källor, eftersom vi kommer att använda nya PCRE2-funktioner.

Låt oss utelämna ögonblicket för nedladdning av källor från officiella källor eftersom detta är för uppenbart, så du packade upp arkivet och utförde APR-konfigurationen:

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

Naturligtvis anger du din sökväg i prefixet om du inte vill använda standardplatsen för att installera biblioteket eller om du inte anger:

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

När du har slutfört konfigurationen, gå till katalogen: /etc/webserver/srcsrv/apr-1.7.0/build

Eller: /din/sökväg/till biblioteket/bygg

Hitta filen apr_rules.mk i den här katalogen och lägg till raderna i slutet där:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Ansluta biblioteket:

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

Spara och gå till rotkatalogen för APR-källorna: /din/sökväg/till biblioteket.

Låt oss sammanställa vår modifierade APR:

make
make install

Om allt är bra och kompileringen gick utan fel, gå vidare till nästa steg.

Steg tre: bygg APR-util för Apache från källor

Du har laddat ner det här biblioteket från källan, gå till rotmappen för det uppackade arkivet med APR-util och skriv in följande kommandon i tur och ordning:

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

Naturligtvis anger du din sökväg i prefixet om du inte vill använda standardplatsen för att installera biblioteket eller om du inte anger:

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

Vi kopplar även vår APR här:

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

Steg fyra: ladda ner källor från Apache git för att stödja PCRE2

Viktigt: Vi laddar ner källorna från den senaste utgåvan av git.

Vi måste ladda ner två källor som ap_regex.h och util_pcre.c, länkar nedan:
ap_regex.h
util_pcre.c

Gå nu till din Apache httpd-källkatalog och bygg Apache med följande kommandon:

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

Naturligtvis anger du din sökväg i prefixet om du inte vill använda standardplatsen för att installera biblioteket eller om du inte anger:

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

Du kan också specificera ytterligare kommandon för att bygga Apache efter eget gottfinnande, jag menar kommandona för att aktivera eller inaktivera moduler och bibliotek.

Därefter går vi till vår Apache httpd källkatalog, jag har detta:

/etc/webserver/srcsrv/httpd-2.4.41

Du går naturligtvis till din katalog, ersätt i katalogen:

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

Filen ap_regex.h, som vi laddade ner från Apache git.

Vi går också till katalogen:

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

Vi ersätter filen util_pcre.c med den vi laddade ner från Apache git

Nu återstår bara att lägga till PCRE2-anslutningen i själva Apache, du behöver hitta filen ap_config_auto.h, den finns i katalogen:

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

Allra i början av den här filen, infoga följande rader:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Nåväl, nu är vi redo för det verkliga ögonblicket att kompilera Apache httpd med PCRE2-stöd.
Låt oss gå till vår Apache httpd källkatalog och kompilera denna genom att sekventiellt köra kommandona:

make
make install

Nu, om allt gick bra och utan fel, då kommer du att ha satt ihop och kompilerat Apache httpd med PCRE2-stöd, vilket innebär positiva förändringar i Apache-moduler som använder PCRE reguljära uttryck, en av dessa är Module rewrite.

Sammanfattningsvis gör denna metod det möjligt att använda PCRE2 innan den officiella releasen från Apache Software Foundation, jag hoppas att en version med PCRE2-stöd kommer att släppas snart.

Dessutom, under testning av standard .htaccess, uppstod inga fel, om någon har några fel, skriv i kommentarerna.

PS

Jag blev lite förvirrad av situationen att använda två olika versioner av PCRE för min stack, och jag bestämde mig för att fixa det.

Källa: will.com

Lägg en kommentar