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

Artikel sebelumnya telah dibahas tentang cara jalankan banyak versi PHP dengan Apache di Ubuntu 18.04 LTS, kali ini masih kasus yang sama tetapi menggunakan Nginx web server.

*1. Install Nginx*

Install Nginx dan cek status service-nya apakah berjalan atau tidak.

[INPUT]

1 2 apt install nginx -y systemctl status nginx

*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 Server Block*

Selanjutnya membuat server block (di Apache disebut sebagai virtualhost) untuk masing-masing versi PHP.

· 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 direktori root dan file index.php untuk masing-masing virtualhost 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

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

[INPUT]

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

Isi dari file server block php56.aplikasi.oke.conf.

[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 server { listen 80;   server_name php56.aplikasi.oke; root /var/www/php56;       index index.php index.html index.htm;       location / {         try_files $uri $uri/ /index.php?$query_string;     }       location ~ \.php$ {     try_files $fastcgi_script_name =404;     include fastcgi_params;     fastcgi_pass                    unix:/var/run/php/php5.6-fpm.sock;     fastcgi_index                   index.php;     fastcgi_param DOCUMENT_ROOT     $realpath_root;     fastcgi_param SCRIPT_FILENAME   $realpath_root$fastcgi_script_name;     }   access_log /var/log/nginx/php56.aplikasi.oke.access.log; error_log /var/log/nginx/php56.aplikasi.oke.error.log warn; }

Pada file server block di atas, opsi *fastcgi_pass* yang menentukan file .php dieksekusi dengan PHP versi berapa.

Lanjutkan dengan membuat file server block untuk versi PHP yang lain, sesuaikan opsi *server_name*, *root*, *fastcgi_pass*, dan file *access_log* serta *error_log*.

Terakhir aktifkan setting server block dan restart nginx.

[INPUT]

1 2 3 4 5 6 7 ln -s /etc/nginx/sites-available/php56.aplikasi.oke.conf /etc/nginx/sites-enabled ln -s /etc/nginx/sites-available/php70.aplikasi.oke.conf /etc/nginx/sites-enabled ln -s /etc/nginx/sites-available/php71.aplikasi.oke.conf /etc/nginx/sites-enabled ln -s /etc/nginx/sites-available/php72.aplikasi.oke.conf /etc/nginx/sites-enabled ln -s /etc/nginx/sites-available/php73.aplikasi.oke.conf /etc/nginx/sites-enabled systemctl restart nginx systemctl status nginx

*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*

Server block 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 *location /sub-direktori* di setting server block.

Misalnya root */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 28 29 30 31 32 33 34 35 36 37 server {     listen 80;       server_name aplikasi.oke;     root /var/www/aplikasi.oke;       index index.php index.html index.htm;       location / {         try_files $uri $uri/ /index.php?$query_string;     }       location /v2 {         try_files $uri $uri/ /index.php?$query_string;           location ~ \.php$ {             try_files $fastcgi_script_name =404;             include fastcgi_params;             fastcgi_pass                    unix:/var/run/php/php7.2-fpm.sock;             fastcgi_index                   index.php;             fastcgi_param DOCUMENT_ROOT     $realpath_root;             fastcgi_param SCRIPT_FILENAME   $realpath_root$fastcgi_script_name;         }         }       location ~ \.php$ {         try_files $fastcgi_script_name =404;         include fastcgi_params;         fastcgi_pass                    unix:/var/run/php/php5.6-fpm.sock;         fastcgi_index                   index.php;         fastcgi_param DOCUMENT_ROOT     $realpath_root;         fastcgi_param SCRIPT_FILENAME   $realpath_root$fastcgi_script_name;     }       access_log /var/log/nginx/aplikasi.oke.access.log;     error_log /var/log/nginx/aplikasi.oke.error.log warn; }

Browsing PHP beda versi di direktori tertentu

Selamat mencoba 🙂

Leave a Reply

Your email address will not be published.