Cara Install dan Menggunakan Multi Versi PHP Pada Server Ubuntu


Cara Install dan Menggunakan Multi Versi PHP Pada Server Ubuntu

Seperti yang telah kita ketahui, PHP (Hypertext Preprocessor) adalah bahasa pemrograman open-source yang umumnya digunakan untuk membangun aplikasi web dinamis dan interaktif. PHP dapat dijalankan pada server web dan dikombinasikan dengan HTML, CSS, dan JavaScript untuk membuat halaman web yang dinamis dan menarik.

Saat ini, PHP sangat populer di kalangan web developer karena mudah dipelajari dan memiliki kemampuan yang cukup kuat. PHP juga mendukung banyak jenis database, seperti MySQL, PostgreSQL, dan Oracle sehingga memungkinkan pengembang untuk membuat aplikasi web yang lebih kompleks dan fungsional.

Tidak hanya itu, bahasa pemrograman ini juga memiliki banyak kerangka kerja (framework) yang dapat digunakan oleh pengembang untuk mempercepat proses pembuatan aplikasi web. Beberapa kerangka kerja PHP yang populer antara lain Laravel, CodeIgniter, dan Symfony.

Sebagai bahasa penulisan skrip atau bahasa yang mengotomatiskan eksekusi task, PHP sebenarnya mirip dengan JavaScript dan Python. Namun yang membedakannya adalah PHP digunakan untuk komunkasi di sisi server. Sedangkan, JavaScript digunakan untuk frontend dan backend, sera Python hanya untuk sisi server (backend).

PHP sendiri memiliki berbagai versi seiring berjalannya waktu, beberapa tahun belakangan biasanya kita menggunakan hanya satu versi php didalam server yang kita gunakan, tetapi seiring berjalannya waktu dan pengembangan teknologi saat ini kita bisa menggunakan multi versi php didalam satu server yang kita gunakan.

Berikut adalah tutorial dan cara agar kita bisa menggunakan 2 versi php (php7.2 dan php8.0) didalam suatu server yang menggunakan OS ubuntu 20.

Langkah 1: Tambahkan PPA untuk PHP

Untuk mengelola beberapa versi PHP, Anda perlu menambahkan PPA dari ondrej/php yang menyediakan berbagai versi PHP.

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

 

Langkah 2: Instal PHP 7.4 dan PHP 8.0

Setelah menambahkan PPA, Anda dapat menginstal PHP 7.4 dan PHP 8.0.

sudo apt install php7.4
sudo apt install php8.0

 

Langkah 3: Instal Modul PHP yang Diperlukan

Anda mungkin memerlukan modul PHP tertentu untuk setiap versi PHP. Instal modul yang diperlukan untuk masing-masing versi.

Contoh untuk PHP 7.4:

sudo apt install php7.4-cli php7.4-fpm php7.4-mysql php7.4-xml php7.4-curl

 

Contoh untuk PHP 8.0:

sudo apt install php8.0-cli php8.0-fpm php8.0-mysql php8.0-xml php8.0-curl

 

Langkah 4: Konfigurasi Server Web untuk Menggunakan Versi PHP yang Berbeda

Jika Anda menggunakan Apache, Anda dapat mengaktifkan dan menonaktifkan versi PHP dengan a2enmod dan a2dismod.

Misalnya, untuk mengaktifkan PHP 7.4:

sudo a2dismod php8.0
sudo a2enmod php7.4
sudo systemctl restart apache2

 

Untuk mengaktifkan PHP 8.0:

sudo a2dismod php7.4
sudo a2enmod php8.0
sudo systemctl restart apache2

 

Jika Anda menggunakan Nginx dengan PHP-FPM, Anda perlu mengonfigurasi file situs virtual Anda untuk menggunakan socket PHP-FPM yang sesuai.

Contoh konfigurasi untuk PHP 7.4:

nginx

server {
    listen 80;
    server_name your_domain;
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    }
    location ~ /\.ht {
        deny all;
    }
}

 

Dan untuk PHP 8.0:

nginx

server {
    listen 80;
    server_name your_domain;
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.0-fpm.sock;
    }
    location ~ /\.ht {
        deny all;
    }
}

 

Langkah 5: Menggunakan Versi PHP yang Berbeda di Command Line

Anda dapat memilih versi PHP yang ingin Anda gunakan di command line dengan menggunakan update-alternatives.

Menambahkan alternatif untuk PHP:

sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.0 80

 

Memilih versi PHP yang diinginkan:

sudo update-alternatives --config php

 

Kemudian, Anda dapat memilih versi PHP yang ingin digunakan.

Langkah 6: Menggunakan Kedua Versi PHP Didalam Vhost Yang Berbeda

Menggunakan Apache

1. Konfigurasi Virtual Hosts

Anda perlu membuat dua file konfigurasi untuk Virtual Hosts, masing-masing menggunakan versi PHP yang berbeda.

Virtual Host untuk PHP 7.4:

Buat file konfigurasi di "/etc/apache2/sites-available/php74.example.com.conf":

Apache

<VirtualHost *:80>
    ServerName php74.example.com
    DocumentRoot /var/www/php74
    <Directory /var/www/php74>
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/php74_error.log
    CustomLog ${APACHE_LOG_DIR}/php74_access.log combined
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

 

Virtual Host untuk PHP 8.0:

Buat file konfigurasi di "/etc/apache2/sites-available/php80.example.com.conf":

apache

<VirtualHost *:80>
    ServerName php80.example.com
    DocumentRoot /var/www/php80
    <Directory /var/www/php80>
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/php80_error.log
    CustomLog ${APACHE_LOG_DIR}/php80_access.log combined
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/php8.0-fpm.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

 

2. Aktifkan Virtual Hosts dan Modul Proxy

Aktifkan kedua Virtual Hosts dan modul proxy untuk Apache:

sudo a2ensite php74.example.com.conf
sudo a2ensite php80.example.com.conf
sudo a2enmod proxy_fcgi setenvif
sudo systemctl restart apache2

 

Menggunakan Nginx

1. Konfigurasi Virtual Hosts
Anda perlu membuat dua file konfigurasi untuk Virtual Hosts, masing-masing menggunakan versi PHP yang berbeda.

Virtual Host untuk PHP 7.4:

Buat file konfigurasi di "/etc/nginx/sites-available/php74.example.com":

server {
    listen 80;
    server_name php74.example.com;
    root /var/www/php74;
    index index.php index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    }
    location ~ /\.ht {
        deny all;
    }
}

 

Virtual Host untuk PHP 8.0:

Buat file konfigurasi di "/etc/nginx/sites-available/php80.example.com":

server {
    listen 80;
    server_name php80.example.com;
    root /var/www/php80;
    index index.php index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.0-fpm.sock;
    }
    location ~ /\.ht {
        deny all;
    }
}

 

2. Aktifkan Virtual Hosts

Aktifkan kedua konfigurasi Virtual Hosts dengan membuat symlink di /etc/nginx/sites-enabled:

sudo ln -s /etc/nginx/sites-available/php74.example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/php80.example.com /etc/nginx/sites-enabled/
sudo systemctl restart nginx

 

Dengan konfigurasi ini, Anda dapat menjalankan dua versi PHP yang berbeda pada Virtual Hosts yang berbeda di server yang sama. Pastikan bahwa direktori root (/var/www/php74 dan /var/www/php80) sudah ada dan memiliki file index.php atau file PHP lainnya untuk diuji.

Sekian