Lewati ke isi

Server & Infrastruktur

Cara Pasang Nginx, MariaDB, dan PHP di Ubuntu 24.04

Panduan langkah demi langkah memasang Nginx, MariaDB 10.11, dan PHP 8.3-FPM di Ubuntu 24.04, membuat server block, database, dan memasang SSL gratis.

Terbit 5 menit baca

Jawaban singkat

Di Ubuntu 24.04, pasang dengan apt install nginx mariadb-server php-fpm php-mysql, amankan MariaDB dengan mariadb-secure-installation, lalu buat server block Nginx yang meneruskan file .php ke socket /run/php/php8.3-fpm.sock. Tutup dengan SSL dari Certbot.

Daftar isi
  1. Apa yang perlu disiapkan?
  2. Langkah pemasangan
  3. Langkah 1: Perbarui sistem
  4. Langkah 2: Pasang Nginx dan buka firewall
  5. Langkah 3: Pasang dan amankan MariaDB
  6. Langkah 4: Buat database dan user untuk aplikasi
  7. Langkah 5: Pasang PHP-FPM dan ekstensi umum
  8. Langkah 6: Buat folder situs dan server block
  9. Langkah 7: Uji PHP
  10. Langkah 8: Pasang SSL gratis
  11. Menyesuaikan setelan PHP
  12. Setelah semuanya jalan, apa lagi?
  13. Pertanyaan yang sering diajukan
  14. Checklist akhir

Mau menjalankan WordPress, Laravel, atau aplikasi PHP buatan sendiri di VPS Ubuntu 24.04? Kombinasi yang paling sering dipakai adalah Nginx sebagai web server, MariaDB sebagai database, dan PHP-FPM untuk menjalankan kode PHP. Gabungan ini sering disebut LEMP.

Semua komponennya tersedia di repositori resmi Ubuntu 24.04 (Noble Numbat): Nginx 1.24, MariaDB 10.11, dan PHP 8.3. Kamu tidak perlu menambah repositori pihak ketiga. Langkah di bawah memakai user dengan akses sudo dan VPS yang masih bersih.

Apa yang perlu disiapkan?

  • VPS Ubuntu 24.04 dengan user sudo, bukan root langsung.
  • Domain yang diarahkan ke IP server (record A untuk contoh.com dan www), dibutuhkan saat memasang SSL.
  • RAM minimal yang wajar untuk aplikasimu. Situs PHP kecil umumnya cukup dengan 1 sampai 2 GB, tapi ukur sesuai beban nyata.

Langkah pemasangan

Langkah 1: Perbarui sistem

sudo apt update && sudo apt upgrade -y

Bila ada pembaruan kernel, reboot dulu agar server berjalan dengan versi terbaru.

Langkah 2: Pasang Nginx dan buka firewall

sudo apt install -y nginx
sudo systemctl enable --now nginx

Bila UFW aktif, izinkan HTTP dan HTTPS sekaligus dengan profil bawaan Nginx:

sudo ufw allow 'Nginx Full'
sudo ufw status

Pastikan aturan SSH tetap ada sebelum UFW diaktifkan. Dasarnya dibahas di setting UFW di Ubuntu 24.04. Buka IP server di browser, dan halaman "Welcome to nginx!" berarti Nginx sudah jalan.

Langkah 3: Pasang dan amankan MariaDB

sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb
sudo mariadb-secure-installation

Skrip pengamanan menanyakan beberapa hal. Jawaban yang umum dipakai:

  • Password root saat ini: tekan Enter (masih kosong).
  • Pindah ke unix_socket authentication: boleh n, karena root di Ubuntu sudah memakai autentikasi socket.
  • Ganti password root: opsional, karena root hanya bisa login lewat sudo mariadb.
  • Hapus user anonim: Y.
  • Larang login root dari jarak jauh: Y.
  • Hapus database test: Y.
  • Muat ulang tabel hak akses: Y.

Langkah 4: Buat database dan user untuk aplikasi

Jangan memakai root untuk aplikasi. Buat user khusus:

sudo mariadb
CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'ganti-dengan-password-kuat';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
EXIT;

User ini hanya bisa mengakses app_db dan hanya dari server itu sendiri.

Langkah 5: Pasang PHP-FPM dan ekstensi umum

sudo apt install -y php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip php-intl
php -v
systemctl status php8.3-fpm

Paket php-fpm di Ubuntu 24.04 memasang PHP 8.3. Jangan memasang paket php saja tanpa -fpm, karena paket itu bisa ikut menarik Apache dan modul PHP-nya, yang tidak dibutuhkan bersama Nginx.

Langkah 6: Buat folder situs dan server block

sudo mkdir -p /var/www/contoh.com
sudo chown -R $USER:www-data /var/www/contoh.com

Buat file konfigurasi /etc/nginx/sites-available/contoh.com:

server {
    listen 80;
    listen [::]:80;
    server_name contoh.com www.contoh.com;

    root /var/www/contoh.com;
    index index.php index.html;

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

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

    location ~ /\.(?!well-known) {
        deny all;
    }
}

Aktifkan dan uji:

sudo ln -s /etc/nginx/sites-available/contoh.com /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx

Baris try_files di atas cocok untuk aplikasi dengan satu pintu masuk index.php seperti WordPress dan Laravel. Untuk Laravel, root diarahkan ke subfolder public. Bila nanti satu server menampung beberapa domain, ikuti pola di server block Nginx untuk banyak domain.

Langkah 7: Uji PHP

echo "<?php phpinfo();" > /var/www/contoh.com/info.php

Buka http://contoh.com/info.php. Bila tampil halaman informasi PHP dengan baris Server API: FPM/FastCGI, Nginx dan PHP sudah tersambung. Hapus file ini segera setelah dicek, karena isinya membuka detail konfigurasi server:

rm /var/www/contoh.com/info.php

Langkah 8: Pasang SSL gratis

Setelah domain diarahkan ke IP server, pasang sertifikat Let's Encrypt:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d contoh.com -d www.contoh.com

Certbot menambahkan konfigurasi HTTPS ke server block dan memasang timer perpanjangan otomatis. Uji perpanjangannya dengan sudo certbot renew --dry-run.

Menyesuaikan setelan PHP

File konfigurasi PHP untuk FPM ada di /etc/php/8.3/fpm/php.ini. Setelan yang sering diubah:

SetelanBawaan umumContoh untuk situs bisnisKegunaan
upload_max_filesize2M64MUkuran maksimal file yang diunggah
post_max_size8M64MUkuran maksimal data form, harus sama atau lebih besar dari upload
memory_limit128M256MMemori maksimal per skrip
max_execution_time30120Batas waktu eksekusi skrip (detik)
date.timezonekosongAsia/JakartaZona waktu fungsi tanggal PHP

Setelah mengubah, jalankan sudo systemctl restart php8.3-fpm. Bila menaikkan batas upload, tambahkan juga client_max_body_size 64M; di blok server Nginx, karena Nginx punya batas sendiri (bawaan 1 MB).

Setelah semuanya jalan, apa lagi?

Server LEMP yang baru jadi belum siap produksi sepenuhnya. Langkah lanjutannya adalah memperketat Nginx (header keamanan, menyembunyikan versi, membatasi metode), dibahas di hardening Nginx untuk server produksi, serta memasang backup database terjadwal. Bila masih menimbang web server lain, perbandingannya ada di Nginx vs Apache vs LiteSpeed.

Pertanyaan yang sering diajukan

Bagaimana kalau Nginx menampilkan 502 Bad Gateway?

Biasanya PHP-FPM tidak berjalan atau path socket di fastcgi_pass salah. Cek dengan systemctl status php8.3-fpm dan pastikan file /run/php/php8.3-fpm.sock ada.

Apakah bisa memakai MySQL alih-alih MariaDB?

Bisa. Ganti paket mariadb-server dengan mysql-server. Perintah SQL untuk membuat database dan user di langkah 4 tetap sama.

Kenapa file PHP malah terunduh, bukan dijalankan?

Blok location untuk file .php belum aktif atau konfigurasi belum di-reload. Jalankan sudo nginx -t lalu sudo systemctl reload nginx, dan pastikan server block yang benar ada di sites-enabled.

Bagaimana cara memasang versi PHP selain 8.3?

Repositori resmi Ubuntu 24.04 hanya menyediakan PHP 8.3. Versi lain membutuhkan repositori tambahan dan pengaturan beberapa pool FPM sekaligus.

Checklist akhir

  • sudo nginx -t bersih dan situs terbuka lewat HTTPS.
  • MariaDB sudah diamankan, aplikasi memakai user khusus, bukan root.
  • File info.php sudah dihapus.
  • Port 80 dan 443 terbuka, port 3306 tidak dibuka ke internet.
  • sudo certbot renew --dry-run berhasil.

Sumber & referensi

Baca juga