Πώς να δημιουργήσετε υποστήριξη PCRE2 για Apache 2.4

Θα ήθελα να μοιραστώ την εμπειρία μου από τη μετάφραση του Apache 2.4 σε PCRE2, καθώς ακόμη και η PHP 7 υποστηρίζει τη βιβλιοθήκη PCRE2 για μεγάλο χρονικό διάστημα, αλλά το ανοιχτού κώδικα Apache Software Foundation εξακολουθεί να μην υποστηρίζει.
Φυσικά, είμαι τώρα πιθανώς μπροστά από την έκδοση του Apache με υποστήριξη PCRE2, καθώς χρησιμοποιώ τις πηγές από το git Apache, το οποίο μας λέει ότι η υποστήριξη PCRE2 είναι ήδη δυνατή στην επόμενη έκδοση, αλλά για όσους θέλουν ήδη υποστήριξη PCRE2 στο Apache 2.4, και όσοι δεν θέλουν να περιμένουν την κυκλοφορία, μοιράζομαι έναν από τους τρόπους.

Το άρθρο προϋποθέτει ότι συλλέγετε όλο το απαραίτητο λογισμικό από τον πηγαίο κώδικα, μια λίστα λογισμικού και εκδόσεις τη στιγμή της σύνταξης:

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

Βήμα πρώτο: δημιουργία και μεταγλώττιση του PCRE2

Ας παραλείψουμε τη στιγμή λήψης των πηγών από τις επίσημες πηγές, καθώς αυτό είναι πολύ προφανές, επομένως έχετε αποσυσκευάσει το αρχείο, μεταβείτε στον φάκελο με τις πηγές PCRE2 και εκτελέστε την ακόλουθη εντολή για να υποστηρίξετε το UTF:

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

Καθορίστε τη διαδρομή σας στο πρόθεμα, εάν δεν θέλετε να χρησιμοποιήσετε την τυπική τοποθεσία για την εγκατάσταση της βιβλιοθήκης:

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

Διαφορετικά, συλλέγετε χωρίς πρόθεμα.

Οι υπόλοιπες εντολές υποδεικνύουν τη συμπερίληψη υποστηριγμάτων για μπλοκ κωδικών PCRE 8-bit, 16-bit και 32-bit, σε αυτήν την έκδοση η συναρμολόγηση πραγματοποιήθηκε με αυτά.

Και φυσικά, μεταγλωττίζουμε αυτό το πράγμα χρησιμοποιώντας διαδοχική εκτέλεση εντολών:

make
make install

Εάν όλα είναι καλά και η μεταγλώττιση πήγε χωρίς σφάλματα, προχωρήστε στο επόμενο βήμα.

Βήμα δεύτερο: συνδέστε τη βιβλιοθήκη PCRE2 στο APR

Εφόσον ο Apache μεταγλωττίζει πηγές χρησιμοποιώντας APR, πρέπει να συμπεριλάβουμε τη βιβλιοθήκη στο ίδιο το APR, διαφορετικά μπορεί να υπάρχουν σφάλματα σχετικά με άγνωστες συναρτήσεις σε πηγές Apache, επειδή θα χρησιμοποιήσουμε νέες συναρτήσεις PCRE2.

Ας παραλείψουμε τη στιγμή λήψης πηγών από επίσημες πηγές, καθώς αυτό είναι πολύ προφανές, επομένως αποσυσκευάσατε το αρχείο και εκτελέσατε τη διαμόρφωση APR:

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

Φυσικά, υποδεικνύετε τη διαδρομή σας στο πρόθεμα εάν δεν θέλετε να χρησιμοποιήσετε την τυπική τοποθεσία για την εγκατάσταση της βιβλιοθήκης ή εάν δεν προσδιορίσετε:

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

Αφού ολοκληρώσετε τη διαμόρφωση, μεταβείτε στον κατάλογο: /etc/webserver/srcsrv/apr-1.7.0/build

Ή: /your/path/to the library/build

Βρείτε το αρχείο apr_rules.mk σε αυτόν τον κατάλογο και προσθέστε τις γραμμές στο τέλος όπου:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Σύνδεση της βιβλιοθήκης:

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

Αποθηκεύστε και μεταβείτε στον ριζικό κατάλογο των πηγών APR: /your/path/to the library.

Ας συντάξουμε το τροποποιημένο APR μας:

make
make install

Εάν όλα είναι καλά και η μεταγλώττιση πήγε χωρίς σφάλματα, προχωρήστε στο επόμενο βήμα.

Βήμα τρίτο: δημιουργία APR-util για Apache από πηγές

Έχετε κατεβάσει αυτήν τη βιβλιοθήκη από την πηγή, μεταβείτε στον ριζικό φάκελο του μη συσκευασμένου αρχείου με το APR-util και εισαγάγετε τις ακόλουθες εντολές διαδοχικά:

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

Φυσικά, υποδεικνύετε τη διαδρομή σας στο πρόθεμα εάν δεν θέλετε να χρησιμοποιήσετε την τυπική τοποθεσία για την εγκατάσταση της βιβλιοθήκης ή εάν δεν προσδιορίσετε:

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

Συνδέουμε επίσης το APR μας εδώ:

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

Βήμα τέταρτο: λήψη πηγών από το Apache git για υποστήριξη PCRE2

Σημαντικό: Κάνουμε λήψη των πηγών από την τελευταία έκδοση του git.

Πρέπει να κατεβάσουμε δύο πηγές, όπως ap_regex.h και util_pcre.c, παρακάτω συνδέσμους:
ap_regex.h
util_pcre.c

Τώρα μεταβείτε στον κατάλογο προέλευσης httpd του Apache και δημιουργήστε τον Apache με τις ακόλουθες εντολές:

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

Φυσικά, υποδεικνύετε τη διαδρομή σας στο πρόθεμα εάν δεν θέλετε να χρησιμοποιήσετε την τυπική τοποθεσία για την εγκατάσταση της βιβλιοθήκης ή εάν δεν προσδιορίσετε:

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

Μπορείτε επίσης να καθορίσετε πρόσθετες εντολές για τη δημιουργία Apache κατά την κρίση σας, εννοώ τις εντολές για ενεργοποίηση ή απενεργοποίηση λειτουργικών μονάδων και βιβλιοθηκών.

Στη συνέχεια πηγαίνουμε στον κατάλογο πηγής httpd του Apache, έχω αυτό:

/etc/webserver/srcsrv/httpd-2.4.41

Φυσικά πηγαίνετε στον κατάλογό σας, αντικαταστήστε τον στον κατάλογο:

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

Το αρχείο ap_regex.h, το οποίο κατεβάσαμε από το git του Apache.

Πηγαίνουμε επίσης στον κατάλογο:

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

Αντικαθιστούμε το αρχείο util_pcre.c με αυτό που κατεβάσαμε από το git του Apache

Τώρα το μόνο που μένει είναι να προσθέσετε τη σύνδεση PCRE2 στον ίδιο τον Apache, πρέπει να βρείτε το αρχείο ap_config_auto.h, βρίσκεται στον κατάλογο:

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

Στην αρχή αυτού του αρχείου, εισαγάγετε τις ακόλουθες γραμμές:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Λοιπόν, τώρα είμαστε έτοιμοι για την πραγματική στιγμή της μεταγλώττισης του Apache httpd με υποστήριξη PCRE2.
Ας πάμε στον πηγαίο κατάλογο httpd του Apache και ας τον μεταγλωττίσουμε εκτελώντας διαδοχικά τις εντολές:

make
make install

Τώρα, αν όλα πήγαν καλά και χωρίς σφάλματα, τότε θα έχετε συναρμολογήσει και μεταγλωττίσει το Apache httpd με υποστήριξη PCRE2, που σημαίνει θετικές αλλαγές σε μονάδες Apache που χρησιμοποιούν κανονικές εκφράσεις PCRE, μια από αυτές είναι το Module rewrite.

Συμπερασματικά, αυτή η μέθοδος καθιστά δυνατή τη χρήση του PCRE2 πριν από την επίσημη κυκλοφορία από το Apache Software Foundation, ελπίζω ότι σύντομα θα κυκλοφορήσει μια έκδοση με υποστήριξη PCRE2.

Επίσης, κατά τη διάρκεια της δοκιμής του τυπικού .htaccess, δεν παρουσιάστηκαν σφάλματα, αν κάποιος έχει σφάλματα, γράψτε στα σχόλια.

PS

Ήμουν λίγο μπερδεμένος με την κατάσταση της χρήσης δύο διαφορετικών εκδόσεων του PCRE για τη στοίβα μου και αποφάσισα να το διορθώσω.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο