Ako vytvoriť podporu PCRE2 pre Apache 2.4

Rád by som sa podelil o svoje skúsenosti s prekladom Apache 2.4 do PCRE2, keďže aj PHP 7 už dlho podporuje knižnicu PCRE2, no open source Apache Software Foundation stále nie.
Samozrejme, teraz pravdepodobne predbieham vydanie Apache s podporou PCRE2, keďže používam zdroje z Apache git, čo nám hovorí, že podpora PCRE2 je už možná v ďalšom vydaní, ale pre tých, ktorí už chcú podporu PCRE2 v Apache 2.4, a ktorí nechcú čakať na vydanie zdieľam jeden zo spôsobov.

Článok predpokladá, že zhromažďujete všetok potrebný softvér zo zdrojového kódu, zoznamu softvéru a verzií v čase písania:

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

Prvý krok: zostavte a skompilujte PCRE2

Vynechajme moment sťahovania zdrojov z oficiálnych zdrojov, pretože je to príliš zrejmé, takže ste rozbalili archív, prejdite do priečinka so zdrojmi PCRE2 a spustite nasledujúci príkaz na podporu UTF:

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

Ak nechcete na inštaláciu knižnice použiť štandardné umiestnenie, zadajte svoju cestu do predpony:

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

V opačnom prípade zbierate bez predpony.

Zostávajúce príkazy označujú zahrnutie podpory pre 8-bitové, 16-bitové a 32-bitové bloky kódu PCRE, v tejto verzii bola montáž vykonaná s nimi.

A samozrejme, túto vec kompilujeme pomocou postupného vykonávania príkazov:

make
make install

Ak je všetko v poriadku a kompilácia prebehla bez chýb, prejdite na ďalší krok.

Krok dva: pripojte knižnicu PCRE2 k APR

Keďže Apache kompiluje zdroje pomocou APR, musíme knižnicu zahrnúť do samotnej APR, inak sa môžu vyskytnúť chyby o neznámych funkciách v zdrojoch Apache, pretože budeme používať nové funkcie PCRE2.

Vynechajme moment sťahovania zdrojov z oficiálnych zdrojov, pretože je to príliš zrejmé, takže ste rozbalili archív a vykonali konfiguráciu APR:

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

Prirodzene, ak nechcete použiť štandardné umiestnenie na inštaláciu knižnice, alebo ak nešpecifikujete, uvediete svoju cestu v predpone:

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

Po dokončení konfigurácie prejdite do adresára: /etc/webserver/srcsrv/apr-1.7.0/build

Alebo: /vaša/cesta/ku knižnici/zostavbe

Nájdite súbor apr_rules.mk v tomto adresári a pridajte riadky na koniec, kde:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Pripojenie knižnice:

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

Uložte a prejdite do koreňového adresára zdrojov APR: /vaša/cesta/do knižnice.

Zostavme si našu upravenú APR:

make
make install

Ak je všetko v poriadku a kompilácia prebehla bez chýb, prejdite na ďalší krok.

Tretí krok: zostavte APR-util pre Apache zo zdrojov

Túto knižnicu ste si stiahli zo zdroja, prejdite do koreňového priečinka rozbaleného archívu pomocou APR-util a zadajte postupne nasledujúce príkazy:

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

Prirodzene, ak nechcete použiť štandardné umiestnenie na inštaláciu knižnice, alebo ak nešpecifikujete, uvediete svoju cestu v predpone:

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

Tu tiež pripájame naše APR:

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

Krok štyri: Stiahnite si zdroje z Apache git na podporu PCRE2

Dôležité: Sťahujeme zdroje z najnovšieho vydania git.

Musíme si stiahnuť dva zdroje, ako napríklad ap_regex.h a util_pcre.c, odkazy nižšie:
ap_regex.h
util_pcre.c

Teraz prejdite do zdrojového adresára Apache httpd a zostavte Apache pomocou nasledujúcich príkazov:

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

Prirodzene, ak nechcete použiť štandardné umiestnenie na inštaláciu knižnice, alebo ak nešpecifikujete, uvediete svoju cestu v predpone:

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

Môžete tiež zadať ďalšie príkazy na zostavenie Apache podľa vlastného uváženia, mám na mysli príkazy na povolenie alebo zakázanie modulov a knižníc.

Ďalej prejdeme do nášho zdrojového adresára Apache httpd, mám toto:

/etc/webserver/srcsrv/httpd-2.4.41

Prirodzene prejdete do svojho adresára, nahraďte v adresári:

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

Súbor ap_regex.h, ktorý sme stiahli z Apache git.

Prejdeme tiež do adresára:

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

Súbor util_pcre.c nahradíme tým, ktorý sme stiahli z Apache git

Teraz už zostáva len pridať pripojenie PCRE2 v samotnom Apache, musíte nájsť súbor ap_config_auto.h, nachádza sa v adresári:

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

Na úplný začiatok tohto súboru vložte nasledujúce riadky:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Teraz sme pripravení na skutočný okamih kompilácie Apache httpd s podporou PCRE2.
Poďme do nášho zdrojového adresára Apache httpd a skompilujeme ho postupným vykonávaním príkazov:

make
make install

Teraz, ak všetko prebehlo dobre a bez chýb, budete mať zostavený a skompilovaný Apache httpd s podporou PCRE2, čo znamená pozitívne zmeny v moduloch Apache, ktoré používajú regulárne výrazy PCRE, jednou z nich je prepísanie modulu.

Na záver, táto metóda umožňuje používať PCRE2 pred oficiálnym vydaním od Apache Software Foundation, dúfam, že čoskoro bude vydaná verzia s podporou PCRE2.

Taktiež pri testovaní štandardného .htaccess sa nevyskytli žiadne chyby, ak má niekto nejaké chyby, napíšte do komentárov.

PS

Bol som trochu zmätený situáciou používania dvoch rôznych verzií PCRE pre môj zásobník a rozhodol som sa to napraviť.

Zdroj: hab.com

Pridať komentár