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

Jag vill dela med mig av min erfarenhet av att översÀtta Apache 2.4 till PCRE2, eftersom Àven PHP 7 lÀnge har stöttat biblioteket PCRE2, men open source Apache Software Foundation fortfarande inte gör det.
SjÀlvklart kanske jag nu ligger före releasen av Apache med stöd för PCRE2, eftersom jag anvÀnder kÀllkoden frÄn Apache's git, vilket innebÀr att stöd för PCRE2 redan kan komma i nÀsta release. Men för dem som redan nu vill ha stöd för PCRE2 i Apache 2.4 och inte vill vÀnta pÄ releasen, delar jag med mig av ett av sÀtten.

Artikeln förutsÀtter att du samlar all nödvÀndig mjukvara frÄn kÀllkoden. Lista över mjukvara och versioner vid tidpunkten av artikelskrivning:

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

Steg ett: samla och kompilera PCRE2

Vi hoppar över steget för att ladda ner kÀllkoder frÄn officiella kÀllor, eftersom det Àr för uppenbart. SÄ, du har packat upp arkivet, gÄ till mappen med PCRE2-kÀllkoden 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

I prefixet anger du din vÀg om du inte vill anvÀnda den standardplats som biblioteket ska installeras pÄ:

--prefix=\/din\/vÀg\/till biblioteket

Annars kompilerar du utan prefix.

De andra kommandona anger att stöd ska inkluderas för 8-bitars, 16-bitars och 32-bitars PCRE kodblock, i detta fall har byggandet genomförts med dem.

Och sjÀlvklart kompilerar vi detta genom att utföra kommandona i följd:

make
make install

Om allt Àr bra och kompileringen gick utan fel, gÄr vi vidare till nÀsta steg.

Steg tvÄ: ansluta PCRE2-biblioteket i APR

Eftersom Apache kompilerar kÀllkoden med hjÀlp av APR, behöver vi ansluta biblioteket i sjÀlva APR, annars kan det uppstÄ fel om okÀnda funktioner i Apache:s kÀllkod, eftersom vi kommer att anvÀnda nya funktioner frÄn PCRE2.

Vi hoppar över steget för att ladda ner kÀllkoder frÄn officiella kÀllor, eftersom det Àr för uppenbart. SÄ, du har packat upp arkivet och konfigurerat APR:

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

SjÀlvklart anger du din vÀg i prefixet om du inte vill anvÀnda den standardplats som biblioteket ska installeras pÄ, eller sÄ anger du inget:

--prefix=\/din\/vÀg\/till biblioteket

Efter att ha utfört konfigurationen gÄr du till katalogen: \/etc\/webserver\/srcsrv\/apr-1.7.0\/build

Eller: \/din\/vÀg\/till biblioteket\/build

Hitta filen apr_rules.mk i den hÀr katalogen och lÀgg till i slutet av raden dÀr:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Anslutning av biblioteket:

-lpcre2-8 -L\/din\/vÀg\/till biblioteket pcre2\/lib

Vi sparar och gÄr till rotkatalogen för APR-kÀllkoden: /din/sökvÀg/till/biblioteket.

Vi kompilerar vÄr Àndrade APR:

make
make install

Om allt Àr bra och kompileringen gick utan fel, gÄr vi vidare till nÀsta steg.

Steg tre: vi bygger APR-util frÄn kÀllkoden för Apache

Du har laddat ner detta bibliotek frÄn den officiella kÀllan, gÄ till rotmappen för den uppackade APR-util-arkivet och skriv in följande kommandon:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/din/sökvÀg/till/biblioteket/apr
make
make install

SjÀlvklart anger du din vÀg i prefixet om du inte vill anvÀnda den standardplats som biblioteket ska installeras pÄ, eller sÄ anger du inget:

--prefix=\/din\/vÀg\/till biblioteket

HÀr kopplar vi ocksÄ in vÄr APR:

--with-apr=/din/sökvÀg/till/biblioteket/apr

Steg fyra: laddar ner kÀllkoden frÄn Apache Git för att stödja PCRE2

Viktigt: Ladda ner kÀllkoden frÄn den senaste versionen pÄ Git.

Vi behöver ladda ner tvÄ kÀllfiler, nÀmligen ap_regex.h och util_pcre.c, lÀnkarna nedan:
ap_regex.h
util_pcre.c

Nu gÄr vi till din Apache httpd-kÀllkodskatalog och bygger Apache med följande kommandon:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/din/sökvÀg/till/biblioteket/apr --with-apr-util=/din/sökvÀg/till/biblioteket/apr-util --with-pcre=/din/sökvÀg/till/biblioteket/pcre2/bin/pcre2-config

SjÀlvklart anger du din vÀg i prefixet om du inte vill anvÀnda den standardplats som biblioteket ska installeras pÄ, eller sÄ anger du inget:

--prefix=/din/sökvÀg/till/Apache httpd

Du kan ocksÄ ange ytterligare kommandon för att bygga Apache efter eget val, jag menar kommandon för att aktivera eller inaktivera moduler och bibliotek.

Vidare gÄr vi till din Apache httpd-kÀllkodskatalog, för mig Àr det:

/etc/webserver/srcsrv/httpd-2.4.41

Du gÄr sjÀlvklart till din katalog, vi byter ut i katalogen:

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

Filen ap_regex.h mot den vi laddade ner frÄn Apache Git.

Vi gÄr ocksÄ till katalogen:

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

Vi byter ut filen util_pcre.c mot den vi laddade ner frÄn Apache Git

Nu ÄterstÄr det att lÀgga till PCRE2-stöd i Apache, vi behöver hitta filen ap_config_auto.h, den finns i katalogen:

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

I början av denna fil ska du klistra in följande rader:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Nu Àr vi redo för det verkliga kompileringsögonblicket för Apache httpd med PCRE2-stöd.
Vi gÄr till din Apache httpd-kÀllkodskatalog, och kompilerar detta genom att utföra kommandona i följd:

make
make install

Om allt har gÄtt bra och utan fel, sÄ kommer du att ha en kompilerad Apache httpd med PCRE2-stöd, vilket innebÀr positiva förÀndringar i Apache-moduler som anvÀnder PCRE-reguljÀra uttryck, ett sÄdant Àr Module rewrite.

Avslutningsvis ger denna metod möjlighet att anvÀnda PCRE2 före den officiella utgÄvan frÄn Apache Software Foundation, jag hoppas att det snart kommer en version med PCRE2-stöd.

Under testningen av standard .htaccess uppstod inga fel, om nÄgon fÄr fel sÄ skriv i kommentarerna.

P.S.

Jag kÀnde mig lite stressad över situationen med att anvÀnda tvÄ olika versioner av PCRE för min stack, sÄ jag bestÀmde mig för att ÄtgÀrda det.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster