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:
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