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
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
Browsing PHP beda versi di direktori tertentu
Selamat mencoba ð