Kako omogućiti podršku za PCRE2 za Apache 2.4

Ž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-unicode

U prefiksu navedite svoj put ako ne želite da koristite standardnu lokaciju za instalaciju biblioteke:

--prefix=\/vaš\/put\/do biblioteke

U 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-170

Naravno, u prefiksu navedite svoj put ako ne želite da koristite standardnu lokaciju za instalaciju biblioteke, ili jednostavno ne navedite:

--prefix=\/vaš\/put\/do biblioteke

Nakon 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 -ldl

Povezivanje biblioteke:

-lpcre2-8 -L\/vaš\/put\/do biblioteke pcre2\/lib

Shranjeno gremo v korenski katalog izvorov APR: /vaša/pot/do knjižnice.

Kompiliramo naš spremenjeni APR:

make
make install

Ako 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 install

Naravno, u prefiksu navedite svoj put ako ne želite da koristite standardnu lokaciju za instalaciju biblioteke, ili jednostavno ne navedite:

--prefix=\/vaš\/put\/do biblioteke

Tukaj prav tako povezujemo naš APR:

--with-apr=/vaša/pot/do knjižnice apr

Korak š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:
ap_regex.h
util_pcre.c

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

Naravno, 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 httpd

Dodatne 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.41

Seveda preidite v svoj katalog, zamenjajte v katalogu:

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

Datoteko ap_regex.h z datoteko, ki smo jo prenesli iz gita Apache.

Tukaj greste v katalog:

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

Zamenjajte 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/include

Na 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 install

Zdaj, č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

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster