Želim da podelim svoje iskustvo oko prelaska sa Apache 2.4 na PCRE2, jer čak i PHP 7 već dugo podržava PCRE2 biblioteku, dok open source Apache Software Foundation to još uvek nema.
Naravno, verovatno sada preterujem u očekivanju Apache verzije koja će podržavati PCRE2, jer koristim izvorne kodove sa Apachovog Gita, što nam ukazuje na to da bi PCRE2 mogao biti podržan u sledećem izdanju, ali za one koji već sada žele podršku za PCRE2 u Apache 2.4 i ne žele da čekaju izlazak, delimo jedan od načina.
Članak pretpostavlja da prikupljate sav potrebni softver iz izvora, a lista softvera i verzija u trenutku pisanja članka je:
PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41
Prvi korak: prikupljanje i kompajliranje PCRE2
Preskočićemo deo preuzimanja izvora sa zvaničnih lokacija, jer je to previše očigledno, tako da ste raspakovali arhivu, pređite u folder sa izvorima PCRE2 i izvršite sledeću komandu za podršku UTF:
.\/configure --prefix=\/etc\/webserver\/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicodeU prefiksu navedite svoj put ako ne želite da koristite standardnu lokaciju za instalaciju biblioteke:
--prefix=\/vaš\/put\/do bibliotekeU suprotnom, kompajlirate bez prefiksa.
Ostale komande označavaju uključivanje podrške za 8-bitne, 16-bitne i 32-bitne kodne blokove PCRE, u ovom slučaju, kompajliranje je obavljeno sa njima.
Naravno, kompajliramo to pomoću sledećeg izvršavanja komandi:
make
make install Ako je sve u redu i kompajliranje je prošlo bez grešaka, prelazimo na sledeći korak.
Drugi korak: povezivanje PCRE2 biblioteke u APR
Budući da Apache kompajlira izvore pomoću APR-a, potrebno je povezati biblioteku u samom APR-u, inače se mogu pojaviti greške o nepoznatim funkcijama u izvorima Apache-a, jer ćemo koristiti nove funkcije PCRE2.
Preskočićemo deo preuzimanja izvora sa zvaničnih lokacija, jer je to previše očigledno, tako da ste raspakovali arhivu i izvršili konfiguraciju APR-a:
.\/configure --prefix=\/etc\/webserver\/apr-170Naravno, u prefiksu navedite svoj put ako ne želite da koristite standardnu lokaciju za instalaciju biblioteke, ili jednostavno ne navedite:
--prefix=\/vaš\/put\/do bibliotekeNakon izvršavanja konfiguracije idite u katalog: \/etc\/webserver\/srcsrv\/apr-1.7.0\/build
Ili: \/vaš\/put\/do biblioteke\/build
Pronađite fajl apr_rules.mk u ovom katalogu i dodajte na kraj linije gde:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldlPovezivanje biblioteke:
-lpcre2-8 -L\/vaš\/put\/do biblioteke pcre2\/libShranjeno gremo v korenski katalog izvorov APR: /vaša/pot/do knjižnice.
Kompiliramo naš spremenjeni APR:
make
make installAko je sve u redu i kompajliranje je prošlo bez grešaka, prelazimo na sledeći korak.
Korak tri: zbiramo iz izvorov APR-util za Apache
To knjižnico ste prenesli z uradnega vira, preidite v korensko mapo razpakiranega arhiva z APR-util in zaporedno vnesite naslednje ukaze:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/vaša/pot/do knjižnice apr
make
make installNaravno, u prefiksu navedite svoj put ako ne želite da koristite standardnu lokaciju za instalaciju biblioteke, ili jednostavno ne navedite:
--prefix=\/vaš\/put\/do bibliotekeTukaj prav tako povezujemo naš APR:
--with-apr=/vaša/pot/do knjižnice aprKorak štiri: prenesite izvorne datoteke iz Apache gita za podporo PCRE2
Pomembno: Izvorne datoteke prenesite iz gita zadnje različice.
Potrebno je prenesti dve izvorni datoteki, kot sta ap_regex.h in util_pcre.c, povezave spodaj:
Zdaj greste v svojo direktorij izvorov Apache httpd in zbiramo Apache s naslednjimi ukazi:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/vaša/pot/do knjižnice apr --with-apr-util=/vaša/pot/do knjižnice apr-util --with-pcre=/vaša/pot/do knjižnice pcre2/bin/pcre2-configNaravno, u prefiksu navedite svoj put ako ne želite da koristite standardnu lokaciju za instalaciju biblioteke, ili jednostavno ne navedite:
--prefix=/vaša/pot/do Apache httpdDodatne ukaze za zbiranje Apache lahko navedete po svoji presoji, mislim na ukaze za vključitev in izključitev modulov ter knjižnic.
Nato greste v svojo direktorij izvorov Apache httpd, pri meni je to:
/etc/webserver/srcsrv/httpd-2.4.41Seveda preidite v svoj katalog, zamenjajte v katalogu:
/etc/webserver/srcsrv/httpd-2.4.41/includeDatoteko ap_regex.h z datoteko, ki smo jo prenesli iz gita Apache.
Tukaj greste v katalog:
/etc/webserver/srcsrv/httpd-2.4.41/serverZamenjajte datoteko util_pcre.c z datoteko, ki smo jo prenesli iz gita Apache.
Zdaj je ostalo le še dodati povezavo PCRE2 v samem Apache, treba je najti datoteko ap_config_auto.h, ki se nahaja v katalogu:
/etc/webserver/srcsrv/httpd-2.4.41/includeNa začetku te datoteke vstavite naslednje vrstice:
/* Load PCRE2 */
#define HAVE_PCRE2 1 No, zdaj smo pripravljeni na pravi trenutek kompilacije Apache httpd s podporo PCRE2.
Preidite v svojo direktorij izvorov Apache httpd, komplicirajte to z zaporednim izvajanjem ukazov:
make
make installZdaj, če je vse potekalo dobro in brez napak, boste imeli zgrajen in skompiliran Apache httpd s podporo PCRE2, kar pomeni pozitivne spremembe v modulih Apache, ki uporabljajo PCRE regularne izraze, eden od takih je Modul za prepis.
Na koncu, ta način omogoča uporabo PCRE2 do uradne različice s strani Apache Software Foundation, upam, da bo različica s podporo PCRE2 kmalu izšla.
Prav tako med testiranjem standardnih .htaccess napak ni bilo, če pa kdo ima napake, naj piše v komentarjih.
P.S.
Sytuacija z używaniem dwóch różnych wersji PCRE w moim stosie mnie trochę niepokoiła, więc postanowiłem to naprawić.
Izvor: habr.com
