Comment rendre le support PCRE2 pour Apache 2.4

Je veux partager mon expérience de la traduction d'Apache 2.4 en PCRE2, car même PHP 7 supporte depuis longtemps la bibliothèque PCRE2, et la fondation open source Apache Software Foundation n'est toujours pas là.
Bien sûr, je suis probablement en avance sur la sortie d'Apache avec le support PCRE2 maintenant, car j'utilise les sources du géo Apache, qui nous dit que le support PCRE2 est déjà possible dans la prochaine version, mais pour ceux qui veulent déjà le support PCRE2 dans Apache 2.4, et qui ne veulent pas attendre libérer le partage d'une des façons.

L'article suppose que vous collectez tous les logiciels nécessaires à partir de la source, une liste des logiciels et des versions au moment de la rédaction:

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

Première étape: créer et compiler PCRE2


Nous allons omettre le moment de télécharger la source à partir des sources car c'est trop évident, donc vous avez décompressé l'archive, allez dans le dossier avec la source PCRE2 et exécutez la commande suivante pour prendre en charge UTF:

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

Dans le préfixe, spécifiez votre chemin d'accès si vous ne souhaitez pas utiliser l'emplacement standard pour installer la bibliothèque:

 --prefix=///  

Sinon, collectez sans préfixe.

Les commandes restantes indiquent l'inclusion de la prise en charge des blocs de code 8 bits, 16 bits et 32 ​​bits PCRE, dans ce mode de réalisation, l'assemblage a été effectué avec eux.

Et bien sûr, nous compilons ce cas en utilisant l'exécution séquentielle des commandes:

 make make install 

Si toutes les règles et la compilation se sont bien déroulées, passez à l'étape suivante.

Deuxième étape: connectez la bibliothèque PCRE2 à l'APR


Étant donné qu'Apache compile les sources en utilisant APR, nous devons connecter la bibliothèque dans l'APR lui-même, sinon des erreurs peuvent se produire sur des fonctions inconnues dans les sources Apache, car nous utiliserons les nouvelles fonctions PCRE2.

Nous allons omettre le moment de télécharger la source à partir des sources car c'est trop évident, vous avez donc déballé l'archive et configuré l'APR:

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

Naturellement, indiquez votre chemin dans le préfixe si vous ne souhaitez pas utiliser l'emplacement standard pour l'installation de la bibliothèque, ou ne spécifiez pas:

 --prefix=///  

Une fois la configuration terminée, accédez au répertoire: /etc/webserver/srcsrv/apr-1.7.0/build

Eh bien, ou: / votre / chemin / vers la bibliothèque / build

Recherchez le fichier apr_rules.mk dans ce répertoire et ajoutez à la fin de la ligne où:

 EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl 

Connexion à la bibliothèque:

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

Enregistrez, allez dans le répertoire racine des sources APR: / votre / chemin / vers la bibliothèque.

Compilez notre APR modifié:

 make make install 

Si toutes les règles et la compilation se sont bien déroulées, passez à l'étape suivante.

Troisième étape: créer APR-util pour Apache à partir de la source


Vous avez téléchargé cette bibliothèque à partir du bureau de la source, accédez au dossier racine de l'archive décompressée avec APR-util et entrez les commandes suivantes de manière séquentielle:

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

Naturellement, indiquez votre chemin dans le préfixe si vous ne souhaitez pas utiliser l'emplacement standard pour l'installation de la bibliothèque, ou ne spécifiez pas:

 --prefix=///  

Ici aussi, nous connectons notre APR:

 --with-apr=///  apr 

Quatrième étape: télécharger des sources depuis Apache Git pour prendre en charge PCRE2


Important: Téléchargez la source à partir de la dernière version de la gita.

Nous devons télécharger deux sources telles que ap_regex.h et util_pcre.c, les liens ci-dessous:
ap_regex.h
util_pcre.c

Maintenant, nous allons dans notre répertoire source Apache httpd et construisons Apache avec les commandes suivantes:

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

Naturellement, indiquez votre chemin dans le préfixe si vous ne souhaitez pas utiliser l'emplacement standard pour l'installation de la bibliothèque, ou ne spécifiez pas:

 --prefix=/// Apache httpd 

Aussi, spécifiez des commandes supplémentaires pour construire Apache à votre discrétion, je veux dire les commandes pour activer la désactivation des modules et des bibliothèques.

Ensuite, allez dans votre répertoire source Apache httpd, j'ai ceci:

 /etc/webserver/srcsrv/httpd-2.4.41 

Vous allez naturellement dans votre répertoire, remplacez dans le répertoire:

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

Le fichier ap_regex.h, que nous avons téléchargé depuis le git Apache.

Allez également dans le répertoire:

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

Remplacez le fichier util_pcre.c par l'Apache que nous avons téléchargé depuis

Il reste maintenant à ajouter la connexion PCRE2 dans Apache lui-même, vous devez trouver le fichier ap_config_auto.h, il se trouve dans le répertoire:

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

Au tout début de ce fichier, insérez les lignes suivantes:

 /* Load PCRE2 */ #define HAVE_PCRE2 1 

Eh bien, nous sommes maintenant prêts pour le vrai moment de la compilation d'Apache httpd avec le support PCRE2.
Nous allons dans notre répertoire source Apache httpd, compilons ce cas en utilisant l'exécution séquentielle des commandes:

 make make install 

Maintenant, si tout s'est bien passé et sans erreur, alors vous aurez assemblé et compilé Apache httpd avec le support PCRE2, ce qui signifie des changements positifs dans les modules Apache à l'aide d'expressions régulières PCRE, dont la réécriture de module.

En conclusion, cette méthode permet d'utiliser PCRE2 avant la sortie d'Apache Software Foundation, j'espère qu'une version avec support PCRE2 sera bientôt disponible.

De plus, lors des tests du .htaccess standard, aucune erreur ne s'est produite, si quelqu'un a des erreurs, écrivez dans les commentaires.

PS


J'étais un peu gêné par la situation d'utiliser deux versions différentes de PCRE pour ma pile, et j'ai décidé de le réparer.

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


All Articles