Cara Jalankan Banyak Versi PHP (5.6, 7.x) dengan Apache di Ubuntu 18.04 LTS

Sering terjadi kasus developer ingin deploy beberapa aplikasi web PHP ke satu server yang sama dengan berbagai versi PHP yang berbeda. Sementara secara default di server yang tersedia hanya satu versi PHP saja. Nah, di artikel ini dibahas mengenai cara install dan setting untuk menjalankan banyak versi PHP (5,6 7.x) dengan Apache web server di Ubuntu 18.04 LTS.

*1. Install Apache*

Install Apache dan modul FastCGI.

[INPUT]

1 2 apt update   apt install apache2 libapache2-mod-fcgid -y

*2. Install PHP Banyak Versi*

Install PHP multi versi menggunakan repository dari PPA (Personal Package Archives), karena versi PHP yang tersedia di repository default Ubuntu 18.04 LTS yaitu PHP v7.2.

Cek versi Ubuntu dan paket php dari repository default

[INPUT]

1 2 3 4 5 6 7 add-apt-repository ppa:ondrej/php apt update apt install php5.6 php5.6-fpm -y apt install php7. php7.-fpm -y apt install php7.1 php7.1-fpm -y apt install php7.2 php7.2-fpm -y apt install php7.3 php7.3-fpm -y    

Mencari nama paket modul atau extension PHP gunakan perintah *apt search* atau *apt-cache search*.

Misalnya mencari modul untuk php7.2.

[INPUT]

1 2 apt search php7.2 | more apt-cache search php7.2 | more

Daftar modul PHP

Menguji hasil install PHP dengan menampilkan versi PHP.

[INPUT]

1 2 3 4 5 php5.6 -v php7. -v php7.1 -v php7.2 -v php7.3 -v  

Cek hasil install setiap versi PHP

Setting versi default PHP untuk php-cli, misalnya ingin memakai versi PHP 7.2 sebagai versi default.

[INPUT]

1 2 update-alternatives –set php /usr/bin/php7.2 php -v

Setting versi PHP untuk command php

*3. Setting Apache Banyak versi PHP*

Aktif modul Apache yang dibutuhkan.

[INPUT]

1 a2enmod actions fcgid alias proxy_fcgi

Masing-masing versi PHP dibuatkan virtualhost.

· PHP v5.6 = php56.aplikasi.oke · PHP v7.0 = php70.aplikasi.oke · PHP v7.1 = php71.aplikasi.oke · PHP v7.2 = php72.aplikasi.oke · PHP v7.3 = php73.aplikasi.oke

Membuat file virtualhost *php56.aplikasi.oke.conf* untuk PHP v5.6.

[INPUT]

1 2 cd /etc/apache2/sites-available/ nano php56.aplikasi.oke.conf    

Isi dari file virtualhost php56.aplikasi.oke.conf

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17     ServerName php56.aplikasi.oke     DocumentRoot /var/www/php56                Options -Indexes +FollowSymLinks +MultiViews         AllowOverride All         Require all granted”                     SetHandler “proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/”            ErrorLog ${APACHE_LOG_DIR}/php56.aplikasi.oke_error.log     CustomLog ${APACHE_LOG_DIR}/php56.aplikasi.oke_access.log combined

Pada file virtualhost PHP v5.6 di atas, opsi *SetHandler* yang merupakan versi PHP yang mengeksekusi script file .php.

Lanjutkan dengan membuat file virtualhost untuk versi PHP yang lain, sesuaikan opsi *SetHandler*, *ServerName*, *DocumentRoot*, *ErrorLog* dan *CustomLog*.

Setelah semua setting virtualhost selesai, lanjut membuat direktori dan file index.php yang berisi phpinfo untuk masing-masing versi PHP.

[INPUT]

1 2 3 4 5 6 7 cd /var/www mkdir php56 php70 php71 php72 php73 echo ‘‘ | sudo tee –append php56/index.php echo ‘‘ | sudo tee –append php70/index.php echo ‘‘ | sudo tee –append php71/index.php echo ‘‘ | sudo tee –append php72/index.php echo ‘‘ | sudo tee –append php73/index.php

Terakhir aktifkan virtualhost dan restart Apache.

[INPUT]

1 2 3 4 5 6 7 a2ensite php56.aplikasi.oke.conf a2ensite php70.aplikasi.oke.conf a2ensite php71.aplikasi.oke.conf a2ensite php72.aplikasi.oke.conf a2ensite php73.aplikasi.oke.conf systemctl restart apache2 systemctl status apache2

*4. Pengujian*

Browsing masing-masing subdomain, tiap subdomain harus menampilkan versi PHP yang berbeda.

Browsing setiap versi PHP

*5. Beda Versi PHP di Direktori Tertentu*

Virtualhost di atas berlaku untuk subdomain, sehingga file yang berada dalam direktori dan sub-direktori subdomain tersebut menjalankan versi PHP yang sama. Muncul pertanyaan bagaimana caranya jika masih dalam satu domain atau subdomain ingin menjalankan PHP dengan versi berbeda di direktori tertentu? Jawabannya dengan cara menambah opsi *Directory* di setting virtualhost.

Misalnya DocumentRoot */var/www/aplikasi.oke* dengan url akses http://aplikasi.oke dan sub-direktori lain menjalankan PHP v5.6, sementara khusus untuk sub-direktori */var/www/aplikasi.oke/v2* dengan url akses https://aplikasi.oke/v2 menjalankan PHP v7.2.

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27     ServerName www.aplikasi.oke     ServerAlias aplikasi.oke     DocumentRoot /var/www/aplikasi.oke                Options -Indexes +FollowSymLinks +MultiViews         AllowOverride All         Require all granted                     SetHandler “proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/”                     Options -Indexes +FollowSymLinks +MultiViews         AllowOverride All         Require all granted                    SetHandler “proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/”                     ErrorLog ${APACHE_LOG_DIR}/aplikasi.oke_error.log     CustomLog ${APACHE_LOG_DIR}/aplikasi.oke_access.log combined   

Browsing PHP beda versi di direktori tertentu

Selamat mencoba 🙂

Leave a Reply

Your email address will not be published.