Comment prendre en charge PCRE2 pour Apache 2.4

Je voudrais partager mon expérience de traduction d'Apache 2.4 vers PCRE2, car même PHP 7 prend en charge la bibliothèque PCRE2 depuis longtemps, mais l'open source Apache Software Foundation ne le fait toujours pas.
Bien sûr, je suis maintenant probablement en avance sur la version Apache avec le support PCRE2, puisque j'utilise les sources du git Apache, ce qui nous indique 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 ceux qui ne veulent pas attendre la sortie, je partage une des méthodes.

L'article suppose que vous collectez tous les logiciels nécessaires à partir du code source, d'une liste de logiciels et de 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

Sautons le moment du téléchargement des sources à partir des sources officielles car c'est trop évident, vous avez donc décompressé l'archive, allez dans le dossier avec les sources 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

Précisez votre chemin dans le préfixe si vous ne souhaitez pas utiliser l'emplacement standard pour installer la bibliothèque :

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

Sinon, vous collectez sans préfixe.

Les commandes restantes indiquent l'inclusion de supports pour les blocs de code PCRE 8 bits, 16 bits et 32 ​​bits, dans cette version l'assemblage a été effectué avec eux.

Et bien sûr, nous compilons cette chose en utilisant l'exécution séquentielle de commandes :

make
make install

Si tout va bien et que la compilation s'est déroulée sans erreur, passez à l'étape suivante.

Deuxième étape : connecter la bibliothèque PCRE2 à APR

Étant donné qu'Apache compile les sources à l'aide d'APR, nous devons inclure la bibliothèque dans APR lui-même, sinon il pourrait y avoir des erreurs concernant des fonctions inconnues dans les sources Apache, car nous utiliserons de nouvelles fonctions PCRE2.

Oublions le moment du téléchargement des sources à partir de sources officielles car c'est trop évident, vous avez donc décompressé l'archive et effectué la configuration APR :

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

Bien entendu, vous indiquez votre chemin dans le préfixe si vous ne souhaitez pas utiliser l'emplacement standard d'installation de la bibliothèque, ou si vous ne précisez pas :

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

Après avoir terminé la configuration, allez dans le répertoire : /etc/webserver/srcsrv/apr-1.7.0/build

Ou : /votre/chemin/vers la bibliothèque/build

Recherchez le fichier apr_rules.mk dans ce répertoire, et ajoutez les lignes à la fin où :

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Connexion de la bibliothèque :

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

Enregistrez et accédez au répertoire racine des sources APR : /votre/chemin/vers la bibliothèque.

Compilons notre APR modifié :

make
make install

Si tout va bien et que la compilation s'est déroulée sans erreur, passez à l'étape suivante.

Troisième étape : créer APR-util pour Apache à partir des sources

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

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

Bien entendu, vous indiquez votre chemin dans le préfixe si vous ne souhaitez pas utiliser l'emplacement standard d'installation de la bibliothèque, ou si vous ne précisez pas :

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

Nous connectons également notre APR ici :

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

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

Important : Nous téléchargeons les sources depuis la dernière édition de git.

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

Accédez maintenant à votre répertoire source Apache httpd et construisez 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

Bien entendu, vous indiquez votre chemin dans le préfixe si vous ne souhaitez pas utiliser l'emplacement standard d'installation de la bibliothèque, ou si vous ne précisez pas :

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

Vous pouvez également spécifier des commandes supplémentaires pour construire Apache à votre discrétion, je veux dire les commandes pour activer ou désactiver les modules et les bibliothèques.

Ensuite, nous allons dans notre 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.

On va aussi dans l'annuaire :

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

Nous remplaçons le fichier util_pcre.c par celui que nous avons téléchargé depuis le git Apache

Il ne reste plus qu'à ajouter la connexion PCRE2 dans Apache lui-même, il faut 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 véritable moment de compilation d'Apache httpd avec le support PCRE2.
Allons dans notre répertoire source Apache httpd et compilons-le en exécutant séquentiellement les commandes :

make
make install

Maintenant, si tout s'est bien passé et sans erreurs, alors vous aurez assemblé et compilé Apache httpd avec le support PCRE2, ce qui signifie des changements positifs dans les modules Apache qui utilisent les expressions régulières PCRE, l'un d'entre eux étant la réécriture du module.

En conclusion, cette méthode permet d'utiliser PCRE2 avant la sortie officielle d'Apache Software Foundation, j'espère qu'une version avec support PCRE2 sortira prochainement.

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 confus par la situation liée à l'utilisation de deux versions différentes de PCRE pour ma pile, et j'ai décidé de résoudre ce problème.

Source: habr.com

Ajouter un commentaire