MENJALANKAN MULTIPEL PHP DI APACHE UBUNTU DENGAN VIRTUALHOST

 Halo Sobat Hamtronik,

Sesuai dengan judul, menjalankan multipel HPH di ubuntu server. Kenapa harus multipel PHP?

Tidak menutup kemungkinan dalam satu server yang kita miliki terdapat beberapa aplikasi web, dan masing-masing aplikasi tersebut dibangun menggunakan Versi PHP yang berbeda.

Dengan cara yang akan kita bahas ini, kita bisa menjalankan beberapa versi php sesuai kebutuhan aplikasi.

Persiapan:

OS: Ubuntu Server 22.04

Webserver: Apache

shoftware:

WinsCP + PuTTY

dua buah subdomain yang sudah mengarah pada server, misal sub1.domainku.com dan sub2.domainku.com

Dalam kasus ini nanti sub1.domainku.com akan menggunakan PHP 8.1 dan sub2.domainku.com akan menggunakan PHP 7.4

Baik ikuti langkah-langkah berikut:

Langkah 1: Pembaruan Sistem

sudo apt-get update sudo apt-get upgrade

Langkah 2: Menginstal Beberapa Versi PHP di Ubuntu 22.04
sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update

Instal PHP 8.0:

Sekarang Anda dapat menginstal PHP8.0 di Ubuntu dengan menjalankan perintah berikut:

sudo apt-get install php8.0 php8.0-fpm

Dan instal beberapa PHP8.0 ekstensi umum.

sudo apt-get install php8.0-mysql php8.0-mbstring php8.0-xml php8.0-gd php8.0-curl
  1. sudo systemctl start php8.0-fpm

Instal PHP 7.4:

Sekarang Anda dapat menginstal PHP7.4 di Ubuntu dengan menjalankan perintah berikut:

sudo apt-get install php7.4 php7.4-fpm

Dan instal beberapa PHP7.4 ekstensi umum.

sudo apt-get install php7.4-mysql php7.4-mbstring php7.4-xml php7.4-gd php7.4-curlsudo systemctl start php7.4-fpm

Instal PHP 7.3:

Sekarang Anda dapat menginstal PHP7.3 di Ubuntu dengan menjalankan perintah berikut:

sudo apt-get install php7.3 php7.3-fpm

Dan instal beberapa PHP7.3 ekstensi umum.

sudo apt-get install php7.3-mysql php7.3-mbstring php7.3-xml php7.3-gd php7.3-curlsudo systemctl start php7.3-fpm

Saat diminta, tekan  y untuk mengonfirmasi instalasi. 

Instal PHP 7.2:

Sekarang Anda dapat menginstal PHP7.2 di Ubuntu dengan menjalankan perintah berikut:

sudo apt-get install php7.2 php7.2-fpm

Dan instal beberapa PHP7.2 ekstensi umum.

sudo apt-get install php7.2-mysql php7.2-mbstring php7.2-xml php7.2-gd php7.2-curlsudo systemctl start php7.2-fpm

Saat diminta, tekan  y untuk mengonfirmasi instalasi. 

Instal PHP 7.1:

Sekarang Anda dapat menginstal PHP7.1 di Ubuntu dengan menjalankan perintah berikut:

sudo apt-get install php7.1 php7.1-fpm

Dan instal beberapa PHP7.2 ekstensi umum.

sudo apt-get install php7.1-mysql php7.1-mbstring php7.1-xml php7.1-gd php7.1-curlsudo systemctl start php7.1-fpm

Saat diminta, tekan  y untuk mengonfirmasi instalasi. 

Instal PHP 5.6:

Sekarang Anda dapat menginstal PHP5.6 di Ubuntu dengan menjalankan perintah berikut:

sudo apt-get install php5.6 php5.6-fpm

Dan instal beberapa PHP5.6 ekstensi umum.

sudo apt-get install php5.6-mysql php5.6-mbstring php5.6-xml php5.6-gd php5.6-curlsudo systemctl start php5.6-fpm

Saat diminta, tekan  y untuk mengonfirmasi instalasi

 Menghapus Instalasi Versi PHP

Jika versi PHP tidak diperlukan lagi, versi tersebut dapat dihapus dari sistem. Itu akan mengosongkan ruang disk serta keamanan sistem.

Untuk menghapus instalasi versi PHP apa pun, Jalankan perintah berikut:

sudo apt-get remove php5.6

Hapus juga semua modul untuk versi tersebut, Jalankan perintah berikut:

sudo apt-get remove php5.6-*


Langkah 3: Menyiapkan Virtualhost

aktifkan fcgi modul apache, Jalankan perintah berikut:

sudo a2enmod actions fcgid alias proxy_fcgi

sekarang restart apache Jalankan perintah berikut:

sudo systemctl restart apache2

Selanjutnya membuat direktori untuk masing-masing subdomain

/var/www/sub1.domainku.com/public_html/var/www/sub2.domainku.com/public_html

Kemudian Buat file info.php didalam folder public_html, isi dari file tersebut adalah :

<?php phpinfo(); ?>

Selanjutya buat file conf sesuai nama subdomain kita pada folder "/etc/apache2/sites-available/". berarti ada 2 file conf yang akan kita buat.

/etc/apache2/sites-available/sub1.domainku.com.conf
<VirtualHost *:80>
	
	ServerAdmin admin@domainku.com
	ServerName sub1.domainku.com
	ServerAlias www.sub1.domainku.com
	DocumentRoot /var/www/sub1.domainku.com/public_html

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

	
<FilesMatch \.php$>
        # Apache 2.4.10+ can proxy to unix socket
        SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/"
</FilesMatch>

<Directory "/var/www/sub1.domainku.com/public_html">
	Options Indexes FollowSymLinks Includes ExecCGI
	AllowOverride All
	Require all granted
	Order allow,deny
	Allow from all
</Directory>

</VirtualHost>

/etc/apache2/sites-available/sub2.domainku.com.conf
<VirtualHost *:80>
	
	ServerAdmin admin@domainku.com
	ServerName sub2.domainku.com
	ServerAlias www.sub2.domainku.com
	DocumentRoot /var/www/sub2.domainku.com/public_html

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

	
<FilesMatch \.php$>
        # Apache 2.4.10+ can proxy to unix socket
        SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/"
</FilesMatch>

<Directory "/var/www/sub2.domainku.com/public_html">
	Options Indexes FollowSymLinks Includes ExecCGI
	AllowOverride All
	Require all granted
	Order allow,deny
	Allow from all
</Directory>

</VirtualHost>

Selanjutnya kita aktifkan 2 subdomain dengan perintah:

  1. sudo a2ensite sub1.domainku.com.conf
  2. sudo a2ensite sub2.domainku.com.conf

Lalu kita nonaktifkan default konfigurasi apache dengan perintah.:

  1. sudo a2dissite 000-default.conf

Sekarang waktunya testing, silahkan akses 2 file info.php di masing-masing subdomain melalui browser:

http://sub1.domainku.com/info.php
http://sub2.domainku.com/info.php

Jika setting kita sudah benar maka akan menampilkan informasi PHP sesui konfigurasi di file don conf



jangan lupa hapus file info.php pada public_html jika sudah tidak kita gunakan, karena menampilkan informasi sensitif dari server kita

Sekian, semoga bermanfaat.

Sumber:
techblogs
Digital Ocean

Post a Comment

Previous Post Next Post