Ž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-unicodeU prefiksu navedite svoj put ako ne želite koristiti standardnu lokaciju za instalaciju knjižnice:
--prefix=/vaš/put/do/knjižniceInač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-170Naravno, u prefiksu navedite svoj put ako ne želite koristiti standardnu lokaciju za instalaciju knjižnice, ili jednostavno ne navedite:
--prefix=/vaš/put/do/knjižniceNakon 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 -ldlPovezivanje knjižnice:
-lpcre2-8 -L/vaš/put/do biblioteke pcre2/libSprema se idemo u korijenski katalog izvornih kodova APR: /vaš/put/do biblioteke.
Kompiliramo naš izmijenjeni APR:
make
make installAko 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 installNaravno, u prefiksu navedite svoj put ako ne želite koristiti standardnu lokaciju za instalaciju knjižnice, ili jednostavno ne navedite:
--prefix=/vaš/put/do/knjižniceTakođer ovdje povezujemo naš APR:
--with-apr=/vaš/put/do biblioteke aprKorak č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:
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-configNaravno, u prefiksu navedite svoj put ako ne želite koristiti standardnu lokaciju za instalaciju knjižnice, ili jednostavno ne navedite:
--prefix=/vaš/put/do Apache httpdTakođ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.41Naravno, prelazite u svoj katalog, zamjenjujemo u katalogu:
/etc/webserver/srcsrv/httpd-2.4.41/includeDatoteku ap_regex.h, s onom koju smo preuzeli s gita Apache.
Također idemo u mapu:
/etc/webserver/srcsrv/httpd-2.4.41/serverZamjenjujemo 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/includeNa 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 installEvo 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
