Sådan laver du PCRE2-understøttelse til Apache 2.4

Jeg vil gerne dele min erfaring med at oversætte Apache 2.4 til PCRE2, da selv PHP 7 har understøttet PCRE2-biblioteket i lang tid, men det gør open source Apache Software Foundation stadig ikke.
Selvfølgelig er jeg nu nok foran Apache-udgivelsen med PCRE2-understøttelse, da jeg bruger kilderne fra Apache-git, som fortæller os, at PCRE2-understøttelse allerede er mulig i næste udgivelse, men for dem, der allerede ønsker PCRE2-understøttelse i Apache 2.4, og som ikke ønsker at vente på udgivelsen deler jeg en af ​​måderne.

Artiklen forudsætter, at du samler al den nødvendige software fra kildekode, en liste over software og versioner i skrivende stund:

PCRE2-10.33
APR 1.7.0
ÅOP-udtil 1.6.1
Apache httpd 2.4.41

Trin et: Byg og kompilér PCRE2

Lad os springe tidspunktet for at downloade kilderne fra de officielle kilder over, da dette er for indlysende, så du har pakket arkivet ud, gå til mappen med PCRE2-kilderne og kør følgende kommando for at understøtte UTF:

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

I præfikset skal du angive din sti, hvis du ikke ønsker at bruge standardplaceringen til at installere biblioteket:

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

Ellers samler du uden præfiks.

De resterende kommandoer angiver inklusion af understøttelser for 8-bit, 16-bit og 32-bit PCRE-kodeblokke, i denne version blev samlingen udført med dem.

Og selvfølgelig kompilerer vi denne ting ved hjælp af sekventiel udførelse af kommandoer:

make
make install

Hvis alt er i orden, og kompileringen gik uden fejl, skal du gå videre til næste trin.

Trin to: Tilslut PCRE2-biblioteket til APR

Da Apache kompilerer kilder ved hjælp af APR, skal vi inkludere biblioteket i selve APR, ellers kan der være fejl om ukendte funktioner i Apache-kilder, fordi vi kommer til at bruge nye PCRE2-funktioner.

Lad os udelade tidspunktet for download af kilder fra officielle kilder, da dette er for indlysende, så du pakkede arkivet ud og udførte APR-konfigurationen:

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

Du angiver naturligvis din sti i præfikset, hvis du ikke ønsker at bruge standardplaceringen til at installere biblioteket, eller hvis du ikke angiver:

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

Når du har gennemført konfigurationen, skal du gå til mappen: /etc/webserver/srcsrv/apr-1.7.0/build

Eller: /din/sti/til biblioteket/byg

Find filen apr_rules.mk i denne mappe, og tilføj linjerne i slutningen, hvor:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Tilslutning af biblioteket:

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

Gem og gå til rodmappen for APR-kilderne: /din/sti/til biblioteket.

Lad os kompilere vores ændrede ÅOP:

make
make install

Hvis alt er i orden, og kompileringen gik uden fejl, skal du gå videre til næste trin.

Trin tre: Byg APR-util til Apache fra kilder

Du har downloadet dette bibliotek fra kilden, gå til rodmappen i det udpakkede arkiv med APR-util, og indtast følgende kommandoer sekventielt:

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

Du angiver naturligvis din sti i præfikset, hvis du ikke ønsker at bruge standardplaceringen til at installere biblioteket, eller hvis du ikke angiver:

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

Vi forbinder også vores ÅOP her:

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

Trin fire: download kilder fra Apache git for at understøtte PCRE2

Vigtigt: Vi downloader kilderne fra den seneste udgave af git.

Vi skal downloade to kilder såsom ap_regex.h og util_pcre.c, links nedenfor:
ap_regex.h
util_pcre.c

Gå nu til din Apache httpd-kildemappe og byg 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

Du angiver naturligvis din sti i præfikset, hvis du ikke ønsker at bruge standardplaceringen til at installere biblioteket, eller hvis du ikke angiver:

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

Du kan også angive yderligere kommandoer til at bygge Apache efter eget skøn, jeg mener kommandoerne til at aktivere eller deaktivere moduler og biblioteker.

Dernæst går vi til vores Apache httpd-kildemappe, jeg har dette:

/etc/webserver/srcsrv/httpd-2.4.41

Du går naturligvis til din mappe, erstat i mappen:

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

Filen ap_regex.h, som vi downloadede fra Apache git.

Vi går også til mappen:

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

Vi erstatter filen util_pcre.c med den, vi downloadede fra Apache git

Nu er der kun tilbage at tilføje PCRE2-forbindelsen i selve Apache, du skal finde filen ap_config_auto.h, den er placeret i mappen:

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

I begyndelsen af ​​denne fil skal du indsætte følgende linjer:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Nå, nu er vi klar til det rigtige øjeblik med at kompilere Apache httpd med PCRE2-understøttelse.
Lad os gå til vores Apache httpd-kildemappe og kompilere dette ved sekventielt at udføre kommandoerne:

make
make install

Nu, hvis alt gik godt og uden fejl, så vil du have samlet og kompileret Apache httpd med PCRE2-understøttelse, hvilket betyder positive ændringer i Apache-moduler, der bruger PCRE regulære udtryk, en af ​​disse er Module rewrite.

Som konklusion gør denne metode det muligt at bruge PCRE2 før den officielle udgivelse fra Apache Software Foundation, jeg håber, at en version med PCRE2-understøttelse snart vil blive frigivet.

Under test af standard .htaccess opstod der heller ingen fejl, hvis nogen har fejl, så skriv i kommentarerne.

PS

Jeg var lidt forvirret over situationen med at bruge to forskellige versioner af PCRE til min stack, og jeg besluttede at ordne det.

Kilde: www.habr.com

Tilføj en kommentar