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.
Muidugi, ma arvan, et olen Apache'i PCRE2 toe väljalaskest ees, kuna kasutan Apache'i GIT-ike. See viitab sellele, et PCRE2 tugi võib olla juba järgmises versioonis, kuid neile, kes soovivad juba nüüd Apache 2.4-s PCRE2 tuge ning ei soovi oodata versiooni, jagan ühte meetodit.
Artikkel eeldab, et kogute kogu vajaliku tarkvara lähtekoodidest. Tarkvara ja versioonide loetelu 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 kõrvale lähtekoodide allalaadimise hetke, kuna see on liiga ilmne. Nii et olete arhiivi lahti pakkunud, liikuge PCRE2 lähtekoodi kausta ja täitke järgmine käsk UTF toe jaoks:
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicodePrefikssis määrake oma tee, kui te ei soovi kasutada teeki installimise standardset asukohta:
--prefix=/teie/tee/teekiVastasel juhul koguge see ilma prefiksita.
Ülejäänud käsud näitavad, et aktiveeritakse 8-bitised, 16-bitised ja 32-bitised PCRE koodiplokid; selles versioonis on need kaasatud.
Ja loomulikult kompileerime selle abil järjestikuste käsude täitmist:
make
make install Kui kõik on korras ja kompileerimine toimus tõrgeteta, liigume järgmise sammu juurde.
Teine samm: ühendame APR-i PCRE2 teegi
Kuna Apache kompileerib lähtekoodi APR-i abil, peame ühendama teegi APR-is endas, vastasel juhul võivad Apache'i lähtekoodis ilmneda tundmatute funktsioonide vead, kuna kavatseme kasutada uusi PCRE2 funktsioone.
Jätame tähelepanuta lähtekoodi allalaadimise ametlikest allikatest, kuna see on liiga ilmne; seega olete arhivi lahti pakkunud ja APR-i seadistuse teinud:
./configure --prefix=/etc/webserver/apr-170Loomulikult määrake eelistatavalt oma tee, kui te ei soovi kasutada teegi paigaldamiseks standardset asukohta, või jätke see määramata:
--prefix=/teie/tee/teekiPärast seadistuse tegemist minge katalooge: /etc/webserver/srcsrv/apr-1.7.0/build
Või: /teie/tee/teegi/build
Leidke selles kataloogis fail apr_rules.mk ja lisage rea lõpuks, kus:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldlTeegi ühendamine:
-lpcre2-8 -L/teie/tee/raamatukogu pcre2/libSäilitame, liikudes APR algallikate juurkausta: /teie/tee/raamatukogu.
Kompileerime meie muudetud APR-i:
make
make installKui kõik on korras ja kompileerimine toimus tõrgeteta, liigume järgmise sammu juurde.
Kolmas samm: kogume APR-utili algallikad Apache jaoks
Olete selle raamatukogu alla laadinud ametlikust allikast, liikuge lahti pakitud APR-utili arhiivi juurkausta ja käivitage järjestikku järgmised käsud:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/teie/tee/raamatukogu apr
make
make installLoomulikult määrake eelistatavalt oma tee, kui te ei soovi kasutada teegi paigaldamiseks standardset asukohta, või jätke see määramata:
--prefix=/teie/tee/teekiSiin ühendame ka meie APR-i:
--with-apr=/teie/tee/raamatukogu aprNeljas samm: laadime Apache giti allatöötluse jaoks PCRE2 toega allikad
Oluline: Allikad laadime alla giti viimasest versioonist.
Peame alla laadima kaks allikat, nagu ap_regex.h ja util_pcre.c, lingid allpool:
Nüüd liikuge oma Apache httpd allikate katalooge ja koguge Apache järgmiste käskudega:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/teie/tee/raamatukogu apr --with-apr-util=/teie/tee/raamatukogu apr-util --with-pcre=/teie/tee/raamatukogu pcre2/bin/pcre2-configLoomulikult määrake eelistatavalt oma tee, kui te ei soovi kasutada teegi paigaldamiseks standardset asukohta, või jätke see määramata:
--prefix=/teie/tee/raamatukogu Apache httpdSamuti määrake täiendavad käskud Apache kogumiseks vastavalt oma soovidele, mõtlen, lisamoodulite ja raamatukogude kaasamise ja väljaarvamise käske.
Jätkame oma Apache httpd lähtekatalooge, minu puhul on see:
/etc/webserver/srcsrv/httpd-2.4.41Te muidugi liigute oma katalooge, asendame kataloogis:
/etc/webserver/srcsrv/httpd-2.4.41/includeFaili ap_regex.h, millega asendame selle, mille me Git-ist alla laadisime Apache.
Samuti liigume katalooge:
/etc/webserver/srcsrv/httpd-2.4.41/serverAsendame faili util_pcre.c, millega asendame selle, mille me Git-ist alla laadisime Apache.
Nüüd tuleb lisada PCRE2 ühendus Apache-is, tuleb leida fail ap_config_auto.h, mis asub kataloogis:
/etc/webserver/srcsrv/httpd-2.4.41/includeFaili algusesse tuleks lisada järgmised read:
/* Load PCRE2 */
#define HAVE_PCRE2 1 Noh, nüüd oleme valmis tõeliseks Apache httpd kompileerimise hetkeks, koos PCRE2 toe.
Liigume oma Apache httpd lähtekatalooge, kompileerime seda, tehes järjestikku järgmisi käske:
make
make installNüüd, kui kõik läks hästi ja ilma vigadeta, siis teil on loodud ja kompileeritud Apache httpd koos PCRE2 toe, mis toob positiivseid muutusi Apache moodulites, mis kasutavad PCRE regulaaravaldisi, millest üks on moodul rewrite.
Kokkuvõtteks, see meetod võimaldab kasutada PCRE2 enne Apache Software Foundation ametlikku väljaandmist, loodan, et varsti ilmub versioon, mis toetab PCRE2.
Testimise ajal standardsete .htaccess failide puhul ei esinenud vigu; kui kellelgi on vigu, kirjutage kommentaaridesse.
P.S.
Mind pisut häiris olukord, kus kasutasin oma stack'is kahte erinevat PCRE versiooni, ja otsustasin selle parandada.
Allikas: habr.com
