Com fer que PCRE2 sigui compatible amb Apache 2.4

M'agradaria compartir la meva experiència de traduir Apache 2.4 a PCRE2, ja que fins i tot PHP 7 ha donat suport a la biblioteca PCRE2 durant molt de temps, però l'Apache Software Foundation de codi obert encara no ho fa.
Per descomptat, ara probablement estic per davant de la versió d'Apache amb suport PCRE2, ja que estic utilitzant les fonts de l'Apache git, que ens diu que el suport de PCRE2 ja és possible en la propera versió, però per a aquells que ja volen suport de PCRE2 en Apache 2.4, i qui no vulgui esperar el llançament, comparteixo una de les maneres.

L'article suposa que esteu recopilant tot el programari necessari del codi font, una llista de programari i versions en el moment d'escriure:

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

Primer pas: construir i compilar PCRE2

Ometem el moment de descarregar les fonts de les fonts oficials, ja que això és massa evident, de manera que heu desempaquetat l'arxiu, aneu a la carpeta amb les fonts PCRE2 i executeu l'ordre següent per suportar UTF:

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

Especifiqueu el vostre camí al prefix si no voleu utilitzar la ubicació estàndard per instal·lar la biblioteca:

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

En cas contrari, recull sense prefix.

La resta d'ordres indiquen la inclusió de suports per a blocs de codi PCRE de 8 bits, 16 bits i 32 bits, en aquesta versió el muntatge es va realitzar amb ells.

I, per descomptat, compilem això mitjançant l'execució seqüencial d'ordres:

make
make install

Si tot està bé i la compilació ha anat sense errors, passeu al següent pas.

Pas dos: connecteu la biblioteca PCRE2 a APR

Atès que Apache compila les fonts utilitzant APR, hem d'incloure la biblioteca a l'APR, en cas contrari pot haver-hi errors sobre funcions desconegudes a les fonts d'Apache, perquè utilitzarem noves funcions PCRE2.

Ometem el moment de baixar fonts de fonts oficials, ja que això és massa obvi, de manera que heu desempaquetat l'arxiu i heu realitzat la configuració de l'APR:

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

Naturalment, indiqueu la vostra ruta al prefix si no voleu utilitzar la ubicació estàndard per instal·lar la biblioteca, o si no especifiqueu:

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

Després de completar la configuració, aneu al directori: /etc/webserver/srcsrv/apr-1.7.0/build

O bé: /your/path/a la biblioteca/build

Cerqueu el fitxer apr_rules.mk en aquest directori i afegiu les línies al final on:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Connexió de la biblioteca:

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

Deseu i aneu al directori arrel de les fonts APR: /your/path/a la biblioteca.

Compilem la nostra TAE modificada:

make
make install

Si tot està bé i la compilació ha anat sense errors, passeu al següent pas.

Pas tres: creeu APR-util per a Apache a partir de fonts

Heu descarregat aquesta biblioteca des de la font, aneu a la carpeta arrel de l'arxiu descomprimit amb APR-util i introduïu les ordres següents de forma seqüencial:

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

Naturalment, indiqueu la vostra ruta al prefix si no voleu utilitzar la ubicació estàndard per instal·lar la biblioteca, o si no especifiqueu:

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

També connectem la nostra TAE aquí:

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

Pas quatre: descarregueu les fonts d'Apache git per donar suport a PCRE2

Important: descarreguem les fonts de l'última edició del git.

Hem de descarregar dues fonts com ap_regex.h i util_pcre.c, enllaços a continuació:
ap_regex.h
util_pcre.c

Ara aneu al vostre directori d'origen httpd d'Apache i creeu Apache amb les ordres següents:

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

Naturalment, indiqueu la vostra ruta al prefix si no voleu utilitzar la ubicació estàndard per instal·lar la biblioteca, o si no especifiqueu:

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

També podeu especificar ordres addicionals per crear Apache a la vostra discreció, em refereixo a les ordres per habilitar o desactivar mòduls i biblioteques.

A continuació, anem al nostre directori d'origen httpd d'Apache, tinc això:

/etc/webserver/srcsrv/httpd-2.4.41

Naturalment aneu al vostre directori, substituïu-lo al directori:

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

El fitxer ap_regex.h, que hem baixat de l'Apache git.

També anem al directori:

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

Substituïm el fitxer util_pcre.c pel que hem baixat de l'Apache git

Ara només queda afegir la connexió PCRE2 al mateix Apache, cal trobar el fitxer ap_config_auto.h, es troba al directori:

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

Al principi d'aquest fitxer, inseriu les línies següents:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Bé, ara estem preparats per al moment real de compilar Apache httpd amb suport PCRE2.
Anem al nostre directori d'origen httpd d'Apache i compilem-ho executant seqüencialment les ordres:

make
make install

Ara, si tot ha anat bé i sense errors, aleshores haureu muntat i compilat Apache httpd amb suport PCRE2, el que significa canvis positius en els mòduls Apache que utilitzen expressions regulars PCRE, una d'elles és la reescriptura del mòdul.

En conclusió, aquest mètode permet utilitzar PCRE2 abans del llançament oficial de l'Apache Software Foundation, espero que aviat surti una versió amb suport PCRE2.

A més, durant les proves de .htaccess estàndard, no s'han produït errors, si algú té algun error, escrigui als comentaris.

PS

Estava una mica confós per la situació d'utilitzar dues versions diferents de PCRE per a la meva pila i vaig decidir arreglar-ho.

Font: www.habr.com

Afegeix comentari