Paano gumawa ng suporta sa PCRE2 para sa Apache 2.4

Nais kong ibahagi ang aking karanasan sa pagsasalin ng Apache 2.4 sa PCRE2, dahil kahit PHP 7 ay suportado na ang PCRE2 library sa mahabang panahon, ngunit ang open source na Apache Software Foundation ay hindi pa rin.
Siyempre, ako ngayon ay malamang na nauuna sa paglabas ng Apache na may suporta sa PCRE2, dahil gumagamit ako ng mga mapagkukunan mula sa Apache git, na nagsasabi sa amin na ang suporta ng PCRE2 ay posible na sa susunod na paglabas, ngunit para sa mga nais na ng suporta sa PCRE2 sa Apache 2.4, at kung sino ang hindi gustong maghintay ng release Ibinabahagi ko ang isa sa mga paraan.

Ipinapalagay ng artikulo na kinokolekta mo ang lahat ng kinakailangang software mula sa source code, isang listahan ng software at mga bersyon sa oras ng pagsulat:

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

Unang hakbang: bumuo at mag-compile ng PCRE2

Laktawan natin ang sandali ng pag-download ng mga mapagkukunan mula sa mga opisyal na mapagkukunan dahil ito ay masyadong halata, kaya na-unpack mo ang archive, pumunta sa folder na may mga mapagkukunan ng PCRE2, at patakbuhin ang sumusunod na command upang suportahan ang UTF:

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

Tukuyin ang iyong landas sa prefix kung ayaw mong gamitin ang karaniwang lokasyon upang i-install ang library:

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

Kung hindi, nangongolekta ka nang walang prefix.

Ang natitirang mga utos ay nagpapahiwatig ng pagsasama ng mga suporta para sa 8-bit, 16-bit at 32-bit na mga bloke ng PCRE code, sa bersyon na ito ang pagpupulong ay isinagawa kasama nila.

At siyempre, pinagsama-sama namin ang bagay na ito gamit ang sunud-sunod na pagpapatupad ng mga utos:

make
make install

Kung maayos ang lahat at walang mga error ang compilation, magpatuloy sa susunod na hakbang.

Ikalawang hakbang: ikonekta ang PCRE2 library sa APR

Dahil ang Apache ay nag-compile ng mga source gamit ang APR, kailangan naming isama ang library sa APR mismo, kung hindi, maaaring may mga error tungkol sa hindi kilalang mga function sa Apache source, dahil gagamit kami ng mga bagong PCRE2 function.

Alisin natin ang sandali ng pag-download ng mga mapagkukunan mula sa mga opisyal na mapagkukunan dahil ito ay masyadong halata, kaya na-unpack mo ang archive at ginawa ang configuration ng APR:

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

Naturally, ipinapahiwatig mo ang iyong landas sa prefix kung ayaw mong gamitin ang karaniwang lokasyon para sa pag-install ng library, o kung hindi mo tinukoy:

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

Pagkatapos makumpleto ang pagsasaayos, pumunta sa direktoryo: /etc/webserver/srcsrv/apr-1.7.0/build

O kaya: /your/path/to the library/build

Hanapin ang apr_rules.mk file sa direktoryong ito, at idagdag ang mga linya sa dulo kung saan:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Pagkonekta sa library:

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

I-save at pumunta sa root directory ng APR sources: /your/path/to the library.

I-compile natin ang aming binagong APR:

make
make install

Kung maayos ang lahat at walang mga error ang compilation, magpatuloy sa susunod na hakbang.

Ikatlong hakbang: bumuo ng APR-util para sa Apache mula sa mga mapagkukunan

Na-download mo ang library na ito mula sa pinagmulan, pumunta sa root folder ng hindi naka-pack na archive na may APR-util, at ipasok ang mga sumusunod na command nang sunud-sunod:

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

Naturally, ipinapahiwatig mo ang iyong landas sa prefix kung ayaw mong gamitin ang karaniwang lokasyon para sa pag-install ng library, o kung hindi mo tinukoy:

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

Ikinonekta rin namin ang aming APR dito:

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

Hakbang apat: mag-download ng mga mapagkukunan mula sa Apache git upang suportahan ang PCRE2

Mahalaga: Dina-download namin ang mga mapagkukunan mula sa pinakabagong edisyon ng git.

Kailangan naming mag-download ng dalawang mapagkukunan gaya ng ap_regex.h at util_pcre.c, mga link sa ibaba:
ap_regex.h
util_pcre.c

Pumunta ngayon sa iyong Apache httpd source directory at bumuo ng Apache gamit ang mga sumusunod na command:

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

Naturally, ipinapahiwatig mo ang iyong landas sa prefix kung ayaw mong gamitin ang karaniwang lokasyon para sa pag-install ng library, o kung hindi mo tinukoy:

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

Maaari mo ring tukuyin ang mga karagdagang command para sa pagbuo ng Apache sa iyong paghuhusga, ang ibig kong sabihin ay ang mga utos para sa pagpapagana o hindi pagpapagana ng mga module at library.

Susunod na pumunta kami sa aming direktoryo ng pinagmulan ng Apache httpd, mayroon ako nito:

/etc/webserver/srcsrv/httpd-2.4.41

Natural kang pumunta sa iyong direktoryo, palitan sa direktoryo:

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

Ang file na ap_regex.h, na na-download namin mula sa Apache git.

Pumunta din kami sa direktoryo:

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

Pinapalitan namin ang file na util_pcre.c ng na-download namin mula sa Apache git

Ngayon ang lahat na natitira ay upang magdagdag ng PCRE2 na koneksyon sa Apache mismo, kailangan mong hanapin ang file ap_config_auto.h, ito ay matatagpuan sa direktoryo:

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

Sa pinakadulo simula ng file na ito, ipasok ang mga sumusunod na linya:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Ngayon, handa na kami para sa totoong sandali ng pag-compile ng Apache httpd na may suporta sa PCRE2.
Pumunta tayo sa aming direktoryo ng source ng Apache httpd at i-compile ito sa pamamagitan ng sunud-sunod na pagpapatupad ng mga utos:

make
make install

Ngayon, kung ang lahat ay naging maayos at walang mga error, pagkatapos ay naipon at naipon mo ang Apache httpd na may suporta sa PCRE2, na nangangahulugan ng mga positibong pagbabago sa mga module ng Apache na gumagamit ng mga regular na expression ng PCRE, isa sa mga ito ay ang Module rewrite.

Sa konklusyon, ginagawang posible ng pamamaraang ito na gamitin ang PCRE2 bago ang opisyal na paglabas mula sa Apache Software Foundation, umaasa ako na ang isang bersyon na may suporta sa PCRE2 ay ilalabas sa lalong madaling panahon.

Gayundin, sa panahon ng pagsubok ng karaniwang .htaccess, walang mga error na naganap, kung sinuman ang may anumang mga error, sumulat sa mga komento.

PS

Medyo nalilito ako sa sitwasyon ng paggamit ng dalawang magkaibang bersyon ng PCRE para sa aking stack, at nagpasya akong ayusin ito.

Pinagmulan: www.habr.com

Magdagdag ng komento