Monday, August 24, 2020

Membuat Multiple PHP version pada Subdomain di Apache2

Pendahuluan

Untuk menginstall sebuah web server di Ubuntu, cukup mudah. Ada cukup banyak tutorial yang bisa anda ikuti untuk membangun web server menggunakan berbagai perangkat lunak. Sebut saja NginX, Apache, TomCat, Oracle Web Logic, RedHat JBoss, OpenResty bahkan Microsoft IIS. Saya tidak ingin berdebat mana yang terbaik di antara mereka.

Saya hanya iri, bagaimana cPanel dapat dengan mudah mengubah versi PHP untuk setiap subdomain yang sudah dibuat. Ini berarti saya tidak repot untuk meng-upgrade aplikasi/layanan CMS apabila ada versi baru PHP yang kadang (baca: sering) tidak kompatibel dengan aplikasi saya, karena satu subdomain mewakili satu aplikasi/layanan. 

Sebagai contoh di kampus saya STTA, kami memiliki portal eLearning Elena (https://elena2.stta.ac.id) yang menggunakan PHP versi 7.4 dan di saat yang lain, kami juga memiliki portal Open Journals System (OJS) yaitu Senatik dan e-Journals yang dibangun menggunakan PHP 5.6. 

Pertanyaannya, bagaimana kedua aplikasi/layanan tersebut dapat akur (jalan bersama) dalam satu server, lebih baik lagi bagaimana mereka bisa akur dalam satu web server (karena dalam satu server, dapat di-install lebih dari satu web server asal port number-nya beda). Hal ini bisa dengan mudah dilakukan jika anda hosting ke layanan hosting yang memiliki cPanel, misalnya RumahWeb. Bukan iklan, terlepas dari minimnya pengalaman saya dari layanan-layanan hosting yang ada di internet, menurut saya RumahWeb adalah penyedia layanan hosting yang terbaik baik dari sisi performa server maupun dukungan teknisnya. Selalu nyaman, berbicara dengan mereka. 

Semudah ini menyeting Multiple PHP di subdomain menggunakan cPanel.

1. Buka cPanel anda, kemudian scroll ke bagian Software dan pilih MultiPHP Manager.

2. Select domain yang ingin anda set menggunakan PHP yang cocok.

 

3. Selesai. Semudah itu mengganti versi PHP untuk sebuah subdomain menggunakan cPanel.

Masalahnya:

  1. Saya mengelola Virtual Private Server (VPS) / Dedicated Server dan bukan menggunakan layanan hosting.
  2. Saya tidak punya cukup uang untuk membayar lisensi cPanel (10-15 USD/mo).

Supaya server saya bisa menjalankan multi PHP version, saya terpaksa bermain dengan Webmin atau sites-available di Apache-nya. Saya memilih cara yang kedua yaitu mengonfigurasi web server-nya.

Oke, let us get start.

Langkah-langkah

1. Install web server.

Silahkan install web server standar menggunakan Apache2, PHP 7.4 dan/atau MySQL jika anda perlu DBMS. Tidak ada penjelasan terperinci bagaimana menginstall web server di Ubuntu Server menggunakan Apache dan PHP 7. Ada banyak tutorial yang bisa anda ikuti hingga anda bisa mengunjungi web server anda melalui browser.

 


2. Membuat subdomain.

Proses membuat subdomain ini ada 2 langkah:

  1. Mendaftarkan di Name Server
  2. Mengonfigurasi subdomain di web server  

Lebih detail mengenai langkah-langkah membuat subdomain dan multiple PHP version adalah sebagai berikut:

1. Daftarkan subdomain baru anda ke Name Server (NS), biasanya ada di fitur dalam layanan domain anda didaftarkan. Proses ini memerlukan waktu yang disebut masa propagasi DNS. Mudahnya, masa propagasi DNS adalah waktu yang diperlukan agar dunia mengenal subdomain anda. Anggaplah 1x24 jam (tapi biasanya tidak selama itu. Pengalaman saya, hanya hitungan menit). Ini langkah untuk menambahkan domain baru di NS.


Selesai. Sambil menunggu proses propagasi DNS, kita siapkan subdomain di server kita sesuai subdomain yang baru saja kita daftarkan.

2. Membuat/ menyiapkan subdomain di Ubuntu Server.

Sebelum kita lebih jauh mengonfigurasi Apache, asumsinya saya sudah menjadi root sehingga perintah-perintah yang ada di tutorial ini jalan pada user root. Untuk membuat subdomain di Ubuntu Server menggunakan Apache, kita buat dulu sebuah file configuration di /etc/apache2/sites-available/ dengan memberi perintah:

# nano /etc/apache2/sites-available/coba.conf

Paste script konfigurasi dan sesuaikan dengan kondisi server anda.

<VirtualHost *:80>
        ServerName coba.stta.ac.id
        ServerAdmin admin@stta.ac.id
        DocumentRoot /home/serverku/html/coba

        <Directory /home/serverku/html/coba>
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

3. Simpan dan restart Apache anda

# /etc/init.d/apache2 reload

4. Buat directory sebagai rumah subdomain "coba.stta.ac.id" sesuai file konfigurasi tersebut (saya meletakkan di /home/serverku/html/coba). 

# mkdir -p  /home/serverku/html/coba

5. Buat sebuah file "coba.php"

# nano  /home/serverku/html/coba/coba.php

<?php
    echo "Hello World<br>";
    echo "Domain ini menggunakan PHP versi " . phpversion();
?>

6. Jika waktu propagasi DNS sudah selesai (saat tutorial ini ditulis, saya hanya butuh waktu 15 menit untuk propagasi DNS), seharusnya anda sudah bisa mengakses subdomain baru anda melalui browser.

Lho, kok masih menggunakan versi PHP 7.4.x ? Bagaimana caranya switch ke PHP 5.6.x untuk subdomain coba.stta.ac.id ini?

7. Instalasi PHP 5.6 FPM

Secara default, semua script PHP yang anda buat akan menggunakan PHP 7.4 sesuai instalasi pada langkah nomor 1. Sekarang kita perlu meng-install PHP 5.6 dan PHP 5.6 FPM dengan perintah:

# apt install php5.6 php5.6-fpm

8. Pilih versi PHP 5.6 pada konfigurasi subdomain coba.stta.ac.id

Untuk memilih PHP 5.6 pada subdomain coba.stta.ac.id, anda perlu menambahkan script pada file konfigurasi coba.conf di /etc/apache2/sites-available/coba.conf yang sudah anda buat sebelumnya. Bagian yang berwarna merah adalah tambahannya.

<VirtualHost *:80>
        ServerName coba.stta.ac.id
        ServerAdmin admin@stta.ac.id
        DocumentRoot /home/serverku/html/coba

        <Directory /home/serverku/html/coba>
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        <FilesMatch \.php$>
                SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
        </FilesMatch>


        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

9. Restart apache anda dengan perintah:

# /etc/init.d/apache2 reload

 

10. Testing.

Buka kembali halaman subdomain coba.stta.ac.id melalui browser anda.

Voila!! subdomain coba.stta.ac.id sudah menggunakan PHP versi 5.6.

Penutup

Saat anda mencoba tutorial ini, subdomain coba.stta.ac.id, sudah saya matikan. Wkwkw. Saya hanya menggunakan untuk membuat tutorial saja.

Selamat mencoba. Semoga bermanfaat.