Menjalankan Multi PHP di Ubuntu Dengan PHP-FPM

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.

INFO

Sebelum ketahap instalasi saya ingin menjelaskan terlebih dahulu beberapa hal seperti :
  1. Saya menggunakan ubuntu 22
  2. Pada ubuntu 22 yang saya gunakan tentunya secara default sudah terinstall Apache Web Server
  3. 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

STUDI KASUS

Jadi nantinya akan berada dua projek web yang menjalankan versi php yang berbeda :
  1. Projek pertama nantinya akan berada di http://php7.test
  2. Lalu yang kedua berada di http://php81.test
RANGKUMAN INSTALASI
  1. Kita akan menginstal php7.4-fpm dan 8.1-fpm termasuk didalamnya untuk integrasi dengan mysql dan modul apache untuk FastCGI
  2. Selanjutnya mengaktifkan Module Supaya Service Apache dapat menjalankan beberapa versi php
  3. 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