Kiel fari PCRE2-subtenon por Apache 2.4

Mi ŝatus kunhavigi mian sperton pri tradukado de Apache 2.4 al PCRE2, ĉar eĉ PHP 7 subtenas la bibliotekon PCRE2 dum longa tempo, sed la malferma fonto Apache Software Foundation ankoraŭ ne faras.
Kompreneble, mi nun verŝajne antaŭ la Apache-eldono kun PCRE2-subteno, ĉar mi uzas la fontojn de la Apache-git, kiu diras al ni, ke PCRE2-subteno jam eblas en la venonta eldono, sed por tiuj, kiuj jam volas PCRE2-subtenon en Apache 2.4, kaj kiuj ne volas atendi la liberigon mi dividas unu el la manieroj.

La artikolo supozas, ke vi kolektas ĉiujn necesajn programojn el fontkodo, listo de programaroj kaj versioj en la momento de la skribado:

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

Paŝo unu: konstrui kaj kompili PCRE2

Ni preterlasu la momenton de elŝuto de la fontoj de la oficialaj fontoj ĉar tio estas tro evidenta, do vi malpakis la arkivon, iru al la dosierujo kun la PCRE2-fontoj, kaj rulu la sekvan komandon por subteni UTF:

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

En la prefikso, indiku vian vojon se vi ne volas uzi la norman lokon por instali la bibliotekon:

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

Alie, vi kolektas sen prefikso.

La ceteraj komandoj indikas la inkludon de subtenoj por 8-bit, 16-bit kaj 32-bit PCRE-kodblokoj, en ĉi tiu versio la asembleo estis farita kun ili.

Kaj kompreneble, ni kompilas ĉi tiun aferon uzante sinsekvan ekzekuton de komandoj:

make
make install

Se ĉio estas bona kaj kompilo iris sen eraroj, transiru al la sekva paŝo.

Paŝo du: konektu la bibliotekon PCRE2 al APR

Ĉar Apache kompilas fontojn uzante APR, ni devas inkluzivi la bibliotekon en APR mem, alie povas esti eraroj pri nekonataj funkcioj en Apache-fontoj, ĉar ni uzos novajn funkciojn PCRE2.

Ni preterlasu la momenton de elŝuto de fontoj de oficialaj fontoj ĉar tio estas tro evidenta, do vi malpakis la arkivon kaj faris la APR-agordon:

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

Kompreneble, vi indikas vian vojon en la prefikso se vi ne volas uzi la norman lokon por instali la bibliotekon, aŭ se vi ne specifas:

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

Fininte la agordon, iru al la dosierujo: /etc/webserver/srcsrv/apr-1.7.0/build

Aŭ: /via/vojo/al la biblioteko/konstruo

Trovu la apr_rules.mk dosieron en ĉi tiu dosierujo, kaj aldonu la liniojn ĉe la fino kie:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Konekti la bibliotekon:

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

Konservu kaj iru al la radika dosierujo de la APR-fontoj: /your/path/al la biblioteko.

Ni kompilu nian modifitan APR:

make
make install

Se ĉio estas bona kaj kompilo iris sen eraroj, transiru al la sekva paŝo.

Paŝo tri: konstruu APR-util por Apache el fontoj

Vi elŝutis ĉi tiun bibliotekon el la fonto, iru al la radika dosierujo de la malpakita arkivo kun APR-util, kaj enigu la sekvajn komandojn sinsekve:

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

Kompreneble, vi indikas vian vojon en la prefikso se vi ne volas uzi la norman lokon por instali la bibliotekon, aŭ se vi ne specifas:

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

Ni ankaŭ ligas nian APR ĉi tie:

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

Paŝo kvar: elŝutu fontojn de Apache git por subteni PCRE2

Grave: Ni elŝutas la fontojn de la plej nova eldono de la git.

Ni devas elŝuti du fontojn kiel ap_regex.h kaj util_pcre.c, ligilojn sube:
ap_regex.h
util_pcre.c

Nun iru al via Apache httpd-fonta dosierujo kaj konstruu Apache per la jenaj komandoj:

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

Kompreneble, vi indikas vian vojon en la prefikso se vi ne volas uzi la norman lokon por instali la bibliotekon, aŭ se vi ne specifas:

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

Vi ankaŭ povas specifi pliajn komandojn por konstrui Apache laŭ via bontrovo, mi celas la komandojn por ebligi aŭ malŝalti modulojn kaj bibliotekojn.

Poste ni iras al nia Apache httpd fonta dosierujo, mi havas ĉi tion:

/etc/webserver/srcsrv/httpd-2.4.41

Vi nature iras al via dosierujo, anstataŭigu en la dosierujo:

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

La dosiero ap_regex.h, kiun ni elŝutis de la Apache git.

Ni ankaŭ iras al la dosierujo:

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

Ni anstataŭigas la dosieron util_pcre.c per tiu, kiun ni elŝutis el la Apache git

Nun restas nur aldoni la konekton PCRE2 en Apache mem, vi devas trovi la dosieron ap_config_auto.h, ĝi troviĝas en la dosierujo:

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

Ĉe la komenco de ĉi tiu dosiero, enigu la sekvajn liniojn:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Nu, nun ni estas pretaj por la vera momento de kompili Apache httpd kun PCRE2-subteno.
Ni iru al nia Apache httpd fonta dosierujo kaj kompilu ĉi tion sinsekve plenumante la komandojn:

make
make install

Nun, se ĉio iris bone kaj sen eraroj, tiam vi kunvenis kaj kompilos Apache httpd kun PCRE2-subteno, kio signifas pozitivajn ŝanĝojn en Apache-moduloj, kiuj uzas PCRE-regulajn esprimojn, unu el ĉi tiuj estas Modula reverko.

Konklude, ĉi tiu metodo ebligas uzi PCRE2 antaŭ la oficiala eldono de la Apache Software Foundation, mi esperas, ke versio kun PCRE2-subteno estos publikigita baldaŭ.

Ankaŭ, dum testado de norma .htaccess, ne okazis eraroj, se iu havas erarojn, skribu en la komentoj.

PS

Mi estis iomete konfuzita de la situacio uzi du malsamajn versiojn de PCRE por mia stako, kaj mi decidis ripari ĝin.

fonto: www.habr.com

Aldoni komenton