Instal Multiple PHP di Linux Debian (PHP-FPM)
Server web Apache menggunakan host virtual untuk mengelola beberapa domain dalam satu wadah. Demikian pula, PHP-FPM menggunakan daemon untuk mengelola beberapa versi PHP dalam satu instance. Secara bersamaan, kita dapat menggunakan Apache dan PHP-FPM untuk menghosting beberapa aplikasi web PHP, masing-masing menggunakan versi PHP yang berbeda, semuanya di server yang sama, dan semuanya pada waktu yang sama.
Ini berguna karena aplikasi yang berbeda mungkin memerlukan versi PHP yang berbeda, tetapi beberapa tumpukan server, seperti tumpukan LAMP yang dikonfigurasi secara teratur, hanya dapat mengelola satu. Menggabungkan Apache dengan PHP-FPM juga merupakan solusi yang lebih hemat biaya daripada menghosting setiap aplikasi pada instansnya sendiri.
PHP-FPM juga menawarkan opsi konfigurasi untuk stderr dan stdout logging, restart darurat, dan pemijahan proses adaptif, yang berguna untuk situs yang sarat muatan. Faktanya, menggunakan Apache dengan PHP-FPM adalah salah satu tumpukan terbaik untuk menghosting aplikasi PHP, terutama dalam hal performa.
Dalam tutorial ini Anda akan menyiapkan dua situs PHP dalam satu contoh. Setiap situs akan menggunakan domainnya sendiri, dan setiap domain akan menggunakan versi PHP-nya sendiri. Yang pertama, lucky-connect, akan menggunakan PHP 7.4. Yang kedua, wasender, akan menggunakan PHP 8.1.
Dalam tutorial kali ini saya akan menggunakan server dengan spesifikasi sebagai berikut :
1. Server menggunakan Debian 11 (Bullseye) atau bisa memakai Ubuntu yang setara
2. Sudah terinstal aplikasi Apache2
3. Server menggunakan IP yang sama dan buat 2 domain di DNS, saya menggunakan static DNS di MikroTik
4. Domain pertama lucky-connect akan menggunakan PHP 7.4
5. Domain kedua wasender akan menggunakan PHP 8.1
2. Sudah terinstal aplikasi Apache2
3. Server menggunakan IP yang sama dan buat 2 domain di DNS, saya menggunakan static DNS di MikroTik
4. Domain pertama lucky-connect akan menggunakan PHP 7.4
5. Domain kedua wasender akan menggunakan PHP 8.1
Langkah 1 : Instal PHP Versi 7.4 dan 8.1 with PHP-FPM
Setelah prasyarat selesai, kita akan menginstal PHP versi 7.4 dan 8.1, with PHP-FPM dan beberapa ekstensi tambahan. Tetapi untuk melakukannya, pertama-tama kita harus menambahkan sury php repositori ke sistem.
Pertama instal beberapa paket yang diperlukan termasuk curl, wget, dan gnupg2
sudo apt-get install curl wget gnupg2 ca-certificates lsb-release apt-transport-https -y
Paket-paket di atas akan memungkinkan kita untuk mengakses sury php repositori, dan melakukannya dengan aman. sury php adalah repositori pihak ketiga atau PPA (personal package archive). Ini menawarkan PHP 7.4, 7.3, 7.2, 7.1, dan 7.0 untuk sistem operasi Debian. Ini juga menawarkan lebih banyak versi PHP terbaru daripada repositori resmi Debian 11, dan akan memungkinkan kita untuk menginstal beberapa versi PHP pada sistem yang sama.
Selanjutnya, impor kunci paket:
wget https://packages.sury.org/php/apt.gpg
sudo apt-key add apt.gpg
sudo apt-key add apt.gpg
Tambahkan sury php repositori ke sistem :
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php7.list
Perbarui repository :
sudo apt-get update -y
Instal PHP 7.4
sudo apt-get install php7.4 php7.4-fpm php7.4-mysql libapache2-mod-php7.4 libapache2-mod-fcgid -y
Instal PHP 8.1
sudo apt-get install php8.1 php8.1-fpm php8.1-mysql libapache2-mod-php8.1 libapache2-mod-fcgid -y
Aktifkan service PHP 7.4 dan PHP 8.1
sudo systemctl start php7.4-fpm
sudo systemctl start php8.1-fpm
sudo systemctl start php8.1-fpm
Terakhir, Anda aktifkan beberapa modul agar layanan Apache2 kita dapat bekerja dengan beberapa versi PHP:
sudo a2enmod actions fcgid alias proxy_fcgi
Sekarang restart layanan Apache untuk menerapkan perubahan :
sudo systemctl restart apache2
Sampai disini kita telah menginstal dua versi PHP di satu server. Selanjutnya, kita akan membuat struktur direktori untuk setiap situs web yang ingin kita terapkan.
Baca Juga : 10 Ekstensi PHP Yang Sering Digunakan, Fungsi dan Cara Mengaktifkan
Langkah 2 : Membuat Struktur Direktori untuk Kedua Situs Web
Di bagian ini, kita akan membuat direktori root dokumen dan halaman indeks untuk masing-masing dari dua situs web lucky-connect dan wasender.
Pertama, buat direktori root dokumen untuk lucky-connect dan wasender :
sudo mkdir /var/www/html/lucky-connect
sudo mkdir /var/www/html/wasender
sudo mkdir /var/www/html/wasender
Secara default, server web Apache berjalan sebagai pengguna dan grup. Untuk memastikan bahwa kita memiliki kepemilikan dan izin yang benar atas direktori root situs web, jalankan perintah berikut:
sudo chown -R www-data:www-data /var/www/html/lucky-connect
sudo chown -R www-data:www-data /var/www/html/wasender
sudo chmod -R 755 /var/www/html/lucky-connect
sudo chmod -R 755 /var/www/html/wasender
sudo chown -R www-data:www-data /var/www/html/wasender
sudo chmod -R 755 /var/www/html/lucky-connect
sudo chmod -R 755 /var/www/html/wasender
Selanjutnya buat file info.php di dalam setiap direktori root situs web. File ini akan menampilkan informasi versi PHP setiap situs web. Isi dengan syntax dibawah ini :
<?php phpinfo(); ?>
Langkah 3 : Mengonfigurasi Apache untuk Kedua Situs Web
Di bagian ini, kita akan membuat dua file konfigurasi host virtual. Ini akan memungkinkan kedua situs web bekerja secara bersamaan dengan dua versi PHP yang berbeda.
Agar Apache dapat menyajikan konten ini, kita perlu membuat file host virtual dengan arahan yang benar. Buat dua file baru di dalam direktori konfigurasi apache. Beri nama luckyconnect.conf dan wasender.conf .
Agar Apache dapat menyajikan konten ini, kita perlu membuat file host virtual dengan arahan yang benar. Buat dua file baru di dalam direktori konfigurasi apache. Beri nama luckyconnect.conf dan wasender.conf .
sudo touch /etc/apache2/sites-available/luckyconnect.conf
sudo touch /etc/apache2/sites-available/wasender.conf
sudo touch /etc/apache2/sites-available/wasender.conf
Buka kedua file tersebut menggunakan editor nano. Lalu isi dengan konten berikut di masing-masing file :
luckyconnect.conf
<VirtualHost *:80> ServerAdmin admin@domain.com ServerName lucky-connect DocumentRoot /var/www/html <Directory /var/www/html/lucky-connect> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> <FilesMatch \.php$> # For Apache version 2.4.10 and above, use SetHandler to run PHP as a fastCGI process server SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost" </FilesMatch> ErrorLog ${APACHE_LOG_DIR}/site1.your_domain_error.log CustomLog ${APACHE_LOG_DIR}/site1.your_domain_access.log combined </VirtualHost>
<VirtualHost *:80> ServerAdmin admin@domain.com ServerName wasender DocumentRoot /var/www/html/wasender <Directory /var/www/html/wasender> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> <FilesMatch \.php$> # For Apache version 2.4.10 and above, use SetHandler to run PHP as a fastCGI process server SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost" </FilesMatch> ErrorLog ${APACHE_LOG_DIR}/site1.your_domain_error.log CustomLog ${APACHE_LOG_DIR}/site1.your_domain_access.log combined </VirtualHost>
sudo a2ensite luckyconnect.conf
sudo a2ensite wasender.conf
sudo a2ensite wasender.conf
Sekarang nonaktifkan situs default, karena kita tidak memerlukannya.:
Terakhir, mulai ulang layanan Apache untuk mengimplementasikan perubahan dengan menjalankan perintah sudo systemctl restart apache2
sudo a2dissite 000-default.conf
Terakhir, mulai ulang layanan Apache untuk mengimplementasikan perubahan dengan menjalankan perintah sudo systemctl restart apache2
Sekarang setelah kita mengonfigurasi Apache untuk melayani setiap situs, kita akan mengujinya untuk memastikan bahwa versi PHP yang tepat sedang berjalan disetiap website.
Langkah 4 : Menguji Kedua Situs Web
Pada langkah ini, kita telah mengonfigurasi dua situs web untuk menjalankan dua versi PHP yang berbeda. Sekarang saatnya untuk menguji hasilnya.
Buka browser web dan kunjungi kedua situs yang sebelumnya kita buat :
- http://lucky-connect/info.php
- http://wasender/info.php
Perhatikan tampilannya. Halaman pertama menunjukkan bahwa lucky-connect menggunakan PHP versi 7.4. Yang kedua menunjukkan bahwa wasender menggunakan PHP versi 8.1.
Kita sekarang telah menggabungkan host virtual dan PHP-FPM untuk melayani beberapa situs web dan beberapa versi PHP di satu server. Satu-satunya batasan praktis pada jumlah situs PHP dan versi PHP yang dapat ditangani oleh layanan Apache adalah daya pemrosesan instans.