Menjalankan Multi PHP di Ubuntu 16.04 dan 18.04
Meskipun saat ini PHP sudah memasuki versi 7, namun terkadang adakalanya kita masih membutuhkan versi sebelum, guna untuk menjalankan beberapa aplikasi yang memang belum/tidak mendukung PHPv7.x. Seperti kasus di kantor saya, masih menggunakan Magento 1, yang mana ia tidak mendukung PHPv7.x. Saat ini saya menggunakan Ubuntu 18.04, dan pada repositori resmi hanya tersedia PHPv7.2, mau tidak-mau saya harus memasang php5.6 agar Magento dapat berjalan dengan sebagai mana mestinya.
Pada kesempatan kali ini, saya ingin berbagai mengenai cara pemasang PHPv5.6 dan 7.x dengan Apache
dan php-fpm
yang memungkinkan dapat menjalankan keduanya sekaligus.
Langsung saja, pertama-tama kita pasang dahulu apache
:
$ sudo apt install apache2
Kemudian yang kedua, kita pasang php5.6
di Ubuntu 16.04 dan 18.04. Secara asali di Ubuntu tersebut tidak disediakan php5.6
di repositori resmi. Oleh karena itu kita perlu masukan repositori dari luar (ppa), yakni:
$ sudo add-apt-repository -y ppa:ondrej/php
$ sudo apt update
Lalu tinggal kita pasang saja php5.6
nya secara lengkap dengan perintah di bawah ini:
$ sudo apt install php5.6 php5.6-enchant php5.6-mbstring php5.6-snmp php5.6-bcmath php5.6-fpm php5.6-mysql php5.6-soap php5.6-bz2 php5.6-gd php5.6-odbc php5.6-sqlite3 php5.6-cgi php5.6-gmp php5.6-opcache php5.6-sybase php5.6-cli php5.6-imap php5.6-pgsql php5.6-tidy php5.6-common php5.6-interbase php5.6-phpdbg php5.6-xml php5.6-curl php5.6-intl php5.6-pspell php5.6-xmlrpc php5.6-dba php5.6-json php5.6-readline php5.6-xsl php5.6-ldap php5.6-recode php5.6-zip
Setelah itu, kita pasang php7
nya.
Ubuntu 16.04
$ sudo apt install php7.0 php7.0-enchant php7.0-mbstring php7.0-snmp php7.0-bcmath php7.0-fpm php7.0-mysql php7.0-soap php7.0-bz2 php7.0-gd php7.0-odbc php7.0-sqlite3 php7.0-cgi php7.0-gmp php7.0-opcache php7.0-sybase php7.0-cli php7.0-imap php7.0-pgsql php7.0-tidy php7.0-common php7.0-interbase php7.0-phpdbg php7.0-xml php7.0-curl php7.0-intl php7.0-pspell php7.0-xmlrpc php7.0-dba php7.0-json php7.0-readline php7.0-xsl php7.0-ldap php7.0-recode php7.0-zip
Ubuntu 18.04
$ sudo apt install php7.2 php7.2-enchant php7.2-mbstring php7.2-snmp php7.2-bcmath php7.2-fpm php7.2-mysql php7.2-soap php7.2-bz2 php7.2-gd php7.2-odbc php7.2-sqlite3 php7.2-cgi php7.2-gmp php7.2-opcache php7.2-sybase php7.2-cli php7.2-imap php7.2-pgsql php7.2-tidy php7.2-common php7.2-interbase php7.2-phpdbg php7.2-xml php7.2-curl php7.2-intl php7.2-pspell php7.2-xmlrpc php7.2-dba php7.2-json php7.2-readline php7.2-xsl php7.2-ldap php7.2-recode php7.2-zip
Setelah selesai, sunting php-fpm
. Sebelum menyunting, pastikan kita menyetopnya terlebih dahulu:
$ sudo systemctl stop php5.6-fpm.service php7.2-fpm.service
Khusus pengguna Ubuntu 16.04 ganti php7.2-fpm
menjadi php7.0-fpm
. Lalu baru kita sunting php-fpm.
$ vim /etc/php/5.6/fpm/pool.d/www.conf
/etc/php/5.6/fpm/pool.d/www.conf
[www]
user = ali
group = ali
listen = /run/php/php5.6-fpm.sock
Ganti /etc/php/5.6/
dengan /etc/php/7.2
atau 7.0
sesuai versi php
-nya.
Ingat!
Untuk menutup
vim
dengansudo
, perintahnya adalah sebagai berikut::!w sudo tee % > /dev/null
Buat virtualhost khusus untuk php5.6
misalnya dengan nama https://localhost.php5
, sedangan php7
kita gunakan default-nya yaknihttps://localhost
.
$ vim /etc/hosts
Jadikan seperti berikut:
/etc/hosts
...
127.0.0.1 localhost.php5
...
Aktifkan fastcgi
:
$ sudo a2enmod actions fastcgi alias proxy_fcgi
Sunting virtualhost default dengan mengikuti perintah berikut:
$ vim /etc/apache2/sites-available/000-default.conf
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
ServerAdmin admin@situsali.com
DocumentRoot /home/ali/Web
<Directory /home/ali/Web/>
DirectoryIndex index.php
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost/"
</FilesMatch>
ErrorLog /home/ali/Web/logs/php7.2-error.log
CustomLog /home/ali/Web/logs/php7.2-access.log combined
</VirtualHost>
Kemudian buat virtualhost khusus untuk php5.6
.
$ cd /etc/apache2/sites-available/
$ sudo cp 000-default.conf php56.conf
Lalu isikan kodenya seperti berikut:
/etc/apache2/sites-available/php56.conf
<VirtualHost *:80>
ServerAdmin admin@situsali.com
DocumentRoot /home/ali/Web
ServerName localhost.php5
<Directory /home/ali/Web/>
DirectoryIndex index.php
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost/"
</FilesMatch>
ErrorLog /home/ali/Web/logs/php5.6-error.log
CustomLog /home/ali/Web/logs/php5.6-access.log combined
</VirtualHost>
Aktifkan virtualhost php56
dengan perintah a2ensite
:
$ sudo a2ensite php56
Selanjutnya tes hasil konfigurasi kita, apakah sudah benar atau belum:
$ sudo apachectl configtest
Jika tidak ada yang galat (error), langsung saja kita restart apache:
$ sudo systemctl apache2 restart
Sekarang tinggal kita coba buka di peramban.
Jika sudah seperti gambar di atas artinya kita sudah sukses. Semoga bermanfaat