Comment ajouter le support PCRE2 pour Apache 2.4

Je veux partager mon expérience de la migration d'Apache 2.4 vers PCRE2, car même PHP 7 prend en charge la bibliothèque PCRE2 depuis un certain temps, mais la fondation open source Apache Software est toujours à la traîne.
Bien sûr, je devance probablement la sortie d'Apache avec support PCRE2, car j'utilise les sources depuis le dépôt Git d'Apache, ce qui indique que le support de PCRE2 pourrait être présent dans la prochaine version. Mais pour ceux qui souhaitent déjà utiliser PCRE2 avec Apache 2.4 et ne veulent pas attendre la version finale, je partage l'une des méthodes.

Cet article suppose que vous compilez tout le logiciel nécessaire à partir des sources. La liste du logiciel et des versions lors de la rédaction de l'article :

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

Étape 1 : Compilation de PCRE2

Nous passerons sur le téléchargement des sources officielles, car c'est trop évident. Vous avez donc extrait l'archive, allez dans le dossier contenant les sources de PCRE2 et exécutez la commande suivante pour activer UTF :

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

Dans le préfixe, indiquez votre chemin si vous ne souhaitez pas utiliser l'emplacement par défaut pour l'installation de la bibliothèque :

--prefix=/votre/chemin/vers/la/bibliothèque

Sinon, compilez sans préfixe.

Les autres options permettent d'inclure le support pour les blocs de code PCRE 8 bits, 16 bits et 32 bits. Dans cette configuration, la compilation a été réalisée avec ces options.

Bien sûr, compilez avec les commandes suivantes :

make
make install

Si tout se passe bien et que la compilation n'a pas rencontré d'erreurs, passons à l'étape suivante.

Étape 2 : Intégration de la bibliothèque PCRE2 dans APR

Étant donné qu'Apache compile ses sources à l'aide d'APR, nous devons intégrer la bibliothèque dans APR lui-même, sinon des erreurs de fonctions inconnues pourraient survenir dans les sources d'Apache, car nous allons utiliser de nouvelles fonctions de PCRE2.

Nous allons ignorer le moment de téléchargement des sources officielles, car cela est trop évident. Vous avez ainsi extrait l'archive et configuré APR :

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

Bien sûr, dans le préfixe, indiquez votre chemin si vous ne souhaitez pas utiliser l'emplacement par défaut pour l'installation de la bibliothèque, sinon ne l'indiquez pas :

--prefix=/votre/chemin/vers/la/bibliothèque

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

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

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

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Intégration de la bibliothèque :

-lpcre2-8 -L/votre/chemin/vers/la/bibliothèque/pcre2/lib

Nous allons sauvegarder en accédant au répertoire racine des sources APR : /votre/chemin/vers la bibliothèque.

Nous compilons notre APR modifié :

make
make install

Si tout se passe bien et que la compilation n'a pas rencontré d'erreurs, passons à l'étape suivante.

Étape trois : Nous compilons à partir des sources APR-util pour Apache

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

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/votre/chemin/vers la bibliothèque apr
make
make install

Bien sûr, dans le préfixe, indiquez votre chemin si vous ne souhaitez pas utiliser l'emplacement par défaut pour l'installation de la bibliothèque, sinon ne l'indiquez pas :

--prefix=/votre/chemin/vers/la/bibliothèque

Ici, nous connectons également notre APR :

--with-apr=/votre/chemin/vers la bibliothèque apr

Étape quatre : Téléchargez les sources depuis le dépôt Git d'Apache pour supporter PCRE2

Important : Téléchargez les sources de la dernière version à partir de Git.

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

Nous allons maintenant dans votre répertoire de sources Apache httpd et construisons Apache avec les commandes suivantes :

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/votre/chemin/vers la bibliothèque apr --with-apr-util=/votre/chemin/vers la bibliothèque apr-util --with-pcre=/votre/chemin/vers la bibliothèque pcre2/bin/pcre2-config

Bien sûr, dans le préfixe, indiquez votre chemin si vous ne souhaitez pas utiliser l'emplacement par défaut pour l'installation de la bibliothèque, sinon ne l'indiquez pas :

--prefix=/votre/chemin/vers Apache httpd

Vous pouvez également ajouter d'autres commandes pour la construction d'Apache à votre convenance, je parle des commandes pour activer ou désactiver des modules et des bibliothèques.

Ensuite, allez dans votre répertoire de source d'Apache httpd, chez moi c'est :

/etc/webserver/srcsrv/httpd-2.4.41

Vous allez bien sûr dans votre propre répertoire, vous remplacez dans le répertoire :

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

Le fichier ap_regex.h, par celui que nous avons téléchargé depuis le dépôt Git d'Apache.

Nous allons également dans le répertoire :

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

Remplacez le fichier util_pcre.c, par celui que nous avons téléchargé depuis le dépôt Git d'Apache

Il ne reste plus qu'à 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

Voilà, maintenant nous sommes prêts pour le véritable moment de la compilation d'Apache httpd avec le support de PCRE2.
Accédez à votre répertoire de sources Apache httpd, compilez ceci en exécutant successivement les commandes :

make
make install

Si tout s'est bien passé et sans erreurs, vous aurez un Apache httpd construit et compilé avec le support de PCRE2, ce qui signifie des améliorations positives dans les modules Apache utilisant les expressions régulières PCRE, l'un d'eux étant le Module rewrite.

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

De plus, lors des tests des .htaccess standards, aucune erreur ne s'est produite, si quelqu'un rencontre des erreurs, veuillez les signaler dans les commentaires.

P.S.

J'ai été un peu stressé par la situation d'utiliser deux versions différentes de PCRE pour ma pile, et j'ai décidé de corriger cela.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster