Giunsa paghimo ang suporta sa PCRE2 alang sa Apache 2.4

Gusto nakong ipaambit ang akong kasinatian sa paghubad sa Apache 2.4 ngadto sa PCRE2, tungod kay bisan ang PHP 7 nagsuporta sa PCRE2 library sa dugay nga panahon, apan ang open source Apache Software Foundation wala gihapon.
Siyempre, ako karon tingali nag-una sa Apache release uban sa PCRE2 nga suporta, tungod kay ako naggamit sa mga tinubdan gikan sa Apache git, nga nagsulti kanato nga ang PCRE2 nga suporta posible na sa sunod nga pagpagawas, apan alang niadtong gusto na sa PCRE2 nga suporta sa Apache 2.4, ug kinsa ang dili gusto nga maghulat nga buhian akong gipaambit ang usa sa mga paagi.

Ang artikulo nagtuo nga imong gikolekta ang tanan nga gikinahanglan nga software gikan sa source code, usa ka lista sa software ug mga bersyon sa panahon sa pagsulat:

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

Unang lakang: paghimo ug pag-compile sa PCRE2

Atong laktawan ang higayon sa pag-download sa mga tinubdan gikan sa opisyal nga mga tinubdan tungod kay kini klaro kaayo, mao nga imong gi-unpack ang archive, adto sa folder nga adunay PCRE2 nga mga tinubdan, ug ipadagan ang mosunod nga sugo sa pagsuporta sa UTF:

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

Ipiho ang imong agianan sa prefix kung dili nimo gusto nga gamiton ang standard nga lokasyon aron i-install ang library:

--prefix=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Kung dili, mangolekta ka nga wala’y prefix.

Ang nahabilin nga mga sugo nagpakita sa paglakip sa mga suporta alang sa 8-bit, 16-bit ug 32-bit nga mga bloke sa PCRE code, sa niini nga bersyon ang asembliya gihimo uban kanila.

Ug siyempre, gitipon namon kini nga butang gamit ang sunud-sunod nga pagpatuman sa mga mando:

make
make install

Kung maayo ang tanan ug wala’y mga sayup ang pag-compile, padayon sa sunod nga lakang.

Ikaduhang lakang: ikonektar ang PCRE2 library sa APR

Tungod kay ang Apache nag-compile sa mga tinubdan gamit ang APR, kinahanglan natong ilakip ang librarya sa APR mismo, kung dili mahimo nga adunay mga sayup mahitungod sa wala mailhi nga mga function sa Apache nga mga tinubdan, tungod kay kita mogamit sa bag-ong PCRE2 functions.

Atong laktawan ang higayon sa pag-download sa mga tinubdan gikan sa opisyal nga mga tinubdan tungod kay kini klaro kaayo, mao nga imong gi-unpack ang archive ug gihimo ang APR configuration:

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

Natural, gipakita nimo ang imong agianan sa prefix kung dili nimo gusto nga gamiton ang sukaranan nga lokasyon alang sa pag-install sa librarya, o kung dili nimo ipiho:

--prefix=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Human makompleto ang configuration, adto sa direktoryo: /etc/webserver/srcsrv/apr-1.7.0/build

O: /imong/dalan/sa library/build

Pangitaa ang apr_rules.mk file niini nga direktoryo, ug idugang ang mga linya sa katapusan diin:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Pagkonektar sa librarya:

-lpcre2-8 -L/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pcre2/lib

I-save ug adto sa root directory sa APR sources: /your/path/sa library.

Atong tigumon ang atong giusab nga APR:

make
make install

Kung maayo ang tanan ug wala’y mga sayup ang pag-compile, padayon sa sunod nga lakang.

Ikatulong lakang: paghimo og APR-util para sa Apache gikan sa mga tinubdan

Imong gi-download kini nga librarya gikan sa tinubdan, adto sa root folder sa unpacked archive uban sa APR-util, ug isulod ang mosunod nga mga sugo nga sunud-sunod:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ apr
make
make install

Natural, gipakita nimo ang imong agianan sa prefix kung dili nimo gusto nga gamiton ang sukaranan nga lokasyon alang sa pag-install sa librarya, o kung dili nimo ipiho:

--prefix=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Gikonektar usab namo ang among APR dinhi:

--with-apr=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ apr

Ikaupat nga lakang: pag-download sa mga tinubdan gikan sa Apache git aron suportahan ang PCRE2

Importante: Gi-download namo ang mga tinubdan gikan sa pinakabag-o nga edisyon sa git.

Kinahanglan namong i-download ang duha ka tinubdan sama sa ap_regex.h ug util_pcre.c, mga link sa ubos:
ap_regex.h
util_pcre.c

Karon adto sa imong Apache httpd source directory ug pagtukod og Apache uban sa mosunod nga mga sugo:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ apr --with-apr-util=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ apr-util --with-pcre=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pcre2/bin/pcre2-config

Natural, gipakita nimo ang imong agianan sa prefix kung dili nimo gusto nga gamiton ang sukaranan nga lokasyon alang sa pag-install sa librarya, o kung dili nimo ipiho:

--prefix=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Apache httpd

Mahimo usab nimo ipiho ang dugang nga mga mando alang sa pagtukod sa Apache sa imong pagkabuotan, gipasabut nako ang mga mando alang sa pagpagana o pag-disable sa mga module ug librarya.

Sunod moadto kami sa among direktoryo sa gigikanan sa Apache httpd, naa nako kini:

/etc/webserver/srcsrv/httpd-2.4.41

Natural nga moadto ka sa imong direktoryo, ilisan sa direktoryo:

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

Ang file ap_regex.h, nga among gi-download gikan sa Apache git.

Moadto usab kami sa direktoryo:

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

Among ilisan ang file nga util_pcre.c sa usa nga among gi-download gikan sa Apache git

Karon ang nahabilin mao ang pagdugang sa koneksyon sa PCRE2 sa Apache mismo, kinahanglan nimo pangitaon ang file ap_config_auto.h, kini nahimutang sa direktoryo:

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

Sa sinugdanan pa niini nga file, isulod ang mosunod nga mga linya:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Aw, karon andam na kami alang sa tinuud nga higayon sa pag-compile sa Apache httpd nga adunay suporta sa PCRE2.
Adto ta sa among Apache httpd source directory ug i-compile kini pinaagi sa sunodsunod nga pagpatuman sa mga sugo:

make
make install

Karon, kung maayo ang tanan ug wala’y mga kasaypanan, nan imong gitigum ug giipon ang Apache httpd nga adunay suporta sa PCRE2, nga nagpasabut nga positibo nga mga pagbag-o sa mga module sa Apache nga naggamit mga regular nga ekspresyon sa PCRE, usa niini mao ang pagsulat pag-usab sa Module.

Sa konklusyon, kini nga pamaagi nagpaposible sa paggamit sa PCRE2 sa wala pa ang opisyal nga pagpagawas gikan sa Apache Software Foundation, nanghinaut ko nga ang usa ka bersyon nga adunay suporta sa PCRE2 ipagawas sa dili madugay.

Usab, sa panahon sa pagsulay sa standard .htaccess, walay mga sayop nga nahitabo, kon adunay bisan unsa nga mga sayop, isulat sa mga komento.

PS

Medyo naglibog ko sa sitwasyon sa paggamit sa duha ka lainlaing bersyon sa PCRE para sa akong stack, ug nakahukom ko nga ayohon kini.

Source: www.habr.com

Idugang sa usa ka comment