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.41Paso 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.hutil_pcre.cAhora 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:
#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.