Cara membuat dukungan PCRE2 untuk Apache 2.4

Saya ingin berbagi pengalaman saya menerjemahkan Apache 2.4 ke PCRE2, karena bahkan PHP 7 telah mendukung perpustakaan PCRE2 sejak lama, tetapi Apache Software Foundation open source masih belum.
Tentu saja, saya sekarang mungkin mendahului rilis Apache dengan dukungan PCRE2, karena saya menggunakan sumber dari Apache git, yang memberi tahu kita bahwa dukungan PCRE2 sudah dimungkinkan di rilis berikutnya, tetapi bagi mereka yang sudah menginginkan dukungan PCRE2 di Apache 2.4, dan yang tidak mau menunggu rilis saya bagikan salah satu caranya.

Artikel ini mengasumsikan bahwa Anda mengumpulkan semua perangkat lunak yang diperlukan dari kode sumber, daftar perangkat lunak, dan versi pada saat penulisan:

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

Langkah pertama: membangun dan mengkompilasi PCRE2

Mari kita lewati momen mengunduh sumber dari sumber resmi karena ini terlalu jelas, jadi Anda telah membongkar arsipnya, masuk ke folder dengan sumber PCRE2, dan jalankan perintah berikut untuk mendukung UTF:

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

Tentukan jalur Anda di awalan jika Anda tidak ingin menggunakan lokasi standar untuk menginstal perpustakaan:

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

Jika tidak, Anda mengumpulkan tanpa awalan.

Perintah selanjutnya menunjukkan penyertaan dukungan untuk blok kode PCRE 8-bit, 16-bit dan 32-bit, dalam versi ini perakitan dilakukan dengan mereka.

Dan tentu saja, kami mengkompilasi hal ini menggunakan eksekusi perintah yang berurutan:

make
make install

Jika semuanya baik-baik saja dan kompilasi berjalan tanpa kesalahan, lanjutkan ke langkah berikutnya.

Langkah kedua: sambungkan perpustakaan PCRE2 ke APR

Karena Apache mengkompilasi sumber menggunakan APR, kita perlu menyertakan perpustakaan di APR itu sendiri, jika tidak, mungkin ada kesalahan tentang fungsi yang tidak diketahui di sumber Apache, karena kita akan menggunakan fungsi PCRE2 yang baru.

Mari kita hilangkan momen mengunduh sumber dari sumber resmi karena ini terlalu jelas, jadi Anda membongkar arsip dan melakukan konfigurasi APR:

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

Biasanya, Anda menunjukkan jalur Anda di awalan jika Anda tidak ingin menggunakan lokasi standar untuk menginstal perpustakaan, atau jika Anda tidak menentukan:

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

Setelah menyelesaikan konfigurasi, buka direktori: /etc/webserver/srcsrv/apr-1.7.0/build

Atau: /your/path/ke perpustakaan/build

Temukan file apr_rules.mk di direktori ini, dan tambahkan baris di akhir di mana:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Menghubungkan perpustakaan:

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

Simpan dan buka direktori root sumber APR: /your/path/ke perpustakaan.

Mari kompilasi APR kita yang telah dimodifikasi:

make
make install

Jika semuanya baik-baik saja dan kompilasi berjalan tanpa kesalahan, lanjutkan ke langkah berikutnya.

Langkah ketiga: buat APR-util untuk Apache dari sumber

Anda telah mengunduh perpustakaan ini dari sumbernya, buka folder root dari arsip yang belum dibongkar dengan APR-util, dan masukkan perintah berikut secara berurutan:

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

Biasanya, Anda menunjukkan jalur Anda di awalan jika Anda tidak ingin menggunakan lokasi standar untuk menginstal perpustakaan, atau jika Anda tidak menentukan:

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

Kami juga menghubungkan APR kami di sini:

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

Langkah empat: unduh sumber dari Apache git untuk mendukung PCRE2

Penting: Kami mengunduh sumber dari git edisi terbaru.

Kita perlu mendownload dua sumber seperti ap_regex.h dan util_pcre.c, link di bawah:
ap_regex.h
util_pcre.c

Sekarang masuk ke direktori sumber Apache httpd Anda dan bangun Apache dengan perintah berikut:

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

Biasanya, Anda menunjukkan jalur Anda di awalan jika Anda tidak ingin menggunakan lokasi standar untuk menginstal perpustakaan, atau jika Anda tidak menentukan:

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

Anda juga dapat menentukan perintah tambahan untuk membangun Apache sesuai kebijaksanaan Anda, maksud saya perintah untuk mengaktifkan atau menonaktifkan modul dan perpustakaan.

Selanjutnya kita pergi ke direktori sumber Apache httpd kami, saya punya ini:

/etc/webserver/srcsrv/httpd-2.4.41

Anda tentu saja pergi ke direktori Anda, ganti di direktori:

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

File ap_regex.h, yang kami unduh dari Apache git.

Kami juga pergi ke direktori:

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

Kami mengganti file util_pcre.c dengan yang kami unduh dari Apache git

Sekarang yang tersisa hanyalah menambahkan koneksi PCRE2 di Apache itu sendiri, Anda perlu mencari file ap_config_auto.h, terletak di direktori:

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

Di awal file ini, masukkan baris berikut:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Nah, sekarang kita siap untuk mengkompilasi Apache httpd dengan dukungan PCRE2.
Mari buka direktori sumber Apache httpd dan kompilasi dengan menjalankan perintah secara berurutan:

make
make install

Sekarang, jika semuanya berjalan dengan baik dan tanpa kesalahan, maka Anda telah merakit dan mengkompilasi Apache httpd dengan dukungan PCRE2, yang berarti perubahan positif pada modul Apache yang menggunakan ekspresi reguler PCRE, salah satunya adalah penulisan ulang Modul.

Kesimpulannya, cara ini memungkinkan untuk menggunakan PCRE2 sebelum rilis resmi dari Apache Software Foundation, saya berharap versi dengan dukungan PCRE2 akan segera dirilis.

Juga selama pengujian standar .htaccess tidak terjadi kesalahan, jika ada yang kesalahan tulis di komentar.

PS

Saya sedikit bingung dengan situasi menggunakan dua versi PCRE yang berbeda untuk tumpukan saya, dan saya memutuskan untuk memperbaikinya.

Sumber: www.habr.com

Tambah komentar