Kako napraviti PCRE2 podršku za Apache 2.4

Želeo bih da podelim svoje iskustvo prevođenja Apache 2.4 u PCRE2, pošto čak i PHP 7 podržava PCRE2 biblioteku već duže vreme, ali open source Apache Software Foundation još uvek ne.
Naravno, sada sam vjerovatno ispred Apache izdanja sa PCRE2 podrškom, jer koristim izvore iz Apache git-a, što nam govori da je podrška za PCRE2 već moguća u sljedećem izdanju, ali za one koji već žele PCRE2 podršku u Apache 2.4, a koji ne žele čekati izdavanje dijelim jedan od načina.

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

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

Prvi korak: izgradite i kompajlirajte PCRE2

Preskočimo trenutak preuzimanja izvora iz zvaničnih izvora jer je ovo previše očigledno, pa ste raspakovali arhivu, idite u folder sa PCRE2 izvorima i pokrenite 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 svoju putanju u prefiksu ako ne želite koristiti standardnu ​​lokaciju za instalaciju biblioteke:

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

U suprotnom, prikupljate bez prefiksa.

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

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

make
make install

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

Drugi korak: povežite PCRE2 biblioteku na APR

Pošto Apache kompajlira izvore koristeći APR, moramo uključiti biblioteku u sam APR, inače može doći do grešaka u vezi sa nepoznatim funkcijama u Apache izvorima, jer ćemo koristiti nove PCRE2 funkcije.

Izostavimo trenutak preuzimanja izvora sa zvaničnih izvora jer je ovo previše očigledno, pa ste raspakovali arhivu i izvršili APR konfiguraciju:

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

Naravno, svoju putanju naznačite u prefiksu ako ne želite koristiti standardnu ​​lokaciju za instalaciju biblioteke ili ako ne navedete:

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

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

Ili: /vaš/put/do biblioteke/build

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

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Povezivanje biblioteke:

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

Sačuvajte i idite na osnovni direktorijum APR izvora: /vaša/putanja/do biblioteke.

Hajde da sastavimo naš modifikovani APR:

make
make install

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

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

Skinuli ste ovu biblioteku iz izvora, idite u korijenski folder raspakirane arhive pomoću APR-util-a i unesite sljedeće naredbe redom:

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

Naravno, svoju putanju naznačite u prefiksu ako ne želite koristiti standardnu ​​lokaciju za instalaciju biblioteke ili ako ne navedete:

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

Ovdje također povezujemo naš APR:

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

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

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

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

Sada idite na vaš Apache httpd izvorni direktorij i napravite 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, svoju putanju naznačite u prefiksu ako ne želite koristiti standardnu ​​lokaciju za instalaciju biblioteke ili ako ne navedete:

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

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

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

/etc/webserver/srcsrv/httpd-2.4.41

Naravno da idete u svoj direktorij, zamijenite u direktoriju:

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

Datoteka ap_regex.h, koju smo preuzeli sa Apache git-a.

Idemo i u direktorij:

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

Mi zamjenjujemo datoteku util_pcre.c onom koju smo preuzeli sa Apache git-a

Sada ostaje samo da dodate PCRE2 vezu u samom Apacheu, potrebno je 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 ubacite sljedeće redove:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Pa, sada smo spremni za pravi trenutak kompajliranja Apache httpd sa PCRE2 podrškom.
Idemo u naš Apache httpd izvorni direktorij i kompajliramo ovo uzastopnim izvršavanjem naredbi:

make
make install

Sada, ako je sve prošlo kako treba i bez grešaka, onda ćete sastaviti i kompajlirati Apache httpd sa PCRE2 podrškom, što znači pozitivne promjene u Apache modulima koji koriste PCRE regularne izraze, jedan od njih je Module rewrite.

U zaključku, ova metoda omogućava korištenje PCRE2 prije službenog izdanja od strane Apache Software Foundation, nadam se da će verzija sa PCRE2 podrškom uskoro biti objavljena.

Takođe, tokom testiranja standardnog .htaccess-a nije bilo nikakvih grešaka, ako neko ima grešku, napišite u komentarima.

PS

Bio sam malo zbunjen situacijom kada sam koristio dvije različite verzije PCRE-a za svoj stack, i odlučio sam to popraviti.

izvor: www.habr.com

Dodajte komentar