Kuidas lisada PCRE2 tugi Apache 2.4-le

Soovin jagada oma kogemust Apache 2.4 tõlkimisel PCRE2-le, kuna isegi PHP 7 toetab juba ammu PCRE2 teeki, kuid avatud lähtekoodiga Apache Software Foundation ei ole seda veel teinud.
Kahjuks olen praegu võib-olla Apache PCRE2 toe väljaandest ees, kuna kasutan Apache'i allikaid Gitist, mis viitab sellele, et PCRE2 tugi võiks olla juba järgmises versioonis, kuid neile, kes soovivad juba praegu PCRE2 tugi Apache 2.4, jagan ühte meetodit, kuidas seda saavutada.

Artikkel eeldab, et kogute kogu vajaliku tarkvara allikatest, tarkvara ja versioonide nimekiri artikli kirjutamise hetkel:

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

Esimene samm: kogume ja kompileerime PCRE2

Jätame vahele allalaadimise hetke ametlikest allikatest, kuna see on liiga ilmselge, nii et olete arhiivi lahti pakkunud, liikume PCRE2 allikate kausta ja täidame järgmise käsu UTF toe jaoks:

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

Prefiksis määrake oma tee, kui te ei soovi kasutada teegi vaikimisi asukohta:

--prefix=/teie/tee/teeki

Vastasel juhul koguge ilma prefiksita.

Ülejäänud käsud viitavad 8-bitise, 16-bitise ja 32-bitise PCRE koodibloki toe lubamisele, käesolevas variandis oli kogumine nende toetamisega.

Ja loomulikult kompileerime seda, täites järjestikuseid käske:

make
make install

Kui kõik on korras ja kompileerimine läks ilma vigadeta, liigume järgmisse sammu.

Teine samm: ühendame APR-is PCRE2 teegi

Kuna Apache kompileerib allikaid APR-i kaudu, peame teegi APR-is ühendama, vastasel juhul võivad Apache'i allikates esineda tundmatute funktsioonide vead, sest me hakkame kasutama uusi PCRE2 funktsioone.

Jätame vahele allalaadimise hetke ametlikest allikatest, kuna see on liiga ilmselge, nii et olete arhive lahti pakkunud ja konfiguratsiooni APR-i teostanud:

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

Muidugi määrake prefiksis oma tee, kui te ei soovi kasutada teegi vaikimisi asukohta, või jätke see määramata:

--prefix=/teie/tee/teeki

Konfiguratsiooni teostamisel liikuda katalooge: /etc/webserver/srcsrv/apr-1.7.0/build

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

Leidke fail apr_rules.mk sellest kataloogist ja lisage rea lõpusse, kus:

EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl

Teegi ühendamine:

-lpcre2-8 -L/teie/tee/teeki pcre2/lib

Salvestame, minnes APR-i allika kausta: /teie/tee/raamatukogusse.

Kompileerime meie muudetud APR-i:

make
make install

Kui kõik on korras ja kompileerimine läks ilma vigadeta, liigume järgmisse sammu.

Kolmas samm: kogume APR-util allikaid Apache'i jaoks

Olete selle teegi allalaadinud ametlikust allikast, liikuge lahti seotud APR-util arhiivi juurkausta ja sisestage järjestikku järgmised käsud:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/teie/tee/raamatukogusse apr
make
make install

Muidugi määrake prefiksis oma tee, kui te ei soovi kasutada teegi vaikimisi asukohta, või jätke see määramata:

--prefix=/teie/tee/teeki

Siin ühendasime ka meie APR-i:

--with-apr=/teie/tee/raamatukogusse apr

Neljas samm: allalaadime Apache'i giti allikad PCRE2 toe jaoks

Oluline: allalaadides allikaid, võtame viimase toimetuse giti kaudu.

Peame allalaadima kaks allika faili, nagu ap_regex.h ja util_pcre.c, lingid on allpool:
ap_regex.h
util_pcre.c

Nüüd liigume oma Apache httpd allikadirektorisse ja kogume Apache'i järgmiste käskudega:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/teie/tee/raamatukogusse apr --with-apr-util=/teie/tee/raamatukogusse apr-util --with-pcre=/teie/tee/raamatukogusse pcre2/bin/pcre2-config

Muidugi määrake prefiksis oma tee, kui te ei soovi kasutada teegi vaikimisi asukohta, või jätke see määramata:

--prefix=/teie/tee/Apache httpd

Samuti saate lisakäsklusi, et koguda Apache vastavalt oma soovile, silmas pidades moodulite ja raamatukogude lubamise või keelamise käsklusi.

Seejärel liigume oma Apache httpd allikadirektorisse, minu puhul on see:

/etc/webserver/srcsrv/httpd-2.4.41

Te loomulikult liikumine oma katalooge, asendame kataloogis:

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

Fail ap_regex.h, allalaaditud Apache giti kaudu.

Samuti viime edasi oma katalooge:

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

Asendame faili util_pcre.c, allalaaditud Apache giti kaudu.

Nüüd jääb veel lisada PCRE2 toe ühendamine Apache'is, tuleb leida fail ap_config_auto.h, mis asub kaustas:

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

Faili algusesse tuleb lisada järgmised read:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Nüüd oleme valmis tõeliseks Apache httpd kompileerimise hetkeks PCRE2 toega.
Liigume oma Apache httpd allikadirektorisse, kompileerime selle järjestikuste käskude täitmise teel:

make
make install

Nüüd, kui kõik on hästi läinud ja ilma vigadeta, siis on teil kokku pandud ja kompileeritud Apache httpd PCRE2 toega, mis toob positiivseid muutusi Apache'i moodulites, mis kasutavad PCRE regulaaravaldisi, üks neist on mod_rewrite.

Kokkuvõtteks, see meetod võimaldab kasutada PCRE2 enne Apache Software Foundation ametlikku vabastamist, loodan, et peagi väljatulevat versioon PCRE2 toe ka.

Samuti ei tekkinud standardsete .htaccess-e testimise ajal vigu, kui kellelgi on vigu, kirjutage kommentaaridesse.

P.S.

Mind natuke muretsesin olukorra pärast, kus minu stack kasutas kahte erinevat PCRE versiooni, ja otsustasin selle parandada.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster