Instalasi PHP 8 Pada Web Server (Nginx)


Pada dokumen sebelumnya, kita telah belajar tahapan menyiapkan produk aplikasi berbasis web, mulai dari menyiapkan server dengan OS Linux Ubuntu Server 20.04 LTS, web server yang melayani request dari browser client, hingga mengamankannya dengan HTTPS. Selanjutnya, mari memahami lebih dalam, bagaimana menyiapkan interpreter/compiler bahasa pemrograman untuk mengembangkan aplikasi-nya, pada server yang akan kita bangun untuk produk inovasi di Program Digital Amoeba, dalam hal ini, secara khusus yaitu PHP.

PHP adalah bahasa pemrograman yang sangat populer digunakan untuk mengembangkan aplikasi berbasis web. Dibuat oleh programmer berkebangsaan Denmark – Kanada Rasmus Lerdorf pada tahun 1994. Referensi implementasi PHP saat ini dikelola oleh PHP Group. PHP awal nya merupakan singkatan dari Personal Home Page, namun disepakati oleh komunitas menjadi Hypertext Preprocessor.

Sumber: Wikipedia

Prerequisites

Sebelum dimulai, kita wajib mempersiapkan hal-hal berikut:

  • Domain teregistrasi yang di pointing ke server yang akan kita garap, petunjuk singkatnya menggunakan Cloudflare disini. Namun sebagai contoh, pada dokumen ini kita akan menggunakan domain.com.
  • Server yang telah terinstalasi OS Ubuntu 20.04 dengan akun selain root dengan akses sudo.
  • Nginx yang telah di install pada server. Petunjuk instalasi (untuk OS Ubuntu 20.04) dapat merujuk pada dokumen ini, dan lanjutannya disini.

Langkah 1 – Instalasi PHP

Masuk ke command line interface server melalui ssh dengan user root, menggunakan Terminal, atau Putty untuk pengguna Windows. Perintah login ssh via Terminal:

ssh user@ip_server

Untuk Putty, silahkan mengisi parameter server sesuai form yang disediakan oleh putty, lalu masukan password ketika diminta, atau dapat menggunakan private key (biasanya berupa ppk).

Pertama, kita siapkan dulu repository guna mengambil source code dari interpreter PHP:

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt upgrade

Selanjutnya install PHP 8, kita akan menggunakan versi PHP FPM, yang cocok dengan Nginx:

sudo apt install php8.0-fpm

Cek apakah instalasi berhasil dengan perintah:

php -v

Contoh output jika berhasil:

PHP 8.0.14 (fpm-fcgi) (built: Dec 20 2021 21:22:57)
Copyright (c) The PHP Group
Zend Engine v4.0.14, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies

Langkah 2 – Instalasi Extension PHP

Pada praktek-nya, biasanya kita akan membutuhkan extension PHP tertentu, pada kode program kita untuk beberapa kasus. Untuk melakukan instalasinya cukup mudah, jalankan perintah berikut:

sudo apt install php8.0-nama_extension

Kemudian secara otomatis akan melakukan update pada konfigurasi php.ini, jadi kita tidak perlu lagi mengubah php.ini.

Contoh melakukan instalasi extension yang paling sering digunakan:

sudo apt install php8.0-common php8.0-mysql php8.0-xml php8.0-curl php8.0-gd php8.0-imagick php8.0-cli php8.0-dev php8.0-imap php8.0-mbstring php8.0-opcache php8.0-soap php8.0-zip -y

Langkah 3 – Mengubah Konfigurasi Nginx

Langkah selanjutnya adalah mengkonfigurasi web server (Nginx), agar PHP dapat diproses oleh web server ketika melayani request dari browser client.

Buka kembali server block /etc/nginx/sites-available/domain.com yang telah dibuat, berdasarkan pembelajaran di dokumen sebelumnya. Lalu tambahkan block berikut:

server {
    ...
    index index.html index.htm index.php;
    ...
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.0-fpm.sock;
    }
    ...
}

Contoh lengkapnya (dengan SSL certificate yang di generate oleh certbot):

server {
    root /var/www/domain.com;
    index index.php index.html index.htm index.php;

    server_name domain.com www.domain.com;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
    }

    # managed by Certbot
    listen [::]:443 ssl ipv6only=on; 
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

server {
    if ($host = www.domain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    if ($host = domain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    listen [::]:80;

    server_name domain.com www.domain.com;
    return 404; # managed by Certbot
}

Langkah 4 – Validasi Instalasi

Langkah terakhir adalah, memastikan apakah instalasi dan konfigurasi yang telah kita lakukan sudah benar. Caranya, buat file index.php pada folder /var/www/domain.com dengan perintah:

sudo nano /var/www/domain.com/index.php

Lalu isi file tersebut dengan kode PHP berikut ini:

<?php
phpinfo();
?>

Jika tidak ada error, akan menampilkan informasi lengkap tentang PHP yang telah diinstall di server. Seperti pada gambar berikut:


Kesimpulan

Sampai disini kita telah belajar dan melakukan instalasi PHP dan instalasi extension-nya. Serta bagaimana menghubungkannya dengan web server, agar aplikasi yang ditulis dengan PHP, dapat diakses oleh browser client.