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