Cómo hacer que PCRE2 sea compatible con Apache 2.4

Me gustaría compartir mi experiencia al traducir Apache 2.4 a PCRE2, ya que incluso PHP 7 ha sido compatible con la biblioteca PCRE2 durante mucho tiempo, pero la Apache Software Foundation de código abierto todavía no lo hace.
Por supuesto, ahora probablemente estoy por delante de la versión de Apache con soporte PCRE2, ya que estoy usando las fuentes de Apache git, lo que nos dice que la compatibilidad con PCRE2 ya es posible en la próxima versión, pero para aquellos que ya quieren compatibilidad con PCRE2 en Apache 2.4, y quienes no quieran esperar su lanzamiento les comparto una de las formas.

El artículo asume que está recopilando todo el software necesario del código fuente, una lista de software y versiones al momento de escribir este artículo:

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

Paso uno: construir y compilar PCRE2

Saltemos el momento de descargar las fuentes de las fuentes oficiales, ya que esto es demasiado obvio, por lo que descomprimiste el archivo, vas a la carpeta con las fuentes PCRE2 y ejecutas el siguiente comando para admitir UTF:

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

Especifique su ruta en el prefijo si no desea utilizar la ubicación estándar para instalar la biblioteca:

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

De lo contrario, cobra sin prefijo.

El resto de comandos indican la inclusión de soportes para bloques de código PCRE de 8, 16 y 32 bits, en esta versión el ensamblaje se realizó con ellos.

Y, por supuesto, compilamos esto usando la ejecución secuencial de comandos:

make
make install

Si todo está bien y la compilación se realizó sin errores, continúe con el siguiente paso.

Paso dos: conecte la biblioteca PCRE2 a APR

Dado que Apache compila fuentes utilizando APR, debemos incluir la biblioteca en APR; de lo contrario, puede haber errores sobre funciones desconocidas en las fuentes de Apache, porque usaremos nuevas funciones PCRE2.

Omitamos el momento de descargar fuentes de fuentes oficiales ya que esto es demasiado obvio, por lo que descomprimiste el archivo y realizaste la configuración APR:

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

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

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

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

O: /tu/ruta/a la biblioteca/compilación

Busque el archivo apr_rules.mk en este directorio y agregue las líneas al final donde:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Conectando la biblioteca:

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

Guarde y vaya al directorio raíz de las fuentes de APR: /su/ruta/a la biblioteca.

Compilemos nuestra APR modificada:

make
make install

Si todo está bien y la compilación se realizó sin errores, continúe con el siguiente paso.

Paso tres: cree APR-util para Apache a partir de fuentes

Ha descargado esta biblioteca de la fuente, vaya a la carpeta raíz del archivo descomprimido con APR-util e ingrese los siguientes comandos secuencialmente:

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

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

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

También conectamos nuestra APR aquí:

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

Paso cuatro: descargue fuentes de Apache git para admitir PCRE2

Importante: Descargamos las fuentes de la última edición del git.

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

Ahora vaya al directorio fuente de Apache httpd y cree 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, indica su ruta en el prefijo si no desea utilizar la ubicación estándar para instalar la biblioteca, o si no especifica:

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

También puede especificar comandos adicionales para construir Apache a su discreción, me refiero a los comandos para habilitar o deshabilitar módulos y bibliotecas.

Luego vamos a nuestro directorio fuente httpd de Apache, tengo esto:

/etc/webserver/srcsrv/httpd-2.4.41

Naturalmente vas a tu directorio, reemplazas en el directorio:

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

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

También vamos al directorio:

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

Reemplazamos el archivo util_pcre.c por el que descargamos del git de Apache

Ahora solo queda 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 momento real de compilar Apache httpd con soporte PCRE2.
Vayamos a nuestro directorio fuente httpd de Apache y compilemos esto ejecutando secuencialmente los comandos:

make
make install

Ahora bien, si todo salió bien y sin errores, entonces habrás ensamblado y compilado Apache httpd con soporte PCRE2, lo que significa cambios positivos en los módulos de Apache que usan expresiones regulares PCRE, uno de estos es Module rewrite.

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

Además, durante las pruebas del .htaccess estándar, no se produjeron errores; si alguien tiene algún error, escriba en los comentarios.

PS

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

Fuente: habr.com

Añadir un comentario