Come abilitare il supporto PCRE2 per Apache 2.4

Voglio condividere la mia esperienza nella portabilità di Apache 2.4 su PCRE2, dato che anche PHP 7 supporta da tempo la libreria PCRE2, mentre la Apache Software Foundation open source ancora non lo fa.
Certamente, probabilmente sto anticipando il rilascio di Apache con il supporto per PCRE2, poiché utilizzo le sorgenti di Git di Apache, il che indica che il supporto per PCRE2 potrebbe già essere presente nel prossimo rilascio. Ma per coloro che desiderano sin da subito il supporto per PCRE2 in Apache 2.4 e non vogliono aspettare il rilascio, condivido uno dei metodi.

L'articolo presuppone che stiate compilando tutto il software necessario dalle sorgenti. Ecco l'elenco del software e delle versioni al momento della scrittura dell'articolo:

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

Primo passo: compilare PCRE2

Saltiamo la parte del download delle sorgenti dai siti ufficiali, poiché è troppo ovvio. Dunque, avete estratto l'archivio, passate alla cartella contenente le sorgenti PCRE2 ed eseguite il seguente comando per abilitare UTF:

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

Nella direttiva prefix specificate il vostro percorso se non volete utilizzare la posizione standard per l'installazione della libreria:

--prefix=/il/vostro/percorso/alla/libreria

In caso contrario, compilate senza prefisso.

Le altre istruzioni indicano di attivare il supporto per i blocchi di codice PCRE a 8 bit, 16 bit e 32 bit; in questa versione l'assemblaggio è stato eseguito con tali opzioni.

E naturalmente, compiliamo il tutto attraverso l'esecuzione sequenziale dei comandi:

make
make install

Se tutto va bene e la compilazione è completata senza errori, passiamo al passaggio successivo.

Secondo passo: colleghiamo la libreria PCRE2 in APR

Poiché Apache compila il codice sorgente tramite APR, dobbiamo collegare la libreria direttamente in APR, altrimenti potrebbero verificarsi errori su funzioni sconosciute nel codice sorgente di Apache, dato che utilizzeremo nuove funzioni di PCRE2.

Saltiamo il passaggio del download dei sorgenti dai siti ufficiali poiché è troppo ovvio, quindi avete estratto l'archivio e configurato APR:

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

Naturalmente, nel prefisso specificate il vostro percorso se non volete utilizzare la posizione standard per l'installazione della libreria, oppure non specificatelo:

--prefix=/il/vostro/percorso/alla/libreria

Dopo aver eseguito la configurazione, andate nella cartella: /etc/webserver/srcsrv/apr-1.7.0/build

Oppure: /il/tuo/percorso/alla/libreria/build

Trovate il file apr_rules.mk in questa cartella e aggiungete alla fine della riga dove:

EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl

Collegamento della libreria:

-lpcre2-8 -L/il/tuo/percorso/alla/biblioteca/pcre2/lib

Salviamo andiamo nella directory radice dei sorgenti APR: /il/tuo/percorso/alla/biblioteca.

Compiliamo il nostro APR modificato:

make
make install

Se tutto va bene e la compilazione è completata senza errori, passiamo al passaggio successivo.

Passo tre: costruiamo dai sorgenti APR-util per Apache

Hai scaricato questa libreria dalla fonte ufficiale, andiamo nella cartella principale dell'archivio estratto di APR-util, e immettiamo consecutivamente i seguenti comandi:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/il/tuo/percorso/alla/biblioteca/apr
make
make install

Naturalmente, nel prefisso specificate il vostro percorso se non volete utilizzare la posizione standard per l'installazione della libreria, oppure non specificatelo:

--prefix=/il/vostro/percorso/alla/libreria

Qui colleghiamo anche il nostro APR:

--with-apr=/il/tuo/percorso/alla/biblioteca/apr

Passo quattro: scarichiamo i sorgenti da git di Apache per supportare PCRE2

Importante: Scarica i sorgenti dall'ultima versione disponibile su git.

Abbiamo bisogno di scaricare due sorgenti come ap_regex.h e util_pcre.c, link qui sotto:
ap_regex.h
util_pcre.c

Ora andiamo nella nostra directory dei sorgenti di Apache httpd e costruiamo Apache con i seguenti comandi:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/il/tuo/percorso/alla/biblioteca/apr --with-apr-util=/il/tuo/percorso/alla/biblioteca/apr-util --with-pcre=/il/tuo/percorso/alla/biblioteca/pcre2/bin/pcre2-config

Naturalmente, nel prefisso specificate il vostro percorso se non volete utilizzare la posizione standard per l'installazione della libreria, oppure non specificatelo:

--prefix=/il/tuo/percorso/ad/Apache/httpd

Inoltre, le comandi aggiuntive per la costruzione di Apache possono essere specificati a tua discrezione, intendo i comandi per attivare o disattivare moduli e librerie.

Passiamo alla nostra directory delle sorgenti di Apache httpd, per me è:

/etc/webserver/srcsrv/httpd-2.4.41

Ovviamente, accedi alla tua cartella, sostituiamo nella cartella:

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

Il file ap_regex.h, con quello che abbiamo scaricato da git di Apache.

Andiamo anche nella cartella:

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

Sostituiamo il file util_pcre.c, con quello che abbiamo scaricato da git di Apache.

Ora resta da aggiungere il collegamento a PCRE2 in Apache stesso, è necessario trovare il file ap_config_auto.h, che si trova nella cartella:

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

All'inizio di questo file, inserisci le seguenti righe:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Ecco, ora siamo pronti per il vero momento della compilazione di Apache httpd con il supporto per PCRE2.
Accediamo alla nostra directory delle sorgenti di Apache httpd e compiliamo il tutto eseguendo i seguenti comandi:

make
make install

Se tutto è andato bene e senza errori, avrai un Apache httpd assemblato e compilato con il supporto per PCRE2, il che significa miglioramenti nei moduli Apache che utilizzano le espressioni regolari PCRE, uno di questi è il modulo rewrite.

In conclusione, questo metodo consente di utilizzare PCRE2 prima del rilascio ufficiale da parte di Apache Software Foundation, spero che presto venga rilasciata una versione con supporto per PCRE2.

Durante i test del .htaccess standard, non sono emersi errori; se qualcuno riscontra problemi, scriva nei commenti.

P.S.

La situazione di avere due diverse versioni di PCRE per il mio stack mi ha un po' stressato, quindi ho deciso di sistemarla.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster