Jak implementovat podporu PCRE2 pro Apache 2.4.

Chci se podělit o svou zkušenost s přechodem z Apache 2.4 na PCRE2, protože i PHP 7 již dlouho podporuje knihovnu PCRE2, zatímco open source Apache Software Foundation to ještě neudělala.
Samozřejmě nyní pravděpodobně předbíhám vydání Apache s podporou PCRE2, protože používám zdrojové kódy z Gitu Apache, což naznačuje, že podpora PCRE2 by mohla být již v příštím vydání, ale pro ty, kteří již nyní chtějí podporu PCRE2 v Apache 2.4 a nechtějí č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ých kódů, seznam softwaru a verzí v době psaní článku:

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

Krok první: shromažďujeme a kompilujeme PCRE2

Přeskočíme okamžik stahování zdrojů z oficiálních stránek, protože to je příliš zřejmé, takže jste rozbalili archiv, přejdeme do složky se zdrojovými kódy PCRE2 a provedeme 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

V prefixu uveďte svou cestu, pokud nechcete používat standardní umístění pro instalaci knihovny:

--prefix=\/vaše\/cesta\/k knihovně

Jinak kompilujete bez prefixu.

Ostatní příkazy specifikují zahrnutí podpory pro 8bitové, 16bitové a 32bitové bloky kódu PCRE, v tomto případě byla kompilace provedena s nimi.

A samozřejmě kompilujeme to 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řecházíme k dalšímu kroku.

Krok druhý: připojujeme knihovnu PCRE2 do APR

Jelikož Apache kompiluje zdrojové kódy pomocí APR, potřebujeme knihovnu připojit přímo v APR, jinak mohou nastat chyby s neznámými funkcemi ve zdrojových kódech Apache, protože budeme používat nové funkce PCRE2.

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

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

Samozřejmě u prefixu uveďte svou cestu, pokud nechcete používat standardní umístění pro instalaci knihovny, nebo ji neuveďte:

--prefix=\/vaše\/cesta\/k knihovně

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

Nebo: \/vaše\/cesta\/k knihovně\/build

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

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Připojení knihovny:

-lpcre2-8 -L\/vaše\/cesta\/k knihovně pcre2\/lib

Ukládáme se do kořenového adresáře zdrojů APR: /vaše/cesta/k knihovně.

Kompilujeme náš upravený APR:

make
make install

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

Krok tři: shromažďujeme zdroje APR-util pro Apache

Stáhli jste tuto knihovnu z oficiálního zdroje, přejděte do kořenového adresáře rozbaleného archivu s APR-util a zadáme postupně následující příkazy:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/vaše/cesta/k knihovně apr
make
make install

Samozřejmě u prefixu uveďte svou cestu, pokud nechcete používat standardní umístění pro instalaci knihovny, nebo ji neuveďte:

--prefix=\/vaše\/cesta\/k knihovně

Také zde připojujeme náš APR:

--with-apr=/vaše/cesta/k knihovně apr

Krok čtyři: stahujeme zdroje z gitu Apache pro podporu PCRE2

Důležité: Zdroje stahujeme z gitu nejnovější verze.

Musíme stáhnout dva zdroje jako ap_regex.h a util_pcre.c, odkazy níže:
ap_regex.h
util_pcre.c

Nyní přejdeme do svého adresáře zdrojů Apache httpd a sestavíme Apache pomocí následujících příkazů:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/vaše/cesta/k knihovně apr --with-apr-util=/vaše/cesta/k knihovně apr-util --with-pcre=/vaše/cesta/k knihovně pcre2/bin/pcre2-config

Samozřejmě u prefixu uveďte svou cestu, pokud nechcete používat standardní umístění pro instalaci knihovny, nebo ji neuveďte:

--prefix=/vaše/cesta/k Apache httpd

Další příkazy pro sestavení Apache uvádějte podle vlastního uvážení, myslím tím příkazy pro zapnutí či vypnutí modulů a knihoven.

Dále přejdeme do svého adresáře zdrojů Apache httpd, u mě je to:

/etc/webserver/srcsrv/httpd-2.4.41

Samozřejmě se přechází do vašeho adresáře, měníme v adresáři:

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

Soubor ap_regex.h na ten, který jsme stáhli z gitu Apache.

Také přejdeme do adresáře:

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

Nahraďte soubor util_pcre.c tím, který jsme stáhli z gitu Apache.

Nyní zbývá přidat připojení PCRE2 přímo v Apache, je třeba najít soubor ap_config_auto.h, který se nachází v adresáři:

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

Na začátku tohoto souboru vložte následující řádky:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Tak a nyní jsme připraveni na skutečný okamžik kompilace Apache httpd s podporou PCRE2.
Přejdeme do svého adresáře zdrojů Apache httpd a zkompilujeme to tímto způsobem pomocí postupného provádění příkazů:

make
make install

Pokud všechno proběhlo dobře a bez chyb, měli byste mít zkompilovaný Apache httpd s podporou PCRE2, což znamená pozitivní změny v modulech Apache používajících regulární výrazy PCRE, jedním z nich je Modul přepisování.

Na závěr, tento způsob umožňuje používat PCRE2 až do oficiálního vydání od Apache Software Foundation, doufám, že brzy vyjde verze s podporou PCRE2.

Také během testování standardních .htaccess se nevyskytly žádné chyby, pokud někdo narazí na chyby, pište do komentářů.

P.S.

Měl jsem obavy z používání dvou různých verzí PCRE ve svém stacku, a tak jsem se rozhodl to opravit.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster