Bagaimana untuk membuat sokongan PCRE2 untuk Apache 2.4

Saya ingin berkongsi pengalaman saya menterjemah Apache 2.4 kepada PCRE2, memandangkan PHP 7 pun telah lama menyokong perpustakaan PCRE2, tetapi Yayasan Perisian Apache sumber terbuka masih tidak.
Sudah tentu, saya kini mungkin mendahului keluaran Apache dengan sokongan PCRE2, kerana saya menggunakan sumber daripada git Apache, yang memberitahu kami bahawa sokongan PCRE2 sudah mungkin dalam keluaran seterusnya, tetapi bagi mereka yang sudah mahukan sokongan PCRE2 dalam Apache 2.4, dan siapa yang tidak mahu menunggu keluaran saya kongsikan salah satu caranya.

Artikel itu menganggap bahawa anda sedang mengumpul semua perisian yang diperlukan daripada kod sumber, senarai perisian dan versi pada masa penulisan:

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

Langkah pertama: bina dan susun PCRE2

Mari kita langkau saat memuat turun sumber daripada sumber rasmi kerana ini terlalu jelas, jadi anda telah membongkar arkib, pergi ke folder dengan sumber PCRE2, dan jalankan arahan berikut untuk menyokong UTF:

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

Tentukan laluan anda dalam awalan jika anda tidak mahu menggunakan lokasi standard untuk memasang pustaka:

--prefix=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Jika tidak, anda mengumpul tanpa awalan.

Arahan yang selebihnya menunjukkan kemasukan sokongan untuk blok kod PCRE 8-bit, 16-bit dan 32-bit, dalam versi ini pemasangan dilakukan dengan mereka.

Dan sudah tentu, kami menyusun perkara ini menggunakan pelaksanaan berurutan arahan:

make
make install

Jika semuanya baik-baik saja dan kompilasi berjalan tanpa ralat, teruskan ke langkah seterusnya.

Langkah kedua: sambungkan perpustakaan PCRE2 ke APR

Memandangkan Apache menyusun sumber menggunakan APR, kami perlu memasukkan perpustakaan dalam APR itu sendiri, jika tidak, mungkin terdapat ralat tentang fungsi yang tidak diketahui dalam sumber Apache, kerana kami akan menggunakan fungsi PCRE2 baharu.

Mari tinggalkan masa memuat turun sumber daripada sumber rasmi kerana ini terlalu jelas, jadi anda membongkar arkib dan melakukan konfigurasi APR:

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

Sememangnya, anda menunjukkan laluan anda dalam awalan jika anda tidak mahu menggunakan lokasi standard untuk memasang perpustakaan, atau jika anda tidak menyatakan:

--prefix=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Selepas melengkapkan konfigurasi, pergi ke direktori: /etc/webserver/srcsrv/apr-1.7.0/build

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

Cari fail apr_rules.mk dalam direktori ini dan tambahkan baris pada penghujung di mana:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Menyambung perpustakaan:

-lpcre2-8 -L/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pcre2/lib

Simpan dan pergi ke direktori akar sumber APR: /your/path/to the library.

Mari kumpulkan APR kami yang diubah suai:

make
make install

Jika semuanya baik-baik saja dan kompilasi berjalan tanpa ralat, teruskan ke langkah seterusnya.

Langkah ketiga: bina APR-util untuk Apache daripada sumber

Anda telah memuat turun perpustakaan ini daripada sumber, pergi ke folder akar arkib yang tidak dibungkus dengan APR-util, dan masukkan arahan berikut secara berurutan:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ apr
make
make install

Sememangnya, anda menunjukkan laluan anda dalam awalan jika anda tidak mahu menggunakan lokasi standard untuk memasang perpustakaan, atau jika anda tidak menyatakan:

--prefix=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Kami juga menyambungkan APR kami di sini:

--with-apr=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ apr

Langkah empat: muat turun sumber dari Apache git untuk menyokong PCRE2

Penting: Kami memuat turun sumber daripada edisi terkini git.

Kami perlu memuat turun dua sumber seperti ap_regex.h dan util_pcre.c, pautan di bawah:
ap_regex.h
util_pcre.c

Sekarang pergi ke direktori sumber httpd Apache anda dan bina Apache dengan arahan berikut:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ apr --with-apr-util=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ apr-util --with-pcre=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pcre2/bin/pcre2-config

Sememangnya, anda menunjukkan laluan anda dalam awalan jika anda tidak mahu menggunakan lokasi standard untuk memasang perpustakaan, atau jika anda tidak menyatakan:

--prefix=/ваш/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ Apache httpd

Anda juga boleh menentukan arahan tambahan untuk membina Apache mengikut budi bicara anda, saya maksudkan arahan untuk mendayakan atau melumpuhkan modul dan perpustakaan.

Seterusnya kita pergi ke direktori sumber httpd Apache kami, saya mempunyai ini:

/etc/webserver/srcsrv/httpd-2.4.41

Anda secara semula jadi pergi ke direktori anda, gantikan dalam direktori:

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

Fail ap_regex.h, yang kami muat turun daripada git Apache.

Kami juga pergi ke direktori:

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

Kami menggantikan fail util_pcre.c dengan fail yang kami muat turun daripada git Apache

Sekarang yang tinggal hanyalah menambah sambungan PCRE2 dalam Apache itu sendiri, anda perlu mencari fail ap_config_auto.h, ia terletak dalam direktori:

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

Pada permulaan fail ini, masukkan baris berikut:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Nah, kini kami bersedia untuk saat sebenar menyusun Apache httpd dengan sokongan PCRE2.
Mari pergi ke direktori sumber httpd Apache kami dan susun ini dengan melaksanakan perintah secara berurutan:

make
make install

Sekarang, jika semuanya berjalan lancar dan tanpa ralat, maka anda akan mempunyai Apache httpd yang dibina dan disusun dengan sokongan PCRE2, yang bermaksud perubahan positif dalam modul Apache yang menggunakan ungkapan biasa PCRE, salah satunya ialah penulisan semula Modul.

Kesimpulannya, kaedah ini memungkinkan untuk menggunakan PCRE2 sebelum keluaran rasmi dari Yayasan Perisian Apache, saya berharap versi dengan sokongan PCRE2 akan dikeluarkan tidak lama lagi.

Selain itu, semasa ujian standard .htaccess, tiada ralat berlaku, jika sesiapa mempunyai sebarang ralat, tulis dalam komen.

PS

Saya agak keliru dengan situasi menggunakan dua versi PCRE yang berbeza untuk timbunan saya, dan saya memutuskan untuk membetulkannya.

Sumber: www.habr.com

Tambah komen