Hvordan lage PCRE2-støtte for Apache 2.4

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:
ap_regex.h
util_pcre.c

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

Legg til en kommentar