Vreau să-mi împărtășesc experiența de a traduce Apache 2.4 pe PCRE2, având în vedere că PHP 7 susține de mult biblioteca PCRE2, iar Apache Software Foundation open source încă nu.
Desigur, probabil că acum anticipez lansarea Apache cu suport pentru PCRE2, deoarece folosesc sursele de pe Git-ul Apache, ceea ce sugerează că suportul PCRE2 ar putea fi disponibil în următoarea lansare, dar pentru cei care doresc déjà suport PCRE2 în Apache 2.4 și nu vor să aștepte lansarea, împărtășesc una dintre metode.
Articolul presupune că adunați tot software-ul necesar din surse, lista software-ului și versiunilor la momentul redactării articolului:
PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41
Pasul întâi: compilăm și construim PCRE2
Vom sări peste descărcarea surselor din sursele oficiale, deoarece este prea evident, așa că ați dezarhivat arhiva, mergeți în folderul cu sursele PCRE2 și executați următoarea comandă pentru suport UTF:
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicodeÎn prefață specificați calea, dacă nu doriți să folosiți locația standard pentru instalarea bibliotecii:
--prefix=/calea/ta/catre bibliotecaÎn caz contrar, construiți fără prefix.
Celelalte comenzi specifică includerea suportului pentru blocurile de cod PCRE de 8, 16 și 32 de biți, în această variantă construcția a fost realizată cu ele.
Și, bineînțeles, compilăm acest lucru prin executarea secvențială a comenzilor:
make
make install Dacă totul este în regulă și compilarea a decurs fără erori, trecem la următorul pas.
Pasul doi: conectarea bibliotecii PCRE2 în APR
Întrucât Apache compilează sursele prin APR, trebuie să conectăm biblioteca în APR, altfel este posibil să apară erori legate de funcții necunoscute în sursele Apache, deoarece vom folosi funcții noi din PCRE2.
Vom sări peste descărcarea surselor din sursele oficiale, deoarece este prea evident, așa că ați dezarhivat arhiva și ați realizat configurarea APR:
./configure --prefix=/etc/webserver/apr-170Bineînțeles, în prefață specificați calea, dacă nu doriți să folosiți locația standard pentru instalarea bibliotecii sau nu specificați:
--prefix=/calea/ta/catre bibliotecaDupă realizarea configurării, mergeți în directorul: /etc/webserver/srcsrv/apr-1.7.0/build
Sau: /calea/ta/catre biblioteca/build
Găsiți fișierul apr_rules.mk în acest director și adăugați la sfârșitul liniei unde:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldlConectarea bibliotecii:
-lpcre2-8 -L/calea/ta/catre biblioteca pcre2/libSalvăm și mergem în directorul rădăcină al surselor APR: /calea/ta/către bibliotecă.
Compilăm APR-ul nostru modificat:
make
make installDacă totul este în regulă și compilarea a decurs fără erori, trecem la următorul pas.
Pasul trei: compilăm sursele APR-util pentru Apache
Ați descărcat această bibliotecă din sursa oficială, mergem în directorul rădăcină al arhivei dezarhivate cu APR-util și introducem următoarele comenzi în ordine:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/calea/ta/către bibliotecă apr
make
make installBineînțeles, în prefață specificați calea, dacă nu doriți să folosiți locația standard pentru instalarea bibliotecii sau nu specificați:
--prefix=/calea/ta/catre bibliotecaDe asemenea, aici conectăm APR-ul nostru:
--with-apr=/calea/ta/către bibliotecă aprPasul patru: descărcăm sursele din Git-ul Apache pentru suportul PCRE2
Important: Descărcăm sursele din Git în cea mai recentă versiune.
Trebuie să descărcăm două fișiere sursă, cum ar fi ap_regex.h și util_pcre.c, legăturile sunt mai jos:
Acum mergem în directorul nostru de surse Apache httpd și compilăm Apache folosind următoarele comenzi:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/calea/ta/către bibliotecă apr --with-apr-util=/calea/ta/către bibliotecă apr-util --with-pcre=/calea/ta/către bibliotecă pcre2/bin/pcre2-configBineînțeles, în prefață specificați calea, dacă nu doriți să folosiți locația standard pentru instalarea bibliotecii sau nu specificați:
--prefix=/calea/ta/către Apache httpdDe asemenea, indicați comenzi suplimentare pentru compilarea Apache la alegerea dumneavoastră, referindu-mă la comenzi de activare/dezactivare a modulelor și bibliotecilor.
Apoi mergem în directorul nostru de surse Apache httpd, al meu este:
/etc/webserver/srcsrv/httpd-2.4.41Natural, treceți în propriul dumneavoastră catalog, înlocuind în folder:
/etc/webserver/srcsrv/httpd-2.4.41/includeFișierul ap_regex.h, cu cel descărcat de noi din Git-ul Apache.
De asemenea, mergem în catalog:
/etc/webserver/srcsrv/httpd-2.4.41/serverÎnlocuim fișierul util_pcre.c cu cel descărcat de noi din Git-ul Apache
Acum trebuie să adăugăm conectarea PCRE2 în însăși Apache, este necesar să găsim fișierul ap_config_auto.h, care se află în folderul:
/etc/webserver/srcsrv/httpd-2.4.41/includeÎn chiar începutul acestui fișier, inserați următoarele rânduri:
/* Load PCRE2 */
#define HAVE_PCRE2 1 Acum suntem gata pentru adevăratul moment al compilării Apache httpd cu suport pentru PCRE2.
Mergem în directorul nostru de surse Apache httpd și compilăm acest lucru prin executarea secvențială a comenzilor:
make
make installAcum, dacă totul a decurs bine și fără erori, ar trebui să aveți un Apache httpd compilat și construit cu suport pentru PCRE2, ceea ce înseamnă modificări pozitive în modulele Apache care utilizează expresii regulate PCRE, unul dintre acestea fiind Modul rewrite.
În concluzie, această metodă permite utilizarea PCRE2 până la lansarea oficială de la Apache Software Foundation, sper că în curând va fi lansată o versiune cu suport pentru PCRE2.
De asemenea, în timpul testării fișierelor .htaccess standard, nu au apărut erori; dacă cineva întâmpină erori, vă rog să scrieți în comentarii.
P.S.
M-a stresat puțin situația utilizării a două versiuni diferite de PCRE pentru stiva mea, așa că am decis să rezolv acest lucru.
Sursa: habr.com
