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-unicodePrefiksis määrake oma tee, kui te ei soovi kasutada teegi vaikimisi asukohta:
--prefix=/teie/tee/teekiVastasel 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-170Muidugi määrake prefiksis oma tee, kui te ei soovi kasutada teegi vaikimisi asukohta, või jätke see määramata:
--prefix=/teie/tee/teekiKonfiguratsiooni 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 -ldlTeegi ühendamine:
-lpcre2-8 -L/teie/tee/teeki pcre2/libSalvestame, minnes APR-i allika kausta: /teie/tee/raamatukogusse.
Kompileerime meie muudetud APR-i:
make
make installKui 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 installMuidugi määrake prefiksis oma tee, kui te ei soovi kasutada teegi vaikimisi asukohta, või jätke see määramata:
--prefix=/teie/tee/teekiSiin ühendasime ka meie APR-i:
--with-apr=/teie/tee/raamatukogusse aprNeljas 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:
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-configMuidugi määrake prefiksis oma tee, kui te ei soovi kasutada teegi vaikimisi asukohta, või jätke see määramata:
--prefix=/teie/tee/Apache httpdSamuti 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.41Te loomulikult liikumine oma katalooge, asendame kataloogis:
/etc/webserver/srcsrv/httpd-2.4.41/includeFail ap_regex.h, allalaaditud Apache giti kaudu.
Samuti viime edasi oma katalooge:
/etc/webserver/srcsrv/httpd-2.4.41/serverAsendame 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/includeFaili 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 installNüü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
