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-unicodeNella direttiva prefix specificate il vostro percorso se non volete utilizzare la posizione standard per l'installazione della libreria:
--prefix=/il/vostro/percorso/alla/libreriaIn 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-170Naturalmente, 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/libreriaDopo 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 -ldlCollegamento della libreria:
-lpcre2-8 -L/il/tuo/percorso/alla/biblioteca/pcre2/libSalviamo andiamo nella directory radice dei sorgenti APR: /il/tuo/percorso/alla/biblioteca.
Compiliamo il nostro APR modificato:
make
make installSe 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 installNaturalmente, 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/libreriaQui colleghiamo anche il nostro APR:
--with-apr=/il/tuo/percorso/alla/biblioteca/aprPasso 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:
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-configNaturalmente, 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/httpdInoltre, 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.41Ovviamente, accedi alla tua cartella, sostituiamo nella cartella:
/etc/webserver/srcsrv/httpd-2.4.41/includeIl file ap_regex.h, con quello che abbiamo scaricato da git di Apache.
Andiamo anche nella cartella:
/etc/webserver/srcsrv/httpd-2.4.41/serverSostituiamo 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/includeAll'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 installSe 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
