Panduan Lengkap: Instalasi PHP 8.3, Nginx, dan SSL di Debian/Ubuntu

PHP 8.3 Nginx SSL Setup

Panduan ini akan memandu Anda melakukan setup server web dari nol: mulai dari instalasi PHP 8.3, Composer, konfigurasi Nginx sebagai web server, hingga mengamankan situs dengan sertifikat SSL gratis dari Let's Encrypt. Cocok digunakan pada server berbasis Debian atau Ubuntu (termasuk VPS).


1. Instalasi PHP 8.3

Secara default, repositori bawaan Debian/Ubuntu sering kali belum menyediakan versi PHP terbaru. Karena itu, kita akan menambahkan repositori pihak ketiga yang terpercaya dan aktif dirawat, yaitu PPA milik Ondřej Surý.

Langkah 1: Install tools pendukung repositori

sudo apt-get install software-properties-common

Paket ini dibutuhkan agar sistem bisa menambah dan mengelola repositori tambahan (PPA).

Langkah 2: Tambahkan repositori PHP

sudo add-apt-repository ppa:ondrej/php

Perintah ini menambahkan PPA Ondřej Surý, sumber PHP yang paling umum digunakan karena selalu update dan stabil.

Langkah 3: Update daftar paket

sudo apt-get update

Wajib dilakukan setiap kali menambah repositori baru, agar sistem mengenali paket-paket yang tersedia di dalamnya.

Langkah 4: Install PHP 8.3

sudo apt-get install php8.3

Khusus pengguna Debian 12: kadang perintah add-apt-repository tidak berjalan mulus di Debian. Jika mengalami kendala, tambahkan repositori secara manual dengan langkah berikut:

apt -y install lsb-release apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list

Baris terakhir otomatis mendeteksi versi Debian yang digunakan lewat $(lsb_release -sc), sehingga repositori yang ditambahkan selalu sesuai.


2. Instalasi Ekstensi PHP yang Umum Dibutuhkan

Setelah PHP terpasang, sebagian besar framework atau aplikasi modern (seperti Laravel) membutuhkan beberapa ekstensi tambahan agar berjalan optimal.

sudo apt install -y php8.3 php8.3-cli php8.3-mbstring php8.3-xml php8.3-bcmath php8.3-zip php8.3-tokenizer php8.3-curl php8.3-intl php8.3-sqlite3 php8.3-xmlrpc unzip curl

3. Instalasi Composer

Composer adalah dependency manager untuk PHP - alat wajib untuk mengelola library dan package di proyek PHP modern (Laravel, Symfony, dll).

Langkah 1: Unduh installer

cd ~
curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php

Langkah 2: Verifikasi keaslian installer

Demi keamanan, selalu verifikasi hash SHA-384 installer sebelum menjalankannya, untuk memastikan file tidak rusak atau dimodifikasi pihak tak bertanggung jawab.

HASH=`curl -sS https://composer.github.io/installer.sig`

php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Jika hasilnya Installer verified, artinya file aman untuk dijalankan. Jika Installer corrupt, file installer otomatis dihapus dan sebaiknya diunduh ulang.

Langkah 3: Jalankan installer

sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

Setelah ini, Composer bisa dipanggil dari direktori mana pun dengan perintah composer.


4. Setup Nginx sebagai Web Server

Langkah 1: Install Nginx

apt install nginx

Langkah 2: Buat direktori website

Ganti domain.com dengan nama domain Anda sendiri.

mkdir -p /var/www/domain.com
chown root:root -R /var/www/domain.com
chmod 755 -R /var/www/domain.com

Langkah 3: Buat konfigurasi server block

nano /etc/nginx/sites-available/domain.com

Contoh konfigurasi untuk aplikasi PHP:

server {
    server_name domain.com www.domain.com;
    root /var/www/domain.com/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Penjelasan bagian penting:

Contoh konfigurasi untuk aplikasi Node.js (reverse proxy):

server {
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name domain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_cache_bypass $http_upgrade;
    }
}

Konfigurasi ini meneruskan (proxy) semua request ke aplikasi Node.js yang berjalan di localhost:3000 - termasuk mendukung koneksi WebSocket lewat header Upgrade dan Connection.

ln -s /etc/nginx/sites-available/domain.com /etc/nginx/sites-enabled/domain.com

Jika ada konfigurasi default bawaan Nginx, sebaiknya dihapus agar tidak terjadi konflik:

rm /etc/nginx/sites-enabled/default

Langkah 5: Uji dan restart Nginx

nginx -t
systemctl restart nginx

nginx -t akan memeriksa apakah ada kesalahan sintaks pada konfigurasi sebelum diterapkan. Jika hasilnya syntax is ok dan test is successful, aman untuk restart.


5. Setup SSL dengan Certbot (Let's Encrypt)

Langkah 1: Install Certbot

sudo apt install certbot python3-certbot-nginx

Certbot adalah tools gratis dan open-source untuk mengurus penerbitan serta pembaruan sertifikat SSL secara otomatis.

Langkah 2: Sesuaikan aturan firewall (UFW)

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
sudo ufw status

Perintah di atas membuka akses HTTP dan HTTPS, sekaligus menghapus aturan lama yang hanya mengizinkan HTTP saja.

Langkah 3: Terbitkan sertifikat SSL

sudo certbot --nginx -d example.com -d www.example.com

Ganti example.com dan www.example.com dengan domain Anda. Certbot akan otomatis mengonfigurasi ulang Nginx agar situs berjalan dengan HTTPS.

Langkah 4: Pastikan auto-renewal aktif

Sertifikat Let's Encrypt hanya berlaku 90 hari, sehingga proses perpanjangan otomatis wajib dipastikan berjalan.

sudo systemctl status certbot.timer

Cek status timer yang bertugas memperbarui sertifikat secara berkala.

sudo certbot renew --dry-run

Perintah ini mensimulasikan proses renewal tanpa benar-benar memperbarui sertifikat - cara aman untuk memastikan mekanisme auto-renewal berfungsi dengan baik.


Ringkasan Alur

  1. Tambahkan repositori PHP → install PHP 8.3 beserta ekstensinya.
  2. Install Composer untuk mengelola dependency proyek PHP.
  3. Install dan konfigurasikan Nginx sebagai web server, arahkan ke folder project.
  4. Amankan situs dengan sertifikat SSL gratis dari Certbot/Let's Encrypt.
  5. Pastikan auto-renewal SSL berjalan agar sertifikat tidak pernah kedaluwarsa.

Dengan langkah-langkah di atas, server siap menjalankan aplikasi PHP (maupun Node.js) secara aman dengan koneksi HTTPS.

fikri

© 2026 Fikri Rudiansyah - Personal Blog

Facebook 𝕏 GitHub