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

Szeretném megosztani az Apache 2.4 PCRE2-re való fordításával kapcsolatos tapasztalataimat, mivel még a PHP 7 is régóta támogatja a PCRE2 könyvtárat, de a nyílt forráskódú Apache Software Foundation még mindig nem.
Természetesen most valószínűleg a PCRE2 támogatású Apache kiadás előtt járok, mivel az Apache git forrásait használom, ami azt mondja, hogy a PCRE2 támogatás már a következő kiadásban lehetséges, de azoknak, akik már szeretnének PCRE2 támogatást Apache 2.4, és akik nem akarnak várni a kiadásra, megosztom az egyik módszert.

A cikk feltételezi, hogy az összes szükséges szoftvert a forráskódból, a szoftverek listájából és a verziók listájából gyűjti össze az írás idején:

PCRE2-10.33
APR 1.7.0
THM-ig 1.6.1
Apache httpd 2.4.41

Első lépés: PCRE2 összeállítása és fordítása

Hagyjuk ki a források hivatalos forrásból történő letöltésének pillanatát, mert ez túl nyilvánvaló, ezért kicsomagolta az archívumot, menjen a PCRE2 forrásokat tartalmazó mappába, és futtassa 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

Adja meg az elérési utat az előtagban, ha nem szeretné a szabványos helyet használni a könyvtár telepítéséhez:

--prefix=/ваш/путь/до библиотеки

Ellenkező esetben előtag nélkül gyűjt.

A fennmaradó parancsok a 8 bites, 16 bites és 32 bites PCRE kódblokkok támogatását jelzik, ebben a verzióban az összeszerelést ezekkel hajtották végre.

És természetesen ezt a dolgot a parancsok szekvenciális végrehajtásával fordítjuk:

make
make install

Ha minden rendben van, és a fordítás hiba nélkül ment, folytassa a következő lépéssel.

Második lépés: csatlakoztassa a PCRE2 könyvtárat az APR-hez

Mivel az Apache az APR-t használva fordítja le a forrásokat, magába az APR-be kell beillesztenünk a könyvtárat, különben az Apache forrásokban ismeretlen függvényekkel kapcsolatos hibák fordulhatnak elő, mert új PCRE2 függvényeket fogunk használni.

Hagyjuk ki a források hivatalos forrásból történő letöltésének pillanatát, mivel ez túl nyilvánvaló, ezért kicsomagolta az archívumot, és elvégezte az APR beállítását:

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

Természetesen az előtagban adja meg az elérési utat, ha nem a szabványos helyet kívánja használni a könyvtár telepítéséhez, vagy ha nem adja meg:

--prefix=/ваш/путь/до библиотеки

A konfiguráció befejezése után lépjen a /etc/webserver/srcsrv/apr-1.7.0/build könyvtárba.

Vagy: /saját/útvonala/a könyvtárhoz/build

Keresse meg az apr_rules.mk fájlt ebben a könyvtárban, és adja hozzá a sorokat a végéhez, ahol:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

A könyvtár csatlakoztatása:

-lpcre2-8 -L/ваш/путь/до библиотеки pcre2/lib

Mentse el, és lépjen az APR források gyökérkönyvtárába: /your/path/to the library.

Állítsuk össze módosított THM-ünket:

make
make install

Ha minden rendben van, és a fordítás hiba nélkül ment, folytassa a következő lépéssel.

Harmadik lépés: APR-util létrehozása az Apache számára forrásokból

Letöltötte ezt a könyvtárat a forrásból, lépjen a kicsomagolt archívum gyökérmappájába az APR-util segítségével, és írja be egymás után a következő parancsokat:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/ваш/путь/до библиотеки apr
make
make install

Természetesen az előtagban adja meg az elérési utat, ha nem a szabványos helyet kívánja használni a könyvtár telepítéséhez, vagy ha nem adja meg:

--prefix=/ваш/путь/до библиотеки

A THM-ünket is ide kapcsoljuk:

--with-apr=/ваш/путь/до библиотеки apr

Negyedik lépés: töltsön le forrásokat az Apache git-ből a PCRE2 támogatásához

Fontos: A forrásokat a git legújabb kiadásából töltjük le.

Két forrást kell letöltenünk, például az ap_regex.h-t és az util_pcre.c-t, az alábbi linkek:
ap_regex.h
util_pcre.c

Most lépjen az Apache httpd forráskönyvtárába, és építse fel az Apache-t a következő parancsokkal:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/путь/до библиотеки apr --with-apr-util=/ваш/путь/до библиотеки apr-util --with-pcre=/ваш/путь/до библиотеки pcre2/bin/pcre2-config

Természetesen az előtagban adja meg az elérési utat, ha nem a szabványos helyet kívánja használni a könyvtár telepítéséhez, vagy ha nem adja meg:

--prefix=/ваш/путь/до Apache httpd

Saját belátása szerint további parancsokat is megadhat az Apache felépítéséhez, a modulok és könyvtárak engedélyezésére vagy letiltására.

Ezután megyünk az Apache httpd forráskönyvtárunkba, ez van nálam:

/etc/webserver/srcsrv/httpd-2.4.41

Természetesen belép a könyvtárába, és lecseréli a könyvtárban:

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

Az ap_regex.h fájl, amelyet az Apache git-ből töltöttünk le.

Bemegyünk a könyvtárba is:

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

Az util_pcre.c fájlt lecseréljük az Apache git-ből letöltött fájlra

Most már csak a PCRE2 kapcsolat hozzáadása az Apache-ban van hátra, meg kell találnia az ap_config_auto.h fájlt, amely a könyvtárban található:

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

A fájl legelejére illessze be a következő sorokat:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Nos, most készen állunk az Apache httpd PCRE2 támogatással történő fordításának igazi pillanatára.
Menjünk az Apache httpd forráskönyvtárunkba, és fordítsuk le ezt a parancsok szekvenciális végrehajtásával:

make
make install

Most, ha minden jól és hibamentesen ment, akkor össze kell állítani és lefordítani az Apache httpd-t PCRE2 támogatással, ami pozitív változásokat jelent a PCRE reguláris kifejezéseket használó Apache modulokban, ezek egyike a Module rewrite.

Összefoglalva, 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 egy PCRE2 támogatással rendelkező verzió.

Valamint a szabványos .htaccess tesztelése során nem történt hiba, ha valakinek hibája van, írja meg kommentben.

PS

Kicsit megzavart a helyzet, amikor a PCRE két különböző verzióját használom a veremhez, és úgy döntöttem, hogy kijavítom.

Forrás: will.com

Hozzászólás