Menjalankan Multi PHP di Ubuntu Dengan PHP-FPM
Dalam contoh kasus pada ubuntu 22 atau linux secara umum, kita hanya bisa menjalankan satu versi php sehingga terkadang ini menjadi masalah tersendiri terutama jika memang projek – projek web kita sendiri miliki requirement versi php yang berbeda untuk setiap projeknya.
Untuk mengatasi permasalahan ini, kita bisa menggunakan berbagai macam metode tetapi dalam tutorial ini saya akan menggunakan PHP-FPM, dimana nantinya kita dapat mengelola multiple versi php dalam satu single instance atau dengan kata lain nantinya kita bisa menjalankan beberapa versi php yang berbeda – beda secara bersamaan untuk setiap projek php yang berada pada komputer yang sama
PHP-FPM (FastCGI Process Manager) merupakan implementasi utama FastCGI PHP yang memiliki beberapa fitur yang berguna untuk situs dengan beban berat.
Sebelum ketahap instalasi saya ingin menjelaskan terlebih dahulu beberapa hal seperti :
- Saya menggunakan ubuntu 22
- Pada ubuntu 22 yang saya gunakan tentunya secara default sudah terinstall Apache Web Server
- Kemudian disini sebelumnya bahwa saya sudah pernah menginstall php dengan versi 8.2 sebagai default php yang digunakan pada ubuntu dimana lokasi default direktorynya berada di var/www/html
Baca juga : Instalasi php 8 di ubuntu
STUDI KASUS
Jadi nantinya akan berada dua projek web yang menjalankan versi php yang berbeda :
- Projek pertama nantinya akan berada di http://php7.test
- Lalu yang kedua berada di http://php81.test
- Kita akan menginstal php7.4-fpm dan 8.1-fpm termasuk didalamnya untuk integrasi dengan mysql dan modul apache untuk FastCGI
- Selanjutnya mengaktifkan Module Supaya Service Apache dapat menjalankan beberapa versi php
- Kemudian kita perlu membuat direktori kerja kita pada /var/www/ dan melakukan konfigurasi VirtualHost pada /etc/apache2/sites-available dan /etc/hosts untuk dua projek dengan alamat yang sudah disebutkan pada STUDI KASUS diatas
Setelah penjelasn – penjelasn diatas Anda baca, selanjutnya kita akan melangkah pada tahp pertama yaitu instalasi paket php 7.4 dan 8.1 dengan php fpm
#1 INSTALASI MULTI PHP
Langkah pertama kita install terlebih dahulu software properties common dengan perintah berikut :
sudo apt install software-properties-common -y
Kemudian Anda perlu menambahkan repositori ondrej/php kedalam sistem supaya Anda dapat menginstall beberapa versi php
sudo add-apt-repository ppa:ondrej/php
Lalu lakukan update
sudo apt update
Selanjutnya kita instal php7.4 / 8.1 dan extensionnya dengan perintah berikut
sudo apt-get install php7.4 php7.4-fpm php7.4-mysql libapache2-mod-php7.4 libapache2-mod-fcgid -y
sudo apt-get install php8.1 php8.1-fpm php8.1-mysql libapache2-mod-php8.1 libapache2-mod-fcgid -y
Kemudian jalankan dan lihat status keduanya
sudo systemctl start php7.4-fpm
Untuk melihat status dari php 7.4 yang sudah diaktifkan, Anda dapat menuliskan perintah berikut :
sudo systemctl status php7.4-fpm
output :
php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor pr>
Active: active (running) since Mon 2024-04-01 16:00:02 WIB; 5s ago
Docs: man:php-fpm7.4(8)
Process: 31488 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /ru>
Main PID: 31485 (php-fpm7.4)
Status: "Ready to handle connections"
Tasks: 3 (limit: 18958)
Memory: 7.1M
CPU: 33ms
CGroup: /system.slice/php7.4-fpm.service
├─31485 "php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)" >
├─31486 "php-fpm: pool www" "" "" "" "" "" "" "" "" "" "" "" "" "">
└─31487 "php-fpm: pool www" "" "" "" "" "" "" "" "" "" "" "" "" "">
Apr 01 16:00:02 root93-hp systemd[1]: Starting The PHP 7.4 FastCGI Process Mana>
Apr 01 16:00:02 root93-hp systemd[1]: Started The PHP 7.4 FastCGI Process Manag>
lines 1-17/17 (END)
#2 MENGAKTIFKAN MODUL
Selanjutnya kita perlu mengaktifkan modul yang sudah diinstall sebelumnya supaya service apache dapat bekerja dengan beberapa versi php didalamnya
sudo a2enmod actions fcgid alias proxy_fcgi
Selanjutnya restart apache dengan perintah
sudo service apache2 restart
#3 PENGATURAN PROJEK
Pengaturan projek ini terdiri dari pembuatan direktori kerja untuk setiap projeknya dalam hal ini yaitu php7.test dan php81.test kemudian melakukan konfigurasi VirtualHost dan mengedit file hosts pada konfigurasi /etc/
Pertama buat direktori untuk masing – masing projeknya
sudo mkdir /var/www/php7.test
sudo mkdir /var/www/php81.test
sudo chown -R www-data:www-data /var/www/php7.test
sudo chown -R www-data:www-data /var/www/php8.test
Selanjutnya buat file index.php untuk masig – masing folder projek Anda pada php7.test dan php81.test
sudo nano /var/www/php7.test/index.php
Selanjutnya isi index.php dengan script untuk menampilkan info php seperti berikut <?php phpinfo(); ?>
Ulangi langkah yang sama untuk file pada php81.test Kemudian selanjutnya kita perlu melakukan konfigurasi apache atau dalam hal ini membuat sebuah virtualhost untuk setiap projeknya
sudo nano /etc/apache2/sites-available/php7.test.conf
Pada file php7.test.conf yang dibuat tersebut isi dengan script berikut :
<VirtualHost *:80>
ServerAdmin admin@php7.test
ServerName php7.test
DocumentRoot /var/www/php7.test
DirectoryIndex index.php
<Directory /var/www/php7.test>
Options Indexes FollowSymlinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/php7.test_error.log
CustomLog ${APACHE_LOG_DIR}/php7.test_access.log combined
</VirtualHost>
Ulangi langkah yang sama untuk konfigurasi pada projek dengan versi php 8.1 atau supaya lebih mudah, salin file konfigurasi apache sebelumnya dengan perintah berikut :
sudo cp /etc/apache2/sites-available/php7.test.conf /etc/apache2/sites-available/php81.test.conf
Kemudian setelah di copy, Anda tinggal rubah/edit konfigurasi, sesuaikan direktory datanya ke php81.test
Selanjutnya kita cek apakah konfigurasinya sudah sesuai atau belum :
sudo apachectl configtest
output
Syntax OK
Selanjutnya kita aktifkan konfigurasi yang sudah dibuat sebelumnya :
sudo a2ensite php7.test
sudo a2ensite php81.test
Selanjutnya restart apachenya
sudo systemctl restart apache2
Terakhir kita tambahkan domain dari konfigurasi apache yang kita buat ke /etc/hosts
sudo nano /etc/hosts
127.0.0.1 php7.test
127.0.0.1 php81.test
Silahkan selanjutnya Anda tinggal menguji cobanya pada browser dengan mengakses masing – masing domain yaitu :
http://php7.test
http://php81.test
Jika berhasil nanti setiap projeknya akan menampilkan versi php yang berbeda. Jika browser Anda menampilkan default pagenya Apache, silahkan bersihkan cache Anda atau akses domainnya menggunakan mode samaran.
Jadi kurang lebih seperti itulah bagaimana menjalankan multi php di ubuntu dengan php-fpm, apache dan virtual host. Jika Anda mengalami masalah atau memiliki pertanyaan, silahkan tulis saja pada kolom komentar
Rangkuman Perintah - Perintah
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php
sudo apt-get install php7.4 php7.4-fpm php7.4-mysql libapache2-mod-php7.4 libapache2-mod-fcgid -y
sudo apt-get install php8.1 php8.1-fpm php8.1-mysql libapache2-mod-php8.1 libapache2-mod-fcgid -y
sudo systemctl start php7.4-fpm
sudo systemctl status php7.4-fpm
sudo a2enmod actions fcgid alias proxy_fcgi
sudo mkdir /var/www/php7.test
sudo mkdir /var/www/php81.test
sudo chown -R www-data:www-data /var/www/php7.test
sudo chown -R www-data:www-data /var/www/php8.test
sudo nano /etc/apache2/sites-available/php7.test.conf
sudo cp /etc/apache2/sites-available/php7.test.conf /etc/apache2/sites-available/php81.test.conf
sudo apachectl configtest
sudo a2ensite php7.test
sudo a2ensite php81.test
sudo systemctl restart apache2
0 Response to "Menjalankan Multi PHP di Ubuntu Dengan PHP-FPM"
Post a Comment
Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin