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

Želim podijeliti svoje iskustvo s prijelazom Apache 2.4 na PCRE2, budući da PHP 7 već duže vrijeme podržava knjižnicu PCRE2, dok open source Apache Software Foundation to još uvijek nema.
Naravno, vjerojatno sada prelazim na ranu verziju Apachea s podrškom za PCRE2, jer koristim izvorne datoteke s gita Apachea, što nam sugerira da bi podrška za PCRE2 mogla biti dostupna u sljedećem izdanju. No, za one koji žele podršku za PCRE2 u Apacheu 2.4, a ne žele čekati na izdanje, dijelim jedan od načina.

Članak pretpostavlja da skupljate sav potrebni softver iz izvornika, popis softvera i verzija u trenutku pisanja članka:

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

Prvi korak: skupljanje i kompilacija PCRE2

Izostavit ćemo trenutak preuzimanja izvora s službenih izvora jer je to previše očito, tako da ste raspakovali arhivu, prelazimo u mapu s izvorom PCRE2 i izvršavamo sljedeću naredbu 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 koristiti standardnu lokaciju za instalaciju knjižnice:

--prefix=/vaš/put/do/knjižnice

Inače se sastavljate bez prefiksa.

Ostale naredbe ukazuju na uključivanje podrške za 8-bitne, 16-bitne i 32-bitne kodne blokove PCRE, a u ovom slučaju izrada je provedena s njima.

I naravno, kompiliramo to pomoću uzastopnog izvršavanja naredbi:

make
make install

Ako je sve u redu i kompilacija je prošla bez grešaka, prelazimo na sljedeći korak.

Drugi korak: povezivanje PCRE2 knjižnice u APR

Budući da Apache sastavlja izvorne datoteke uz pomoć APR-a, trebamo povezati knjižnicu u samom APR-u, inače su moguće greške o nepoznatim funkcijama u izvorima Apachea, jer ćemo koristiti nove funkcije PCRE2.

Izostavit ćemo trenutak preuzimanja izvora s službenih izvora jer je to previše očito, 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 koristiti standardnu lokaciju za instalaciju knjižnice, ili jednostavno ne navedite:

--prefix=/vaš/put/do/knjižnice

Nakon izvršavanja konfiguracije, idite u katalog: /etc/webserver/srcsrv/apr-1.7.0/build

Ili: /vaš/put/do/knjižnice/build

Pronađite datoteku apr_rules.mk u ovom katalogu i dodajte na kraju reda gdje:

EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl

Povezivanje knjižnice:

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

Sprema se idemo u korijenski katalog izvornih kodova APR: /vaš/put/do biblioteke.

Kompiliramo naš izmijenjeni APR:

make
make install

Ako je sve u redu i kompilacija je prošla bez grešaka, prelazimo na sljedeći korak.

Korak tri: sastavljamo iz izvornih kodova APR-util za Apache

Preuzeli ste ovu biblioteku s službenog izvora, prelazimo u korijensku mapu raspakiranog arhiva s APR-util i unosimo redom sljedeće komande:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/vaš/put/do biblioteke apr
make
make install

Naravno, u prefiksu navedite svoj put ako ne želite koristiti standardnu lokaciju za instalaciju knjižnice, ili jednostavno ne navedite:

--prefix=/vaš/put/do/knjižnice

Također ovdje povezujemo naš APR:

--with-apr=/vaš/put/do biblioteke apr

Korak četiri: preuzimamo izvore iz gita Apache za podršku PCRE2

Važno: Izvore preuzimamo iz gita najnovije verzije.

Potrebno je preuzeti dva izvora kao što su ap_regex.h i util_pcre.c, linkovi u nastavku:
ap_regex.h
util_pcre.c

Sada idemo u svoju direktoriju izvornih kodova Apache httpd, i sastavljamo Apache s sljedećim komandom:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/vaš/put/do biblioteke apr --with-apr-util=/vaš/put/do biblioteke apr-util --with-pcre=/vaš/put/do biblioteke pcre2/bin/pcre2-config

Naravno, u prefiksu navedite svoj put ako ne želite koristiti standardnu lokaciju za instalaciju knjižnice, ili jednostavno ne navedite:

--prefix=/vaš/put/do Apache httpd

Također dodatne komande za sastavljanje Apache navodite po vlastitoj procjeni, mislim na komande za uključivanje i isključivanje modula i biblioteka.

Nakon toga idemo u svoju direktoriju izvornih kodova Apache httpd, kod mene je to:

/etc/webserver/srcsrv/httpd-2.4.41

Naravno, prelazite u svoj katalog, zamjenjujemo u katalogu:

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

Datoteku ap_regex.h, s onom koju smo preuzeli s gita Apache.

Također idemo u mapu:

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

Zamjenjujemo datoteku util_pcre.c, s onom koju smo preuzeli s gita Apache

Sada ostaje dodati povezivanje PCRE2 unutar samog Apache, potrebno je pronaći datoteku ap_config_auto.h, ona se nalazi u mapi:

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

Na samom početku ove datoteke umetnite sljedeće linije:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Pa sad smo spremni za pravi trenutak kompilacije Apache httpd s podrškom za PCRE2.
Prelazimo u svoju direktoriju izvornih kodova Apache httpd, kompiliramo to pomoću redoslijeda izvršavanja komandi:

make
make install

Evo sada ako je sve prošlo dobro i bez grešaka, imat ćete sastavljeni i kompajlirani Apache httpd s podrškom za PCRE2, što znači pozitivne promjene u Apache modulima koji koriste PCRE regularne izraze, jedan od njih je Module rewrite.

Na kraju, ovaj način omogućava korištenje PCRE2 do službene verzije od Apache Software Foundation, nadam se da će uskoro izaći verzija s podrškom za PCRE2.

Također tijekom testiranja standardnih .htaccess, grešaka nije bilo, ako netko naiđe na greške, pišite u komentarima.

P.S.

Malo me zabrinjavao situacija korištenja dvije različite verzije PCRE-a za moj stog, pa sam odlučio to ispraviti.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster