---
title: "Cara Pasang Nginx, MariaDB, dan PHP di Ubuntu 24.04"
description: "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."
url: "https://nivelva.com/insight/cara-pasang-nginx-mariadb-php-ubuntu-24-04"
category: "Server \u0026 Infrastruktur"
tags: ["nginx","mariadb","php","lemp","ubuntu 24.04"]
author: "Theresia Candiawan"
published: "2026-11-07T07:14:00+07:00"
updated: "2026-11-07T07:14:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Cara Pasang Nginx, MariaDB, dan PHP di Ubuntu 24.04

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

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

```bash
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

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

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

```bash
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](https://nivelva.com/insight/cara-setting-ufw-firewall-ubuntu-24-04-pemula). Buka IP server di browser, dan halaman "Welcome to nginx!" berarti Nginx sudah jalan.

### Langkah 3: Pasang dan amankan MariaDB

```bash
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:

```bash
sudo mariadb
```

```sql
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

```bash
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

```bash
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`:

```nginx
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:

```bash
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](https://nivelva.com/insight/cara-menyiapkan-server-block-nginx-banyak-domain).

### Langkah 7: Uji PHP

```bash
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:

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

### Langkah 8: Pasang SSL gratis

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

```bash
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:

| Setelan | Bawaan umum | Contoh untuk situs bisnis | Kegunaan |
|:--|:--|:--|:--|
| `upload_max_filesize` | 2M | 64M | Ukuran maksimal file yang diunggah |
| `post_max_size` | 8M | 64M | Ukuran maksimal data form, harus sama atau lebih besar dari upload |
| `memory_limit` | 128M | 256M | Memori maksimal per skrip |
| `max_execution_time` | 30 | 120 | Batas waktu eksekusi skrip (detik) |
| `date.timezone` | kosong | Asia/Jakarta | Zona 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](https://nivelva.com/insight/hardening-nginx-server-produksi), serta memasang backup database terjadwal. Bila masih menimbang web server lain, perbandingannya ada di [Nginx vs Apache vs LiteSpeed](https://nivelva.com/insight/nginx-apache-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

- <https://packages.ubuntu.com/noble/nginx>
- <https://packages.ubuntu.com/noble/mariadb-server>
- <https://packages.ubuntu.com/noble/php8.3-fpm>
- <https://nginx.org/en/docs/>
- <https://mariadb.com/kb/en/mariadb-secure-installation/>
- <https://certbot.eff.org/instructions>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/cara-pasang-nginx-mariadb-php-ubuntu-24-04
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
