Come rendere il supporto PCRE2 per Apache 2.4

Vorrei condividere la mia esperienza nella traduzione di Apache 2.4 in PCRE2, poiché anche PHP 7 supporta la libreria PCRE2 da molto tempo, ma la Apache Software Foundation open source ancora no.
Naturalmente ora sono probabilmente in anticipo rispetto al rilascio di Apache con supporto PCRE2, poiché sto utilizzando i sorgenti di Apache git, il che ci dice che il supporto PCRE2 è già possibile nella prossima versione, ma per coloro che desiderano già il supporto PCRE2 in Apache 2.4 e chi non vuole aspettare il rilascio condivido uno dei modi.

L'articolo presuppone che tu stia raccogliendo tutto il software necessario dal codice sorgente, un elenco di software e versioni al momento della scrittura:

PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apachehttpd 2.4.41

Passo uno: costruire e compilare PCRE2

Tralasciamo il momento di scaricare i sorgenti dalle fonti ufficiali perché è troppo ovvio, quindi decompresso l'archivio, andiamo nella cartella con i 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-unicode

Specifica il percorso nel prefisso se non desideri utilizzare il percorso standard per installare la libreria:

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

Altrimenti ritiri senza prefisso.

I restanti comandi indicano l'inclusione di supporti per blocchi di codice PCRE a 8 bit, 16 bit e 32 bit, in questa versione l'assemblaggio è stato eseguito con essi.

E, naturalmente, compiliamo questa cosa utilizzando l'esecuzione sequenziale dei comandi:

make
make install

Se tutto è andato bene e la compilazione è avvenuta senza errori, passa al passaggio successivo.

Fase due: connettere la libreria PCRE2 ad APR

Poiché Apache compila i sorgenti utilizzando APR, dobbiamo includere la libreria nell'APR stesso, altrimenti potrebbero esserci errori su funzioni sconosciute nei sorgenti Apache, perché utilizzeremo le nuove funzioni PCRE2.

Tralasciamo il momento del download dei sorgenti da fonti ufficiali poiché questo è troppo ovvio, quindi avete decompresso l'archivio ed eseguito la configurazione APR:

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

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

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

Dopo aver completato la configurazione, andare nella directory: /etc/webserver/srcsrv/apr-1.7.0/build

Oppure: /tuo/percorso/della libreria/build

Trova il file apr_rules.mk in questa directory e aggiungi le righe alla fine dove:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Collegamento della biblioteca:

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

Salva e vai alla directory principale delle origini APR: /tuo/percorso/della libreria.

Compiliamo il nostro TAEG modificato:

make
make install

Se tutto è andato bene e la compilazione è avvenuta senza errori, passa al passaggio successivo.

Passo tre: crea APR-util per Apache dai sorgenti

Hai scaricato questa libreria dalla sorgente, vai alla cartella principale dell'archivio decompresso con APR-util e inserisci i seguenti comandi in sequenza:

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

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

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

Colleghiamo anche il nostro TAEG qui:

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

Passaggio quattro: scarica i sorgenti da Apache git per supportare PCRE2

Importante: scarichiamo i sorgenti dall'ultima edizione di git.

Dobbiamo scaricare due fonti come ap_regex.h e util_pcre.c, collegamenti seguenti:
ap_regex.h
util_pcre.c

Ora vai alla directory dei sorgenti httpd di Apache e crea Apache con i seguenti comandi:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/путь/до библиотеки apr --with-apr-util=/ваш/путь/до библиотеки apr-util --with-pcre=/ваш/путь/до библиотеки pcre2/bin/pcre2-config

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

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

Puoi anche specificare comandi aggiuntivi per creare Apache a tua discrezione, intendo i comandi per abilitare o disabilitare moduli e librerie.

Successivamente andiamo alla nostra directory dei sorgenti httpd di Apache, ho questo:

/etc/webserver/srcsrv/httpd-2.4.41

Naturalmente vai nella tua directory, sostituisci nella directory:

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

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

Andiamo anche alla directory:

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

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

Ora non resta che aggiungere la connessione PCRE2 in Apache stesso, devi trovare il file ap_config_auto.h, si trova nella directory:

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

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

/* Load PCRE2 */
#define HAVE_PCRE2 1

Bene, ora siamo pronti per il momento vero e proprio della compilazione di Apache httpd con supporto PCRE2.
Andiamo nella nostra directory dei sorgenti httpd di Apache e compiliamola eseguendo in sequenza i comandi:

make
make install

Ora, se tutto è andato bene e senza errori, allora avrai assemblato e compilato Apache httpd con il supporto PCRE2, il che significa cambiamenti positivi nei moduli Apache che utilizzano le espressioni regolari PCRE, uno di questi è Module rewrite.

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

Inoltre, durante il test di .htaccess standard, non si sono verificati errori, se qualcuno ha riscontrato errori, scriva nei commenti.

PS

Ero un po' confuso dalla situazione in cui utilizzavo due diverse versioni di PCRE per il mio stack e ho deciso di risolverlo.

Fonte: habr.com

Aggiungi un commento