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