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-unicodeAk 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-170Prirodzene, 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 -ldlPripojenie knižnice:
-lpcre2-8 -L/ваш/путь/до библиотеки pcre2/libUlož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 installAk 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 installPrirodzene, 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=/ваш/путь/до библиотеки aprKrok š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:
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-configPrirodzene, ak nechcete použiť štandardné umiestnenie na inštaláciu knižnice, alebo ak nešpecifikujete, uvediete svoju cestu v predpone:
--prefix=/ваш/путь/до Apache httpdMôž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.41Prirodzene prejdete do svojho adresára, nahraďte v adresári:
/etc/webserver/srcsrv/httpd-2.4.41/includeSúbor ap_regex.h, ktorý sme stiahli z Apache git.
Prejdeme tiež do adresára:
/etc/webserver/srcsrv/httpd-2.4.41/serverSú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/includeNa ú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 installTeraz, 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
