Voglio condividere la mia esperienza nella traduzione di Apache 2.4 su PCRE2, dato che anche PHP 7 supporta già da tempo la libreria PCRE2, mentre la Apache Software Foundation open source ancora no.
Certo, probabilmente sto anticipando il rilascio di Apache con il supporto per PCRE2, poiché utilizzo i sorgenti da git Apache, il che indica che il supporto per PCRE2 potrebbe essere già presente nella prossima versione. Ma per coloro che vogliono già ora 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 dai sorgenti, elenco del software e 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: compiliamo PCRE2
Saltiamo il momento del download dei sorgenti dalle fonti ufficiali poiché è troppo ovvio; quindi, dopo aver estratto l'archivio, andiamo nella cartella dei sorgenti PCRE2 ed eseguiamo il seguente comando per supportare UTF:
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicodeNel prefisso indicate il vostro percorso se non volete utilizzare la posizione standard per l'installazione della libreria:
--prefix=/il/tuo/percorso/alla/libreriaAltrimenti, compilate senza prefisso.
Le altre opzioni indicano di includere il supporto per i blocchi di codice a 8, 16 e 32 bit di PCRE; in questa variante la compilazione è stata effettuata con supporto.
Naturalmente, compiliamo con l'esecuzione sequenziale dei comandi:
make
make install Se è tutto a posto e la compilazione è avvenuta senza errori, passiamo al passo successivo.
Secondo passo: colleghiamo la libreria PCRE2 in APR
Poiché Apache compila i sorgenti con APR, dobbiamo collegare la libreria all'interno di APR stesso; altrimenti potrebbero verificarsi errori su funzioni sconosciute nei sorgenti di Apache, perché utilizzeremo nuove funzioni di PCRE2.
Saltiamo il momento del download dei sorgenti dalle fonti ufficiali poiché è troppo ovvio; quindi, dopo aver estratto l'archivio, eseguiamo la configurazione di APR:
./configure --prefix=/etc/webserver/apr-170Ovviamente, nel prefisso indicate il vostro percorso se non volete utilizzare la posizione standard per l'installazione della libreria, oppure non indicate nulla:
--prefix=/il/tuo/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 la riga dove:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldlCollegamento della libreria:
-lpcre2-8 -L/il/tuo/percorso/alla/libreria pcre2/libSalviamo il percorso della cartella principale del codice sorgente APR: /il/tuo/percorso/alla libreria.
Compiliamo il nostro APR modificato:
make
make installSe è tutto a posto e la compilazione è avvenuta senza errori, passiamo al passo successivo.
Passo tre: compiliamo il codice sorgente di APR-util per Apache
Hai scaricato questa libreria dal sito ufficiale, ora andiamo nella cartella principale dell'archivio estratto di APR-util e inseriamo consecutivamente i seguenti comandi:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/il/tuo/percorso/alla libreria apr
make
make installOvviamente, nel prefisso indicate il vostro percorso se non volete utilizzare la posizione standard per l'installazione della libreria, oppure non indicate nulla:
--prefix=/il/tuo/percorso/alla/libreriaIncludiamo anche il nostro APR:
--with-apr=/il/tuo/percorso/alla libreria aprPasso quattro: scarichiamo il codice sorgente da Git di Apache per il supporto di PCRE2
Importante: scarichiamo il codice sorgente dall'ultima versione di Git.
Dobbiamo scaricare due file sorgenti, ovvero ap_regex.h e util_pcre.c, i link sono qui sotto:
Ora andiamo nella nostra directory di codice sorgente di Apache httpd e compiliamo Apache con i seguenti comandi:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/il/tuo/percorso/alla libreria apr --with-apr-util=/il/tuo/percorso/alla libreria apr-util --with-pcre=/il/tuo/percorso/alla libreria pcre2/bin/pcre2-configOvviamente, nel prefisso indicate il vostro percorso se non volete utilizzare la posizione standard per l'installazione della libreria, oppure non indicate nulla:
--prefix=/il/tuo/percorso/alla Apache httpdPuoi anche aggiungere ulteriori comandi per la compilazione di Apache a tuo piacimento, intendo comandi per l'attivazione o disattivazione di moduli e librerie.
Dopo, andiamo nella nostra directory di codice sorgente di Apache httpd, per la mia è:
/etc/webserver/srcsrv/httpd-2.4.41Naturalmente, vai nella tua cartella, sostituiamo nel catalogo:
/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 rimane da aggiungere il supporto per PCRE2 in Apache stesso, dobbiamo trovare il file ap_config_auto.h, che si trova nella cartella:
/etc/webserver/srcsrv/httpd-2.4.41/includeAll'inizio di questo file, inserire le seguenti righe:
/* Load PCRE2 */
#define HAVE_PCRE2 1 Ora siamo pronti per il vero momento della compilazione di Apache httpd con supporto per PCRE2.
Andiamo nella nostra directory di codice sorgente di Apache httpd e avviamo la compilazione eseguendo i comandi uno dopo l'altro:
make
make installSe tutto è andato bene e senza errori, avrai compilato Apache httpd con supporto per PCRE2, il che significa aggiornamenti positivi nei moduli Apache che utilizzano espressioni regolari PCRE, uno di questi è il modulo rewrite.
In conclusione, questo metodo consente di utilizzare PCRE2 fino al rilascio ufficiale da parte di Apache Software Foundation, spero che presto sarà disponibile una versione con supporto per PCRE2.
Durante i test degli standard .htaccess, non si sono verificati errori, se qualcuno riscontra degli errori, scrivetelo nei commenti.
P.S.
La situazione dell'uso di due diverse versioni di PCRE mi ha un po' messo in difficoltà, quindi ho deciso di sistemarla.
Fonte: habr.com
