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.
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-unicode

Prefikssis määrake oma tee, kui te ei soovi kasutada teeki installimise standardset asukohta:

--prefix=/teie/tee/teeki

Vastasel 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-170

Loomulikult määrake eelistatavalt oma tee, kui te ei soovi kasutada teegi paigaldamiseks standardset asukohta, või jätke see määramata:

--prefix=/teie/tee/teeki

Pä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 -ldl

Teegi ühendamine:

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

Säilitame, liikudes APR algallikate juurkausta: /teie/tee/raamatukogu.

Kompileerime meie muudetud APR-i:

make
make install

Kui 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 install

Loomulikult määrake eelistatavalt oma tee, kui te ei soovi kasutada teegi paigaldamiseks standardset asukohta, või jätke see määramata:

--prefix=/teie/tee/teeki

Siin ühendame ka meie APR-i:

--with-apr=/teie/tee/raamatukogu apr

Neljas 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:
ap_regex.h
util_pcre.c

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-config

Loomulikult 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 httpd

Samuti 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.41

Te muidugi liigute oma katalooge, asendame kataloogis:

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

Faili ap_regex.h, millega asendame selle, mille me Git-ist alla laadisime Apache.

Samuti liigume katalooge:

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

Asendame 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/include

Faili 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 install

Nüü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

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster