Jeg vil gjerne dele min erfaring med å oversette Apache 2.4 til PCRE2, siden selv PHP 7 har støttet PCRE2-biblioteket i lang tid, men åpen kildekode Apache Software Foundation gjør det fortsatt ikke.
Selvfølgelig er jeg nå sannsynligvis foran Apache-utgivelsen med PCRE2-støtte, siden jeg bruker kildene fra Apache-git, som forteller oss at PCRE2-støtte allerede er mulig i neste utgivelse, men for de som allerede ønsker PCRE2-støtte i Apache 2.4, og som ikke ønsker å vente utgivelsen deler jeg en av måtene.
Artikkelen forutsetter at du samler all nødvendig programvare fra kildekode, en liste over programvare og versjoner i skrivende stund:
PCRE2-10.33
April 1.7.0
APR-uttil 1.6.1
Apache httpd 2.4.41
Trinn én: bygg og kompiler PCRE2
La oss hoppe over øyeblikket med å laste ned kildene fra de offisielle kildene siden dette er for åpenbart, så du har pakket ut arkivet, gå til mappen med PCRE2-kildene og kjør følgende kommando for å støtte UTF:
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode
Angi banen din i prefikset hvis du ikke vil bruke standardplasseringen for å installere biblioteket:
--prefix=/ваш/путь/до библиотеки
Ellers samler du uten prefiks.
De resterende kommandoene indikerer inkludering av støtter for 8-biters, 16-biters og 32-biters PCRE-kodeblokker, i denne versjonen ble monteringen utført med dem.
Og selvfølgelig kompilerer vi denne tingen ved å bruke sekvensiell utførelse av kommandoer:
make
make install
Hvis alt er bra og kompileringen gikk uten feil, gå videre til neste trinn.
Trinn to: koble PCRE2-biblioteket til APR
Siden Apache kompilerer kilder ved hjelp av APR, må vi inkludere biblioteket i APR selv, ellers kan det oppstå feil om ukjente funksjoner i Apache-kilder, fordi vi skal bruke nye PCRE2-funksjoner.
La oss utelate øyeblikket med å laste ned kilder fra offisielle kilder siden dette er for åpenbart, så du pakket ut arkivet og utførte APR-konfigurasjonen:
./configure --prefix=/etc/webserver/apr-170
Naturligvis angir du banen din i prefikset hvis du ikke ønsker å bruke standardplasseringen for å installere biblioteket, eller hvis du ikke spesifiserer:
--prefix=/ваш/путь/до библиотеки
Etter å ha fullført konfigurasjonen, gå til katalogen: /etc/webserver/srcsrv/apr-1.7.0/build
Eller: /din/sti/til biblioteket/bygg
Finn filen apr_rules.mk i denne katalogen, og legg til linjene på slutten der:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl
Koble til biblioteket:
-lpcre2-8 -L/ваш/путь/до библиотеки pcre2/lib
Lagre og gå til rotkatalogen til APR-kildene: /din/sti/til biblioteket.
La oss kompilere vår modifiserte APR:
make
make install
Hvis alt er bra og kompileringen gikk uten feil, gå videre til neste trinn.
Trinn tre: bygg APR-util for Apache fra kilder
Du har lastet ned dette biblioteket fra kilden, gå til rotmappen til det utpakkede arkivet med APR-util, og skriv inn følgende kommandoer sekvensielt:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/ваш/путь/до библиотеки apr
make
make install
Naturligvis angir du banen din i prefikset hvis du ikke ønsker å bruke standardplasseringen for å installere biblioteket, eller hvis du ikke spesifiserer:
--prefix=/ваш/путь/до библиотеки
Vi kobler også vår APR her:
--with-apr=/ваш/путь/до библиотеки apr
Trinn fire: last ned kilder fra Apache git for å støtte PCRE2
Viktig: Vi laster ned kildene fra den siste utgaven av git.
Vi må laste ned to kilder som ap_regex.h og util_pcre.c, lenker nedenfor:
Gå nå til Apache httpd-kildekatalogen og bygg Apache med følgende kommandoer:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/путь/до библиотеки apr --with-apr-util=/ваш/путь/до библиотеки apr-util --with-pcre=/ваш/путь/до библиотеки pcre2/bin/pcre2-config
Naturligvis angir du banen din i prefikset hvis du ikke ønsker å bruke standardplasseringen for å installere biblioteket, eller hvis du ikke spesifiserer:
--prefix=/ваш/путь/до Apache httpd
Du kan også spesifisere ytterligere kommandoer for å bygge Apache etter eget skjønn, jeg mener kommandoene for å aktivere eller deaktivere moduler og biblioteker.
Deretter går vi til vår Apache httpd-kildekatalog, jeg har denne:
/etc/webserver/srcsrv/httpd-2.4.41
Du går naturligvis til katalogen din, erstatt i katalogen:
/etc/webserver/srcsrv/httpd-2.4.41/include
Filen ap_regex.h, som vi lastet ned fra Apache git.
Vi går også til katalogen:
/etc/webserver/srcsrv/httpd-2.4.41/server
Vi erstatter filen util_pcre.c med den vi lastet ned fra Apache git
Nå gjenstår det bare å legge til PCRE2-tilkoblingen i selve Apache, du må finne filen ap_config_auto.h, den ligger i katalogen:
/etc/webserver/srcsrv/httpd-2.4.41/include
Helt i begynnelsen av denne filen, sett inn følgende linjer:
/* Load PCRE2 */
#define HAVE_PCRE2 1
Vel, nå er vi klare for det virkelige øyeblikket med å kompilere Apache httpd med PCRE2-støtte.
La oss gå til vår Apache httpd-kildekatalog og kompilere denne ved å utføre kommandoene sekvensielt:
make
make install
Nå, hvis alt gikk bra og uten feil, så vil du ha satt sammen og kompilert Apache httpd med PCRE2-støtte, som betyr positive endringer i Apache-moduler som bruker PCRE regulære uttrykk, en av disse er Module rewrite.
Avslutningsvis gjør denne metoden det mulig å bruke PCRE2 før utgivelsen fra Apache Software Foundation, jeg håper at en versjon med PCRE2-støtte vil bli utgitt snart.
Også under testing av standard .htaccess oppstod det ingen feil, hvis noen har noen feil, skriv i kommentarfeltet.
PS
Jeg ble litt forvirret av situasjonen med å bruke to forskjellige versjoner av PCRE for stabelen min, og jeg bestemte meg for å fikse det.
Kilde: www.habr.com