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-unicodeI prefixet anger du din vÀg om du inte vill anvÀnda den standardplats som biblioteket ska installeras pÄ:
--prefix=\/din\/vÀg\/till biblioteketAnnars 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-170SjÀ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 biblioteketEfter 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 -ldlAnslutning av biblioteket:
-lpcre2-8 -L\/din\/vÀg\/till biblioteket pcre2\/libVi 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 installOm 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 installSjÀ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 biblioteketHÀr kopplar vi ocksÄ in vÄr APR:
--with-apr=/din/sökvÀg/till/biblioteket/aprSteg 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:
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-configSjÀ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 httpdDu 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.41Du gÄr sjÀlvklart till din katalog, vi byter ut i katalogen:
/etc/webserver/srcsrv/httpd-2.4.41/includeFilen 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/serverVi 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/includeI 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 installOm 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
