Kako narediti podporo za PCRE2 za Apache 2.4

Rad bi delil svojo izkušnjo s prevajanjem Apache 2.4 v PCRE2, saj celo PHP 7 že dolgo podpira knjižnico PCRE2, odprtokodna Apache Software Foundation pa še vedno ne.
Seveda sem zdaj verjetno pred izdajo Apache s podporo PCRE2, saj uporabljam vire iz Apache git, kar nam pove, da je podpora PCRE2 možna že v naslednji izdaji, vendar za tiste, ki že želijo podporo PCRE2 v Apache 2.4 in kdo ne želi čakati na izdajo, delim enega od načinov.

Članek predpostavlja, da zbirate vso potrebno programsko opremo iz izvorne kode, seznam programske opreme in različice v času pisanja:

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

Prvi korak: zgradite in prevedite PCRE2

Preskočimo trenutek prenosa virov iz uradnih virov, ker je to preveč očitno, zato ste razpakirali arhiv, pojdite v mapo z viri PCRE2 in zaženite naslednji ukaz za podporo UTF:

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

Podajte svojo pot v predponi, če ne želite uporabiti standardne lokacije za namestitev knjižnice:

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

V nasprotnem primeru zbirate brez predpone.

Preostali ukazi kažejo na vključitev podpore za 8-bitne, 16-bitne in 32-bitne kodne bloke PCRE, v tej različici je bila montaža izvedena z njimi.

In seveda to stvar prevedemo z uporabo zaporednega izvajanja ukazov:

make
make install

Če je vse v redu in je prevajanje potekalo brez napak, nadaljujte z naslednjim korakom.

Drugi korak: povežite knjižnico PCRE2 z APR

Ker Apache prevaja izvore z uporabo APR, moramo knjižnico vključiti v sam APR, sicer lahko pride do napak glede neznanih funkcij v izvorih Apache, ker bomo uporabljali nove funkcije PCRE2.

Izpustimo trenutek prenosa virov iz uradnih virov, ker je preveč očiten, zato ste razpakirali arhiv in izvedli konfiguracijo APR:

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

Seveda svojo pot navedete v predponi, če ne želite uporabiti standardne lokacije za namestitev knjižnice ali če ne podate:

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

Po končani konfiguraciji pojdite v imenik: /etc/webserver/srcsrv/apr-1.7.0/build

Ali: /vaša/pot/do knjižnice/gradnje

Poiščite datoteko apr_rules.mk v tem imeniku in dodajte vrstice na koncu, kjer:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Priključitev knjižnice:

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

Shranite in pojdite v korenski imenik virov APR: /vaša/pot/do knjižnice.

Sestavimo naš spremenjeni APR:

make
make install

Če je vse v redu in je prevajanje potekalo brez napak, nadaljujte z naslednjim korakom.

Tretji korak: zgradite APR-util za Apache iz virov

To knjižnico ste prenesli iz vira, pojdite v korensko mapo nepakiranega arhiva z APR-util in zaporedno vnesite naslednje ukaze:

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

Seveda svojo pot navedete v predponi, če ne želite uporabiti standardne lokacije za namestitev knjižnice ali če ne podate:

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

Tukaj povezujemo tudi naše APR:

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

Četrti korak: prenesite vire iz Apache git za podporo PCRE2

Pomembno: Vire prenesemo iz najnovejše izdaje git.

Prenesti moramo dva vira, kot sta ap_regex.h in util_pcre.c, spodnji povezavi:
ap_regex.h
util_pcre.c

Zdaj pojdite v izvorni imenik Apache httpd in zgradite Apache z naslednjimi ukazi:

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

Seveda svojo pot navedete v predponi, če ne želite uporabiti standardne lokacije za namestitev knjižnice ali če ne podate:

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

Po lastni presoji lahko določite tudi dodatne ukaze za gradnjo Apache, mislim na ukaze za omogočanje ali onemogočanje modulov in knjižnic.

Nato gremo v izvorni imenik Apache httpd, imam to:

/etc/webserver/srcsrv/httpd-2.4.41

Seveda greš v svoj imenik, zamenjaš v imeniku:

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

Datoteka ap_regex.h, ki smo jo prenesli iz Apache git.

Gremo tudi v imenik:

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

Datoteko util_pcre.c zamenjamo s tisto, ki smo jo prenesli iz Apache git

Zdaj ostane le še, da dodate povezavo PCRE2 v sam Apache, poiskati morate datoteko ap_config_auto.h, ki se nahaja v imeniku:

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

Na samem začetku te datoteke vstavite naslednje vrstice:

/* Load PCRE2 */
#define HAVE_PCRE2 1

No, zdaj smo pripravljeni na pravi trenutek prevajanja Apache httpd s podporo za PCRE2.
Pojdimo v izvorni imenik Apache httpd in ga prevedimo z zaporednim izvajanjem ukazov:

make
make install

Zdaj, če je šlo vse dobro in brez napak, potem boste sestavili in prevedli Apache httpd s podporo PCRE2, kar pomeni pozitivne spremembe v modulih Apache, ki uporabljajo regularne izraze PCRE, eden od teh je Module rewrite.

Skratka, ta metoda omogoča uporabo PCRE2 pred uradno izdajo Apache Software Foundation, upam, da bo kmalu izdana različica s podporo za PCRE2.

Tudi med testiranjem standardnega .htaccess ni prišlo do napak, če ima kdo kakšne napake, naj napiše v komentarje.

PS

Bil sem nekoliko zmeden zaradi uporabe dveh različnih različic PCRE za svoj sklad in odločil sem se, da to popravim.

Vir: www.habr.com

Dodaj komentar