Jak zajistit podporu PCRE2 pro Apache 2.4

Rád bych se podělil o své zkušenosti s překladem Apache 2.4 do PCRE2, protože i PHP 7 již dlouhou dobu podporuje knihovnu PCRE2, ale open source Apache Software Foundation stále ne.
Samozřejmě nyní pravděpodobně předbíhám vydání Apache s podporou PCRE2, protože používám zdroje z Apache git, což nám říká, že podpora PCRE2 je možná již v příštím vydání, ale pro ty, kteří již chtějí podporu PCRE2 v Apache 2.4 a kdo nechce čekat na vydání sdílím jeden ze způsobů.

Článek předpokládá, že shromažďujete veškerý potřebný software ze zdrojového kódu, seznamu softwaru a verzí v době psaní:

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

Krok jedna: sestavení a kompilace PCRE2

Přeskočme okamžik stahování zdrojů z oficiálních zdrojů, protože je to příliš zřejmé, takže jste rozbalili archiv, přejděte do složky se zdroji PCRE2 a spusťte následující příkaz pro podporu UTF:

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

Pokud nechcete k instalaci knihovny použít standardní umístění, zadejte svou cestu do předpony:

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

Jinak sbíráte bez prefixu.

Zbývající příkazy indikují zahrnutí podpor pro 8bitové, 16bitové a 32bitové bloky kódu PCRE, v této verzi byla montáž provedena s nimi.

A samozřejmě tuto věc zkompilujeme pomocí sekvenčního provádění příkazů:

make
make install

Pokud je vše v pořádku a kompilace proběhla bez chyb, přejděte k dalšímu kroku.

Krok dva: připojte knihovnu PCRE2 k APR

Vzhledem k tomu, že Apache kompiluje zdroje pomocí APR, musíme knihovnu zahrnout do samotného APR, jinak se mohou ve zdrojích Apache vyskytnout chyby ohledně neznámých funkcí, protože budeme používat nové funkce PCRE2.

Vynechme okamžik stahování zdrojů z oficiálních zdrojů, protože to je příliš zřejmé, takže jste rozbalili archiv a provedli konfiguraci APR:

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

Pokud nechcete použít standardní umístění pro instalaci knihovny, nebo pokud neurčíte:

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

Po dokončení konfigurace přejděte do adresáře: /etc/webserver/srcsrv/apr-1.7.0/build

Nebo: /vaše/cesta/ke knihovně/sestavení

Najděte soubor apr_rules.mk v tomto adresáři a přidejte řádky na konec, kde:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Připojení knihovny:

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

Uložte a přejděte do kořenového adresáře zdrojů APR: /vaše/cesta/do knihovny.

Pojďme sestavit naše upravené RPSN:

make
make install

Pokud je vše v pořádku a kompilace proběhla bez chyb, přejděte k dalšímu kroku.

Krok tři: sestavení APR-util pro Apache ze zdrojů

Tuto knihovnu jste stáhli ze zdroje, přejděte do kořenové složky rozbaleného archivu pomocí APR-util a zadejte postupně následující příkazy:

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

Pokud nechcete použít standardní umístění pro instalaci knihovny, nebo pokud neurčíte:

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

Zde také připojujeme naše APR:

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

Krok čtyři: Stáhněte si zdroje z Apache git pro podporu PCRE2

Důležité: Zdroje stahujeme z nejnovějšího vydání git.

Potřebujeme stáhnout dva zdroje, jako je ap_regex.h a util_pcre.c, odkazy níže:
ap_regex.h
util_pcre.c

Nyní přejděte do svého zdrojového adresáře Apache httpd a sestavte Apache pomocí následujících příkazů:

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

Pokud nechcete použít standardní umístění pro instalaci knihovny, nebo pokud neurčíte:

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

Můžete také zadat další příkazy pro sestavení Apache podle svého uvážení, mám na mysli příkazy pro povolení nebo zakázání modulů a knihoven.

Dále přejdeme do našeho zdrojového adresáře Apache httpd, mám toto:

/etc/webserver/srcsrv/httpd-2.4.41

Přirozeně přejdete do svého adresáře a nahradíte v adresáři:

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

Soubor ap_regex.h, který jsme stáhli z Apache git.

Jdeme také do adresáře:

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

Nahradíme soubor util_pcre.c tím, který jsme stáhli z Apache git

Nyní zbývá pouze přidat připojení PCRE2 v samotném Apache, musíte najít soubor ap_config_auto.h, je umístěn v adresáři:

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

Na úplný začátek tohoto souboru vložte následující řádky:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Nyní jsme připraveni na skutečný okamžik kompilace Apache httpd s podporou PCRE2.
Pojďme do našeho zdrojového adresáře Apache httpd a zkompilujeme jej postupným prováděním příkazů:

make
make install

Nyní, pokud vše proběhlo v pořádku a bez chyb, budete mít sestavený a zkompilovaný Apache httpd s podporou PCRE2, což znamená pozitivní změny v modulech Apache, které používají regulární výrazy PCRE, jednou z nich je přepsání modulu.

Závěrem, tato metoda umožňuje používat PCRE2 ještě před vydáním od Apache Software Foundation, doufám, že brzy vyjde verze s podporou PCRE2.

Také při testování standardního .htaccess nedošlo k žádným chybám, pokud má někdo nějaké chyby, napište do komentářů.

PS

Byl jsem trochu zmaten situací používání dvou různých verzí PCRE pro můj stack a rozhodl jsem se to napravit.

Zdroj: www.habr.com

Přidat komentář