Kuidas muuta Apache 2 jaoks PCRE2.4 tugi

Tahaksin jagada oma kogemust Apache 2.4 tõlkimisel PCRE2-sse, kuna isegi PHP 7 on PCRE2 teeki juba pikka aega toetanud, kuid avatud lähtekoodiga Apache Software Foundation seda ikka veel ei tee.
Muidugi olen nüüd ilmselt ees PCRE2 toega Apache väljalasest, kuna kasutan Apache giti allikaid, mis ütleb meile, et PCRE2 tugi on juba järgmises versioonis võimalik, aga neile, kes juba tahavad PCRE2 tuge Apache 2.4 ja kes ei taha väljalaskmist oodata, jagan ühte viisi.

Artiklis eeldatakse, et kogute kirjutamise ajal kogu vajaliku tarkvara lähtekoodist, tarkvara loendist ja versioonidest:

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

Esimene samm: looge ja kompileerige PCRE2

Jätame välja allikate ametlikest allikatest allalaadimise hetke, kuna see on liiga ilmne, nii et olete arhiivi lahti pakkinud, minge PCRE2 allikatega kausta ja käivitage UTF-i toetamiseks järgmine käsk:

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

Kui te ei soovi teegi installimiseks kasutada standardset asukohta, määrake eesliites oma tee:

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

Vastasel juhul kogute ilma eesliiteta.

Ülejäänud käsud näitavad 8-bitiste, 16-bitiste ja 32-bitiste PCRE koodiplokkide tugede kaasamist, selles versioonis tehti koost nendega.

Ja loomulikult kompileerime selle asja käskude järjestikuse täitmise abil:

make
make install

Kui kõik on korras ja koostamine sujus vigadeta, liikuge järgmise sammu juurde.

Teine samm: ühendage PCRE2 teek APR-iga

Kuna Apache kompileerib allikaid APR-i abil, peame lisama teegi APR-i endasse, vastasel juhul võib Apache allikates esineda tõrkeid tundmatute funktsioonide kohta, kuna hakkame kasutama uusi PCRE2 funktsioone.

Jätame välja allikate ametlikest allikatest allalaadimise hetke, kuna see on liiga ilmne, nii et pakkisite arhiivi lahti ja tegite APR-i konfiguratsiooni:

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

Loomulikult märgite eesliites oma tee, kui te ei soovi teegi installimiseks kasutada standardset asukohta või kui te ei määra:

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

Pärast seadistamise lõpetamist minge kataloogi: /etc/webserver/srcsrv/apr-1.7.0/build

Või: /teie/tee/teeki/ehitamine

Otsige sellest kataloogist üles fail apr_rules.mk ja lisage lõppu read, kus:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Teegi ühendamine:

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

Salvestage ja minge APR-i allikate juurkataloogi: /your/path/to the library.

Koostame oma muudetud APR:

make
make install

Kui kõik on korras ja koostamine sujus vigadeta, liikuge järgmise sammu juurde.

Kolmas samm: looge allikatest Apache jaoks APR-util

Olete selle teegi allikast alla laadinud, minge APR-util abil lahtipakkitud arhiivi juurkausta ja sisestage järjestikku järgmised käsud:

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

Loomulikult märgite eesliites oma tee, kui te ei soovi teegi installimiseks kasutada standardset asukohta või kui te ei määra:

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

Ühendame oma APR ka siin:

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

Neljas samm: laadige alla Apache giti allikad, et toetada PCRE2

Tähtis. Laadime allikad alla giti uusimast väljaandest.

Peame alla laadima kaks allikat, nagu ap_regex.h ja util_pcre.c, lingid allpool:
ap_regex.h
util_pcre.c

Nüüd minge oma Apache httpd lähtekataloogi ja looge Apache järgmiste käskudega:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/путь/до библиотеки apr --with-apr-util=/ваш/путь/до библиотеки apr-util --with-pcre=/ваш/путь/до библиотеки pcre2/bin/pcre2-config

Loomulikult märgite eesliites oma tee, kui te ei soovi teegi installimiseks kasutada standardset asukohta või kui te ei määra:

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

Samuti saate oma äranägemise järgi määrata täiendavaid käske Apache'i loomiseks, pean silmas käske moodulite ja teekide lubamiseks või keelamiseks.

Järgmisena läheme oma Apache httpd lähtekataloogi, mul on see:

/etc/webserver/srcsrv/httpd-2.4.41

Loomulikult lähete oma kataloogi, asendate kataloogis:

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

Fail ap_regex.h, mille laadisime alla Apache gitist.

Läheme ka kataloogi:

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

Asendame faili util_pcre.c Apache gitist alla laaditud failiga

Nüüd jääb üle vaid lisada Apache'i endasse PCRE2 ühendus, peate leidma faili ap_config_auto.h, see asub kataloogis:

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

Sisestage selle faili algusesse järgmised read:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Noh, nüüd oleme valmis PCRE2 toega Apache httpd kompileerimise tõeliseks hetkeks.
Läheme oma Apache httpd lähtekataloogi ja kompileerime selle käskude järjestikuse täitmisega:

make
make install

Nüüd, kui kõik läks hästi ja vigadeta, siis on kokku pandud ja kompileeritud Apache httpd PCRE2 toega, mis tähendab positiivseid muutusi Apache moodulites, mis kasutavad PCRE regulaaravaldisi, üks neist on Module rewrite.

Kokkuvõttes võimaldab see meetod kasutada PCRE2 enne Apache Software Foundationi ametlikku väljaandmist, loodan, et peagi ilmub PCRE2 toega versioon.

Samuti standardse .htaccess testimise käigus vigu ei tekkinud, kui kellelgi on vigu, siis kirjutage kommentaaridesse.

PS

Mind ajas veidi segadusse olukord, kus kasutasin oma virna jaoks kahte erinevat PCRE versiooni, ja otsustasin selle parandada.

Allikas: www.habr.com

Lisa kommentaar