Hoe kinne jo PCRE2-stipe meitsje foar Apache 2.4

Ik wol myn ûnderfining mei it oersetten fan Apache 2.4 nei PCRE2 diele, om't sels PHP 7 de PCRE2-bibleteek in lange tiid hat stipe, mar de iepen boarne Apache Software Foundation docht noch net.
Fansels bin ik no wierskynlik foar de Apache-release mei PCRE2-stipe, om't ik de boarnen brûke fan 'e Apache-git, dy't ús fertelt dat PCRE2-stipe al mooglik is yn' e folgjende release, mar foar dyjingen dy't al PCRE2-stipe wolle yn Apache 2.4, en wa't net wolle wachtsje op frijlitting, diel ik ien fan 'e manieren.

It artikel giet derfan út dat jo alle nedige software sammelje fan boarnekoade, in list mei software en ferzjes op it stuit fan skriuwen:

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

Stap ien: bouwe en kompilearje PCRE2

Litte wy it momint oerslaan fan it downloaden fan de boarnen fan 'e offisjele boarnen, om't dit te dúdlik is, dus jo hawwe it argyf útpakt, gean nei de map mei de PCRE2-boarnen, en fier it folgjende kommando út om UTF te stypjen:

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

Spesifisearje jo paad yn it foarheaksel as jo de standert lokaasje net wolle brûke om de bibleteek te ynstallearjen:

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

Oars sammelje jo sûnder foarheaksel.

De oerbleaune kommando's jouwe oan op it opnimmen fan stipe foar 8-bit, 16-bit en 32-bit PCRE-koadeblokken, yn dizze ferzje waard de gearstalling mei har útfierd.

En fansels kompilearje wy dit ding mei sekwinsjele útfiering fan kommando's:

make
make install

As alles goed is en kompilaasje gie sûnder flaters, gean dan troch nei de folgjende stap.

Stap twa: ferbine de PCRE2-bibleteek oan APR

Om't Apache boarnen kompilearret mei APR, moatte wy de bibleteek yn APR sels opnimme, oars kinne der flaters wêze oer ûnbekende funksjes yn Apache-boarnen, om't wy nije PCRE2-funksjes sille brûke.

Litte wy it momint fan it downloaden fan boarnen fan offisjele boarnen weilitte, om't dit te dúdlik is, dus jo hawwe it argyf útpakt en de APR-konfiguraasje útfierd:

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

Fansels jouwe jo jo paad oan yn it foarheaksel as jo de standert lokaasje net brûke wolle foar it ynstallearjen fan de bibleteek, of as jo net spesifisearje:

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

Gean nei it foltôgjen fan de konfiguraasje nei de map: /etc/webserver/srcsrv/apr-1.7.0/build

Of: /dyn/paad/nei de bibleteek/build

Fyn it apr_rules.mk-bestân yn dizze map, en foegje de rigels ta oan 'e ein wêr:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

De biblioteek ferbine:

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

Bewarje en gean nei de rootmap fan 'e APR-boarnen: /jo/paad/nei de bibleteek.

Litte wy ús wizige APR kompilearje:

make
make install

As alles goed is en kompilaasje gie sûnder flaters, gean dan troch nei de folgjende stap.

Stap trije: bouwe APR-util foar Apache út boarnen

Jo hawwe dizze bibleteek downloade fan 'e boarne, gean nei de rootmap fan it útpakte argyf mei APR-util, en fier de folgjende kommando's opfolgjend yn:

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

Fansels jouwe jo jo paad oan yn it foarheaksel as jo de standert lokaasje net brûke wolle foar it ynstallearjen fan de bibleteek, of as jo net spesifisearje:

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

Wy ferbine hjir ek ús APR:

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

Stap fjouwer: download boarnen fan Apache git om PCRE2 te stypjen

Wichtich: Wy downloade de boarnen fan 'e lêste edysje fan' e git.

Wy moatte twa boarnen downloade lykas ap_regex.h en util_pcre.c, links hjirûnder:
ap_regex.h
util_pcre.c

Gean no nei jo Apache httpd boarne map en bou Apache mei de folgjende kommando's:

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

Fansels jouwe jo jo paad oan yn it foarheaksel as jo de standert lokaasje net brûke wolle foar it ynstallearjen fan de bibleteek, of as jo net spesifisearje:

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

Jo kinne ek ekstra kommando's opjaan foar it bouwen fan Apache nei jo ynsjoch, ik bedoel de kommando's foar it ynskeakeljen of útskeakeljen fan modules en bibleteken.

Folgjende geane wy ​​nei ús Apache httpd boarne map, ik haw dit:

/etc/webserver/srcsrv/httpd-2.4.41

Jo geane fansels nei jo map, ferfange yn de map:

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

It bestân ap_regex.h, dat wy downloade fan 'e Apache git.

Wy geane ek nei de map:

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

Wy ferfange de triem util_pcre.c mei dejinge dy't wy downloade fan 'e Apache git

No alles wat bliuwt is de PCRE2-ferbining yn Apache sels ta te foegjen, jo moatte it bestân fine ap_config_auto.h, it leit yn 'e map:

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

Fier de folgjende rigels oan it begjin fan dit bestân yn:

/* Load PCRE2 */
#define HAVE_PCRE2 1

No, no binne wy ​​klear foar it echte momint fan it kompilearjen fan Apache httpd mei PCRE2-stipe.
Litte wy nei ús Apache httpd-boarnemap gean en dit kompilearje troch de kommando's sequentieel út te fieren:

make
make install

No, as alles goed gie en sûnder flaters, dan sille jo Apache httpd gearstald en kompilearre hawwe mei PCRE2-stipe, wat positive feroaringen betsjuttet yn Apache-modules dy't PCRE reguliere útdrukkingen brûke, ien fan dizze is Module herskriuwe.

As konklúzje makket dizze metoade it mooglik om PCRE2 te brûken foar de offisjele frijlitting fan 'e Apache Software Foundation, ik hoopje dat in ferzje mei PCRE2-stipe gau frijlitten wurdt.

Ek by it testen fan standert .htaccess binne gjin flaters foarkommen, as immen flaters hat, skriuw dan yn 'e kommentaren.

PS

Ik wie in bytsje yn 'e war troch de situaasje fan it brûken fan twa ferskillende ferzjes fan PCRE foar myn stack, en ik besleat it te reparearjen.

Boarne: www.habr.com

Add a comment