Ki jan fè sipò PCRE2 pou Apache 2.4

Mwen ta renmen pataje eksperyans mwen nan tradui Apache 2.4 an PCRE2, paske menm PHP 7 te sipòte bibliyotèk PCRE2 la pou yon tan long, men Open Source Apache Software Foundation toujou pa fè sa.
Natirèlman, mwen se kounye a pwobableman devan yo nan lage Apache a ak sipò PCRE2, depi m ap itilize sous yo soti nan Apache git la, ki di nou ke sipò PCRE2 deja posib nan pwochen lage a, men pou moun ki deja vle sipò PCRE2 nan Apache 2.4, epi ki pa vle tann lage mwen pataje youn nan fason yo.

Atik la sipoze ke w ap kolekte tout lojisyèl ki nesesè nan kòd sous, yon lis lojisyèl ak vèsyon nan moman sa a nan ekri:

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

Premye etap: bati ak konpile PCRE2

Ann kite moman telechaje sous yo soti nan sous ofisyèl yo paske sa a twò evidan, kidonk ou te depake achiv la, ale nan katab la ak sous PCRE2 yo, epi kouri lòd sa a pou sipòte UTF:

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

Espesifye chemen ou nan prefiks la si ou pa vle sèvi ak kote estanda a pou enstale bibliyotèk la:

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

Sinon, ou kolekte san yon prefiks.

Kòmandman ki rete yo endike enklizyon de sipò pou blòk kòd PCRE 8-bit, 16-bit ak 32-bit, nan vèsyon sa a asanble a te fèt ak yo.

Ak nan kou, nou konpile bagay sa a lè l sèvi avèk ekzekisyon sekans nan kòmandman:

make
make install

Si tout bagay anfòm epi konpilasyon ale san erè, ale nan pwochen etap la.

Etap de: konekte bibliyotèk PCRE2 a APR

Depi Apache konpile sous lè l sèvi avèk APR, nou bezwen enkli bibliyotèk la nan APR tèt li, otreman ka gen erè sou fonksyon enkoni nan sous Apache, paske nou pral sèvi ak nouvo fonksyon PCRE2.

Ann kite moman telechaje sous ki soti nan sous ofisyèl yo paske sa a twò evidan, kidonk ou depake achiv la epi fè konfigirasyon APR la:

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

Natirèlman, ou endike chemen ou nan prefiks la si ou pa vle sèvi ak kote estanda a pou enstale bibliyotèk la, oswa si ou pa presize:

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

Apre w fin ranpli konfigirasyon an, ale nan anyè a: /etc/webserver/srcsrv/apr-1.7.0/build

Oswa: /ou/chemen/nan bibliyotèk la/bati

Jwenn fichye apr_rules.mk nan anyè sa a, epi ajoute liy yo nan fen kote:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Konekte bibliyotèk la:

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

Sove epi ale nan anyè rasin sous APR yo: /your/path/to bibliyotèk la.

Ann konpile APR modifye nou an:

make
make install

Si tout bagay anfòm epi konpilasyon ale san erè, ale nan pwochen etap la.

Etap twa: bati APR-util pou Apache soti nan sous

Ou te telechaje bibliyotèk sa a soti nan sous la, ale nan katab rasin nan achiv ki pa pake a ak APR-util, epi antre kòmandman sa yo an sekans:

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

Natirèlman, ou endike chemen ou nan prefiks la si ou pa vle sèvi ak kote estanda a pou enstale bibliyotèk la, oswa si ou pa presize:

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

Nou konekte tou APR nou an isit la:

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

Etap kat: telechaje sous Apache git pou sipòte PCRE2

Enpòtan: Nou telechaje sous yo nan dènye edisyon git la.

Nou bezwen telechaje de sous tankou ap_regex.h ak util_pcre.c, lyen ki anba a:
ap_regex.h
util_pcre.c

Koulye a, ale nan anyè sous Apache httpd ou a epi bati Apache ak kòmandman sa yo:

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

Natirèlman, ou endike chemen ou nan prefiks la si ou pa vle sèvi ak kote estanda a pou enstale bibliyotèk la, oswa si ou pa presize:

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

Ou kapab tou presize kòmandman adisyonèl pou bati Apache nan diskresyon ou, mwen vle di kòmandman yo pèmèt oswa enfim modil ak bibliyotèk.

Apre sa, nou ale nan anyè sous Apache httpd nou an, mwen gen sa a:

/etc/webserver/srcsrv/httpd-2.4.41

Ou natirèlman ale nan anyè ou a, ranplase nan anyè a:

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

Fichye ap_regex.h, ke nou telechaje nan Apache git la.

Nou menm tou nou ale nan anyè a:

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

Nou ranplase fichye a util_pcre.c ak youn nan nou telechaje nan Apache git la

Koulye a, tout sa ki rete se ajoute koneksyon an PCRE2 nan Apache tèt li, ou bezwen jwenn fichye a ap_config_auto.h, li sitiye nan anyè a:

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

Nan kòmansman an nan dosye sa a, mete liy sa yo:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Oke, kounye a nou pare pou moman reyèl la nan konpile Apache httpd ak sipò PCRE2.
Ann ale nan anyè sous Apache httpd nou an epi konpile sa a pa sekans egzekite kòmandman yo:

make
make install

Koulye a, si tout bagay te ale byen epi san erè, Lè sa a, ou pral rasanble ak konpile Apache httpd ak sipò PCRE2, ki vle di chanjman pozitif nan modil Apache ki sèvi ak ekspresyon regilye PCRE, youn nan sa yo se Modil reekri.

An konklizyon, metòd sa a fè li posib yo sèvi ak PCRE2 anvan lage ofisyèl la soti nan Apache Software Foundation, mwen espere ke yon vèsyon ak sipò PCRE2 pral lage byento.

Epitou, pandan tès estanda .htaccess, pa gen okenn erè ki te fèt, si yon moun gen nenpòt erè, ekri nan kòmantè yo.

PS

Mwen te yon ti kras konfonn nan sitiyasyon an nan lè l sèvi avèk de vèsyon diferan nan PCRE pou chemine mwen an, epi mwen deside ranje li.

Sous: www.habr.com

Add nouvo kòmantè