Hogyan készítsünk támogatást a PCRE2-nek az Apache 2.4-hez

Szeretném megosztani tapasztalataimat az Apache 2.4 PCRE2-re való áttérésével kapcsolatban, hiszen még a PHP 7 már régóta támogatja a PCRE2 könyvtárat, míg az open source Apache Software Foundation nem.
Természetesen valószínűleg megelőzöm az Apache PCRE2-támogatásának megjelenését, mert a GitHub-tól használom az Apache forrásait, ami azt jelenti, hogy a PCRE2 már a következő kiadásban elérhető lesz, de azok számára, akik már most szeretnék a PCRE2 támogatást az Apache 2.4-ben, és nem akarnak várni a kiadásra, megosztom az egyik lehetőséget.

A cikk azt feltételezi, hogy az összes szükséges szoftvert forrásból építed, az írás időpontjában a szoftverek és verziók listája:

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

Első lépés: a PCRE2 összegyűjtése és lefordítása

Hagyd ki a források hivatalos letöltésének lépését, mert ez túl nyilvánvaló, tehát kicsomagoltad az archívumot, lépj a PCRE2 forráskód könyvtárába, és futtasd a következő parancsot az UTF támogatásához:

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

A prefixben add meg a saját útvonaladat, ha nem akarod a könyvtár alapértelmezett helyét használni:

--prefix=/a/te/útvonalad/a/könyvtárhoz

Ellenkező esetben prefix nélkül építsd.

A többi parancs a 8-bites, 16-bites és 32-bites PCRE kódblokk támogatásának engedélyezésére vonatkozik, ebben a példában így lett az összegyűjtve.

Természetesen fordítsd le ezt a következő parancsok végrehajtásával:

make
make install

Ha minden rendben van, és a fordítás hibák nélkül zajlott, lépj a következő lépéshez.

Második lépés: a PCRE2 könyvtár integrálása az APR-be

Mivel az Apache az APR segítségével fordítja a forrásokat, szükséges a könyvtár integrálása magába az APR-be, különben ismeretlen funkciókkal kapcsolatos hibák merülhetnek fel az Apache forráskódjában, mert új PCRE2 funkciókat fogunk használni.

Hagyd ki a források hivatalos letöltésének lépését, mert ez túl nyilvánvaló, tehát kicsomagoltad az archívumot és elvégezted az APR konfigurálását:

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

Természetesen a prefixben add meg a saját útvonaladat, ha nem szeretnéd a könyvtár alapértelmezett helyét használni, vagy ne add meg:

--prefix=/a/te/útvonalad/a/könyvtárhoz

A konfiguráció végrehajtása után lépj a könyvtárba: /etc/webserver/srcsrv/apr-1.7.0/build

Vagy: /a/te/útvonalad/a/könyvtárhoz/build

Keresd meg az apr_rules.mk fájlt ebben a könyvtárban, és add hozzá a sor végéhez, ahol:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

A könyvtár integrálása:

-lpcre2-8 -L/az/út/ad/a/pcre2/lib könyvtárhoz

A gyökérmappába lépünk az APR forráskódjához: /az/út/ad/a/bibliotékához.

A módosított APR-t fordítjuk:

make
make install

Ha minden rendben van, és a fordítás hibák nélkül zajlott, lépj a következő lépéshez.

Harmadik lépés: az APR-util forrásának összegyűjtése az Apache-hoz

Letöltötted ezt a könyvtárat az hivatalos forrásból, lépj a kibővített APR-util mappa gyökérébe, és az alábbi parancsokat adjuk meg egymás után:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/az/út/ad/a/bibliotékához
make
make install

Természetesen a prefixben add meg a saját útvonaladat, ha nem szeretnéd a könyvtár alapértelmezett helyét használni, vagy ne add meg:

--prefix=/a/te/útvonalad/a/könyvtárhoz

Itt csatlakoztatjuk az APR-t is:

--with-apr=/az/út/ad/a/bibliotékához

Negyedik lépés: források letöltése az Apache gitből a PCRE2 támogatása érdekében

Fontos: A legfrissebb verzió forrásait a git-ből töltjük le.

Két forrást kell letöltenünk: ap_regex.h és util_pcre.c, az alábbi linkeken:
ap_regex.h
util_pcre.c

Most lépj a saját Apache httpd forrásmappádba, és az alábbi parancsokkal építsd fel az Apache-t:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/az/út/ad/a/bibliotékához --with-apr-util=/az/út/ad/a/bibliotékához --with-pcre=/az/út/ad/a/pcre2/bin/pcre2-config

Természetesen a prefixben add meg a saját útvonaladat, ha nem szeretnéd a könyvtár alapértelmezett helyét használni, vagy ne add meg:

--prefix=/az/út/ad/a/Apache httpd

További Apache építési parancsokat a saját belátásod szerint adhatsz meg, értem ezalatt a modulok és könyvtárak bekapcsolásának vagy kikapcsolásának parancsait.

Ezután lépj a saját Apache httpd forrásmappádba, nálam ez:

/etc/webserver/srcsrv/httpd-2.4.41

Természetesen belépsz a saját könyvtáradba, cseréljük ki a könyvtárban:

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

Az ap_regex.h fájlt arra, amit a gitből töltöttünk le az Apacheról.

Most lépünk a könyvtárba:

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

Cseréljük ki a util_pcre.c fájlt, amit a gitből töltöttünk le az Apacheról

Most már csak a PCRE2 csatlakozását kell hozzáadnunk az Apache-ban, meg kell találnunk az ap_config_auto.h fájlt, amely a következő könyvtárban található:

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

A fájl elejére az alábbi sorokat kell beilleszteni:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Nos, most már készen állunk arra, hogy valóban kompiláljuk az Apache httpd-t a PCRE2 támogatásával.
Lépj a saját Apache httpd forrásmappádba, és ezt az ügyet a következő parancsok végrehajtásával fordítsd le:

make
make install

Most, ha minden jól ment és nem volt hiba, akkor egy elkészült és lefordított Apache httpd-t kapsz a PCRE2 támogatásával, ami pozitív változásokat jelent az Apache modulokban, amelyek PCRE reguláris kifejezéseket használnak, például a Modultípus átírása.

Végül ez a módszer lehetővé teszi a PCRE2 használatát az Apache Software Foundation hivatalos kiadása előtt, remélem hamarosan megjelenik a PCRE2 támogatással rendelkező verzió.

A standard .htaccess-ek tesztelése során nem jelentkeztek hibák, ha valakinek van hibája, írjon a megjegyzésekbe.

P.S.

Kicsit feszélyezett a helyzet, hogy a PCRE két különböző verzióját használtam a stackemben, ezért úgy döntöttem, hogy orvoslom ezt.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster