Upgrade http2
Syarat untuk mengupgrade HTTP 1/1 ke HTTP2 pada apache adalah:
- apache >= 2.4.17
- php-fpm (tidak support menggunakan mod_php)
- domain sudah menggunakan HTTPS
Spesifikasi yang saya gunakan dalam tutorial ini:
- ubuntu 20.04 pada ec2 (AWS Cloud)
- php 7.4
- apache 2.4.41
Saran sebelum mengupgrade
Untuk mencegah hal yang tidak diinginkan, sebaiknya:
- Pastikan konfigurasi apache dan php sudah dibackup
- Akan ada downtime pada apache (karena perlu restart apache)
- Sebaiknya test diserver testing dulu, jangan langsung di production
Cek versi apache
Untuk mengecek versi apache, gunakan command berikut:
apache2ctl -v
Bisa dilihat diatas, apachenya versi 2.4.41 artinya sudah support HTTP2.
Cek mod_php apakah aktif?
Cek terlebih dahulu apakah mod_php masih aktif? jika iya maka harus dinonaktifkan karena mod_php tidak support http2.
Cek mod_php dengan command berikut:
apache2ctl -M | grep php
Pada gambar diatas, ternyata mod_php masih aktif (php7_module).
Untuk menonaktifkan mod_php, cari tahu dulu versi php yang digunakan:
php -v
Versi phpnya adalah 7.4.28. Sehingga untuk menonaktifkan mod_php adalah dengan cara:
a2dismod php7.4
Sampai sini jangan restart apachenya dulu, karena website akan down.
Nonaktifkan juga module mpm_prefork, karena nanti kita akan gunakan mpm_event agar bisa connect ke php-fpm
a2dismod mpm_prefork
Install php-fpm
Jalankan command berikut untuk menginstall php-fpm
apt-get install php7.4-fpm
systemctl enable php7.4-fpm
sudo apt install libapache2-mod-fcgid
Cek php-fpm sudah berjalan:
systemctl status php7.4-fpm
Sampai sini, php-fpm sudah running. Namun belum bisa connect ke apache.
Cara connect apache ke php-fpm
Supaya apache bisa connect ke php-fpm, install module apache berikut:
sudo a2enmod proxy_fcgi proxy setenvif
sudo a2enmod mpm_event
sudo a2enconf php7.4-fpm
Setelah itu kita cek dulu apakah ada konfigurasi apache yang error?
apachectl configtest
Jika outputnya Syntax OK, maka tidak ada yang error. Selanjutnya kita bisa restart apache dengan command:
systemctl restart apache2
Cara cek HTTP2
Buka website https://tools.keycdn.com/http2-test untuk mengecek HTTP2, lalu masukkan URL websitenya:
Jika berhasil, outputnya HTTP/2 protocol is supported.
Kesimpulan
- Untuk menggunakan HTTP2, apache harus menggunakan php-fpm dengan memanfaatkan mod_event, proxy_fcgi, proxy dan setenvif
- Website harus menggunakan HTTPS agar HTTP2 bisa digunakan
- mod_php (php7x_module) tidak support HTTP2
- Jika kalian menggunakan mod_php, harus diswitch ke php-fpm
- Selama proses upgrade ke HTTP2, apache harus direstart