Cómo hacer que PCRE2 sea compatible con Apache 2.4

Quiero compartir mi experiencia en la traducción de Apache 2.4 a PCRE2, ya que incluso PHP 7 ha admitido durante mucho tiempo la biblioteca PCRE2, y el software de código abierto Apache Software Foundation todavía no está allí.
Por supuesto, probablemente esté por delante del lanzamiento de Apache con soporte PCRE2 ahora, ya que utilizo las fuentes del Apache geo, que nos dice que el soporte PCRE2 ya es posible en el próximo lanzamiento, pero para aquellos que ya quieren soporte PCRE2 en Apache 2.4, y que no quieren esperar lanzamiento compartiendo una de las formas.

El artículo asume que recopila todo el software necesario de la fuente, una lista de software y versiones al momento de escribir:

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

Paso uno: compila y compila PCRE2


Omitiremos el momento de descargar la fuente de las fuentes, ya que es demasiado obvio, por lo que desempaquetó el archivo, vaya a la carpeta con la fuente PCRE2 y ejecute el siguiente comando para admitir UTF:

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

En el prefijo, especifique su ruta si no desea utilizar la ubicación estándar para instalar la biblioteca:

 --prefix=///  

De lo contrario, recopilar sin un prefijo.

Los comandos restantes indican la inclusión de PCRE de bloques de código de 8 bits, 16 bits y 32 bits, en esta realización, el ensamblaje se realizó con ellos.

Y, por supuesto, compilamos este caso utilizando la ejecución secuencial de comandos:

 make make install 

Si todas las reglas y la compilación funcionaron sin problemas, vaya al siguiente paso.

Paso dos: conecte la biblioteca PCRE2 a la APR


Dado que Apache compila las fuentes usando APR, necesitamos conectar la biblioteca en el APR en sí mismo, de lo contrario puede haber errores sobre funciones desconocidas en las fuentes de Apache, porque usaremos las nuevas funciones PCRE2.

Omitiremos el momento de descargar la fuente de las fuentes, ya que es demasiado obvio, por lo que desempaquetó el archivo y configuró la APR:

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

Naturalmente, indique su ruta en el prefijo si no desea utilizar la ubicación estándar para instalar la biblioteca, o no especifique:

 --prefix=///  

Después de completar la configuración, vaya al directorio: /etc/webserver/srcsrv/apr-1.7.0/build

Bueno, o: / your / path / a la biblioteca / build

Busque el archivo apr_rules.mk en este directorio y agregue al final de la línea donde:

 EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl 

Conexión a la biblioteca:

 -lpcre2-8 -L///  pcre2/lib 

Guarde, vaya al directorio raíz de las fuentes APR: / your / path / a la biblioteca.

Compile nuestro APR modificado:

 make make install 

Si todas las reglas y la compilación funcionaron sin problemas, vaya al siguiente paso.

Paso tres: construir APR-util para Apache desde la fuente


Descargó esta biblioteca de la oficina de origen, vaya a la carpeta raíz del archivo desempaquetado con APR-util e ingrese los siguientes comandos secuencialmente:

 ./configure --prefix=/etc/webserver/apr-util-161 --with-apr=///  apr make make install 

Naturalmente, indique su ruta en el prefijo si no desea utilizar la ubicación estándar para instalar la biblioteca, o no especifique:

 --prefix=///  

También aquí conectamos nuestro APR:

 --with-apr=///  apr 

Paso cuatro: descargue las fuentes de Apache Git para admitir PCRE2


Importante: descargue la fuente de la última versión del gita.

Necesitamos descargar dos fuentes como ap_regex.h y util_pcre.c, los enlaces a continuación:
ap_regex.h
util_pcre.c

Ahora vamos a nuestro directorio fuente httpd de Apache y construimos Apache con los siguientes comandos:

 ./configure --prefix=/etc/webserver/apache-2441 --with-apr=///  apr --with-apr-util=///  apr-util --with-pcre=///  pcre2/bin/pcre2-config 

Naturalmente, indique su ruta en el prefijo si no desea utilizar la ubicación estándar para instalar la biblioteca, o no especifique:

 --prefix=/// Apache httpd 

Además, especifique comandos adicionales para construir Apache a su discreción, me refiero a los comandos para habilitar la desactivación de módulos y bibliotecas.

A continuación, vaya a su directorio de origen httpd de Apache, tengo esto:

 /etc/webserver/srcsrv/httpd-2.4.41 

Usted naturalmente va a su directorio, reemplaza en el directorio:

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

El archivo ap_regex.h, que descargamos del Apache git.

También ve al directorio:

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

Reemplace el archivo util_pcre.c con el Apache que descargamos de

Ahora queda por agregar la conexión PCRE2 en el propio Apache, necesita encontrar el archivo ap_config_auto.h, se encuentra en el directorio:

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

Al principio de este archivo, inserte las siguientes líneas:

 /* Load PCRE2 */ #define HAVE_PCRE2 1 

Bueno, ahora estamos listos para el verdadero momento de compilar Apache httpd con soporte PCRE2.
Vamos a nuestro directorio fuente httpd de Apache, compilamos este caso usando la ejecución secuencial de comandos:

 make make install 

Ahora, si todo salió bien y sin errores, entonces habrá ensamblado y compilado Apache httpd con soporte PCRE2, lo que significa cambios positivos en los módulos Apache utilizando expresiones regulares PCRE, una de las cuales es la reescritura de módulos.

En conclusión, este método hace posible usar PCRE2 antes del lanzamiento de Apache Software Foundation, espero que pronto se lance una versión con soporte PCRE2.

Además, durante la prueba de .htaccess estándar, no se produjeron errores, si alguien tiene errores, escriba en los comentarios.

PS


Estaba un poco molesto por la situación de usar dos versiones diferentes de PCRE para mi pila, y decidí arreglarlo.

Source: https://habr.com/ru/post/474556/


All Articles