Kako napraviti PCRE2 podršku za Apache 2.4

Želio bih podijeliti svoje iskustvo prevođenja Apache 2.4 u PCRE2, budući da čak i PHP 7 već dugo podržava PCRE2 biblioteku, ali open source Apache Software Foundation još uvijek ne.
Naravno, sad sam vjerojatno ispred izdanja Apachea s podrškom za PCRE2, budući da koristim izvore iz gita Apachea, što nam govori da je podrška za PCRE2 već moguća u sljedećem izdanju, ali za one koji već žele podršku za PCRE2 u Apache 2.4, a tko ne želi čekati puštanje dijelim jedan od načina.

Članak pretpostavlja da prikupljate sav potreban softver iz izvornog koda, popisa softvera i verzija u trenutku pisanja:

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

Prvi korak: izgradite i prevedite PCRE2

Preskočimo trenutak preuzimanja izvora iz službenih izvora jer je ovo previše očito, pa ste raspakirali arhivu, otišli u mapu s PCRE2 izvorima i pokrenuli sljedeću naredbu za podršku UTF-u:

./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode

Navedite svoj put u prefiksu ako ne želite koristiti standardnu ​​lokaciju za instaliranje biblioteke:

--prefix=/ваш/путь/до библиотеки

Inače, skupljate bez prefiksa.

Preostale naredbe ukazuju na uključivanje podrške za 8-bitne, 16-bitne i 32-bitne PCRE kodne blokove, u ovoj verziji sklop je izveden s njima.

I naravno, ovu stvar kompajliramo koristeći sekvencijalno izvršavanje naredbi:

make
make install

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

Drugi korak: povežite biblioteku PCRE2 s APR-om

Budući da Apache kompilira izvore pomoću APR-a, moramo uključiti biblioteku u sam APR, inače može doći do pogrešaka o nepoznatim funkcijama u Apache izvorima, jer ćemo koristiti nove PCRE2 funkcije.

Izostavimo trenutak preuzimanja izvora sa službenih izvora jer je to previše očito, pa ste raspakirali arhivu i izvršili APR konfiguraciju:

./configure --prefix=/etc/webserver/apr-170

Naravno, naznačite svoj put u prefiksu ako ne želite koristiti standardnu ​​lokaciju za instaliranje biblioteke ili ako ne navedete:

--prefix=/ваш/путь/до библиотеки

Nakon dovršetka konfiguracije idite u direktorij: /etc/webserver/srcsrv/apr-1.7.0/build

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

Pronađite datoteku apr_rules.mk u ovom direktoriju i dodajte retke na kraju gdje:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Povezivanje knjižnice:

-lpcre2-8 -L/ваш/путь/до библиотеки pcre2/lib

Spremite i idite u korijenski direktorij izvora APR: /vaš/put/do knjižnice.

Sastavimo naš modificirani APR:

make
make install

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

Treći korak: izgradite APR-util za Apache iz izvora

Preuzeli ste ovu biblioteku s izvora, idite u korijensku mapu neraspakirane arhive s APR-utilom i unesite sljedeće naredbe redom:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/ваш/путь/до библиотеки apr
make
make install

Naravno, naznačite svoj put u prefiksu ako ne želite koristiti standardnu ​​lokaciju za instaliranje biblioteke ili ako ne navedete:

--prefix=/ваш/путь/до библиотеки

Ovdje također povezujemo naš APR:

--with-apr=/ваш/путь/до библиотеки apr

Četvrti korak: preuzmite izvore s Apache git-a za podršku PCRE2

Važno: Izvore preuzimamo iz najnovijeg izdanja git-a.

Moramo preuzeti dva izvora kao što su ap_regex.h i util_pcre.c, veze ispod:
ap_regex.h
util_pcre.c

Sada idite u svoj izvorni direktorij Apache httpd i izgradite Apache sa sljedećim naredbama:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/путь/до библиотеки apr --with-apr-util=/ваш/путь/до библиотеки apr-util --with-pcre=/ваш/путь/до библиотеки pcre2/bin/pcre2-config

Naravno, naznačite svoj put u prefiksu ako ne želite koristiti standardnu ​​lokaciju za instaliranje biblioteke ili ako ne navedete:

--prefix=/ваш/путь/до Apache httpd

Također možete odrediti dodatne naredbe za izgradnju Apachea po vlastitom nahođenju, mislim na naredbe za omogućavanje ili onemogućavanje modula i biblioteka.

Zatim idemo u naš izvorni direktorij Apache httpd, imam ovo:

/etc/webserver/srcsrv/httpd-2.4.41

Naravno da idete u svoj imenik, zamijenite u imeniku:

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

Datoteka ap_regex.h, koju smo preuzeli iz Apache git.

Također idemo u imenik:

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

Datoteku util_pcre.c zamijenimo onom koju smo preuzeli iz Apache git-a

Sada sve što preostaje je dodati PCRE2 vezu u samom Apacheu, morate pronaći datoteku ap_config_auto.h, nalazi se u direktoriju:

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

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

/* Load PCRE2 */
#define HAVE_PCRE2 1

Pa, sada smo spremni za pravi trenutak kompajliranja Apache httpd s PCRE2 podrškom.
Idemo u naš izvorni direktorij Apache httpd i kompajlirajte ovo uzastopnim izvođenjem naredbi:

make
make install

Sada, ako je sve prošlo dobro i bez grešaka, tada ćete imati sastavljen i kompajliran Apache httpd s PCRE2 podrškom, što znači pozitivne promjene u Apache modulima koji koriste PCRE regularne izraze, jedan od njih je Module rewrite.

Zaključno, ova metoda omogućuje korištenje PCRE2 prije službenog izdanja Apache Software Foundationa, nadam se da će verzija s podrškom za PCRE2 biti objavljena uskoro.

Također, tijekom testiranja standardnog .htaccess-a nije bilo grešaka, ako netko ima grešaka, neka napiše u komentarima.

PS

Bio sam malo zbunjen situacijom korištenja dvije različite verzije PCRE-a za svoj stog i odlučio sam to popraviti.

Izvor: www.habr.com

Dodajte komentar