Hvernig á að búa til PCRE2 stuðning fyrir Apache 2.4

Mig langar að deila reynslu minni af því að þýða Apache 2.4 yfir í PCRE2, þar sem jafnvel PHP 7 hefur stutt PCRE2 bókasafnið í langan tíma, en opinn uppspretta Apache Software Foundation gerir það enn ekki.
Auðvitað er ég nú líklega á undan Apache útgáfunni með PCRE2 stuðningi, þar sem ég er að nota heimildir frá Apache git, sem segir okkur að PCRE2 stuðningur er nú þegar mögulegur í næstu útgáfu, en fyrir þá sem nú þegar vilja PCRE2 stuðning í Apache 2.4, og hverjir vilja ekki bíða eftir útgáfu deili ég einni af leiðunum.

Greinin gerir ráð fyrir að þú sért að safna öllum nauðsynlegum hugbúnaði úr frumkóða, lista yfir hugbúnað og útgáfur þegar þetta er skrifað:

PCRE2-10.33
Apríl 1.7.0
APR-til 1.6.1
Apache httpd 2.4.41

Skref eitt: smíðaðu og settu saman PCRE2

Við skulum sleppa því augnabliki að hlaða niður heimildum frá opinberum heimildum þar sem þetta er of augljóst, svo þú hefur pakkað niður skjalasafninu, farið í möppuna með PCRE2 heimildunum og keyrt eftirfarandi skipun til að styðja UTF:

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

Tilgreindu slóðina þína í forskeytinu ef þú vilt ekki nota staðlaða staðsetningu til að setja upp bókasafnið:

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

Annars safnar þú án forskeyti.

Skipanirnar sem eftir eru gefa til kynna að stuðningur sé innifalinn fyrir 8-bita, 16-bita og 32-bita PCRE kóðablokkir, í þessari útgáfu var samsetningin framkvæmd með þeim.

Og auðvitað setjum við þetta saman með því að nota raðbundnar framkvæmd skipana:

make
make install

Ef allt er í lagi og samantektin gekk án villna skaltu halda áfram í næsta skref.

Skref tvö: tengdu PCRE2 bókasafnið við APR

Þar sem Apache setur saman heimildir með því að nota APR þurfum við að hafa bókasafnið með í APR sjálft, annars gætu komið upp villur um óþekktar aðgerðir í Apache heimildum, því við munum nota nýjar PCRE2 aðgerðir.

Við skulum sleppa því augnabliki að hlaða niður heimildum frá opinberum aðilum þar sem þetta er of augljóst, svo þú pakkaðir niður skjalasafninu og framkvæmdir APR stillinguna:

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

Auðvitað gefurðu til kynna leið þína í forskeytinu ef þú vilt ekki nota staðlaða staðsetningu til að setja upp bókasafnið eða ef þú tilgreinir ekki:

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

Eftir að þú hefur lokið uppsetningunni skaltu fara í möppuna: /etc/webserver/srcsrv/apr-1.7.0/build

Eða: /þín/slóð/að bókasafnið/byggja

Finndu apr_rules.mk skrána í þessari möppu og bættu við línunum í lokin þar sem:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Að tengja bókasafnið:

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

Vistaðu og farðu í rótarskrá APR heimildanna: /þín/slóð/í bókasafnið.

Við skulum taka saman breytta APR okkar:

make
make install

Ef allt er í lagi og samantektin gekk án villna skaltu halda áfram í næsta skref.

Skref þrjú: byggðu APR-util fyrir Apache frá heimildum

Þú hefur hlaðið niður þessu bókasafni frá upprunanum, farðu í rótarmöppuna í ópakkaða skjalasafninu með APR-util og sláðu inn eftirfarandi skipanir í röð:

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

Auðvitað gefurðu til kynna leið þína í forskeytinu ef þú vilt ekki nota staðlaða staðsetningu til að setja upp bókasafnið eða ef þú tilgreinir ekki:

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

Við tengjum einnig APR okkar hér:

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

Skref fjögur: hlaðið niður heimildum frá Apache git til að styðja PCRE2

Mikilvægt: Við halum niður heimildum frá nýjustu útgáfunni af git.

Við þurfum að hlaða niður tveimur heimildum eins og ap_regex.h og util_pcre.c, tenglar hér að neðan:
ap_regex.h
util_pcre.c

Farðu nú í Apache httpd upprunaskrána þína og byggðu Apache með eftirfarandi skipunum:

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

Auðvitað gefurðu til kynna leið þína í forskeytinu ef þú vilt ekki nota staðlaða staðsetningu til að setja upp bókasafnið eða ef þú tilgreinir ekki:

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

Þú getur líka tilgreint viðbótarskipanir til að byggja upp Apache að eigin vali, ég meina skipanirnar til að virkja eða slökkva á einingar og bókasöfnum.

Næst förum við í Apache httpd upprunaskrána okkar, ég er með þetta:

/etc/webserver/srcsrv/httpd-2.4.41

Þú ferð náttúrulega í möppuna þína, skiptu út í möppuna:

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

Skráin ap_regex.h, sem við sóttum frá Apache git.

Við förum líka í möppuna:

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

Við skiptum út skránni util_pcre.c fyrir þá sem við sóttum úr Apache git

Nú er bara að bæta við PCRE2 tengingunni í Apache sjálfum, þú þarft að finna skrána ap_config_auto.h, hún er staðsett í möppunni:

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

Í byrjun þessarar skráar skaltu setja inn eftirfarandi línur:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Jæja, nú erum við tilbúin fyrir alvöru augnablikið að setja saman Apache httpd með PCRE2 stuðningi.
Við skulum fara í Apache httpd upprunaskrána okkar og setja þetta saman með því að framkvæma skipanirnar í röð:

make
make install

Nú, ef allt gekk vel og án villna, þá muntu hafa sett saman og safnað saman Apache httpd með PCRE2 stuðningi, sem þýðir jákvæðar breytingar á Apache einingum sem nota PCRE reglulegar tjáningar, ein af þessum er Module rewrite.

Að lokum, þessi aðferð gerir það mögulegt að nota PCRE2 fyrir opinbera útgáfu frá Apache Software Foundation, ég vona að útgáfa með PCRE2 stuðningi verði gefin út fljótlega.

Einnig, við prófun á venjulegu .htaccess, komu engar villur, ef einhver hefur einhverjar villur, skrifaðu í athugasemdirnar.

PS

Ég var svolítið ruglaður yfir því að nota tvær mismunandi útgáfur af PCRE fyrir stafla minn, og ég ákvað að laga það.

Heimild: www.habr.com

Bæta við athugasemd