Skip to content

Postgresql 17

Berikut adalah panduan lengkap dan to-the-point untuk menginstal PostgreSQL 17 di Ubuntu 24.04 dan mengkonfigurasinya agar siap digunakan dengan Laravel 12.

Laravel 12 kemungkinan besar berjalan optimal di PHP 8.3 atau PHP 8.4, jadi panduan ini juga mencakup instalasi driver PHP yang sesuai.

1. Menambahkan Repository PostgreSQL Resmi

Ubuntu 24.04 mungkin belum menyertakan PostgreSQL 17 secara default di repository utamanya. Kita akan menggunakan repository resmi PostgreSQL (PGDG) untuk mendapatkan versi terbaru dan stabil.

bash
# 1. Install dependensi yang diperlukan
sudo apt update
sudo apt install curl gpg gnupg2 software-properties-common apt-transport-https lsb-release ca-certificates

# 2. Tambahkan GPG Key resmi PostgreSQL
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg

wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/trusted.gpg.d/postgresql.asc

# 3. Tambahkan repository PostgreSQL ke source list
echo "deb [arch=$(dpkg --print-architecture)] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

2. Install PostgreSQL 17 dan Ekstensi PHP

Setelah repository ditambahkan, update daftar paket dan install PostgreSQL 17 beserta driver PHP-nya.

bash
# 1. Update package list
sudo apt update

# 2. Install PostgreSQL 17
sudo apt install postgresql-17 postgresql-client-17 -y

# 3. Install Driver PHP untuk PostgreSQL (Asumsi menggunakan PHP 8.3 untuk Laravel 12)
# Jika menggunakan PHP 8.4, ganti php8.3-pgsql menjadi php8.4-pgsql
sudo apt install php8.3-pgsql

Verifikasi: Pastikan service berjalan dengan perintah systemctl status postgresql.

3. Membuat User dan Database untuk Laravel

PostgreSQL menggunakan konsep "Role". Kita perlu membuat user khusus untuk aplikasi Laravel agar tidak menggunakan user postgres (root-nya database) demi keamanan.

Masuk ke shell PostgreSQL:

bash
sudo -u postgres psql

Jalankan perintah SQL berikut di dalam shell (ganti password_rahasia dengan password aman Anda):

sql
-- 1. Membuat Database
CREATE DATABASE app_laravel;

-- 2. Membuat User baru
CREATE USER akhmad WITH PASSWORD 'password_rahasia';

-- 3. Memberikan hak akses database ke user tersebut
GRANT ALL PRIVILEGES ON DATABASE app_laravel TO akhmad;

-- 4. (Opsional tapi Penting untuk Laravel 12/Postgres 15+)
-- Berikan izin user untuk membuat tabel di schema public
ALTER DATABASE app_laravel OWNER TO akhmad;
\c app_laravel
GRANT ALL ON SCHEMA public TO akhmad;

-- 5. Keluar
\q

4. Konfigurasi Autentikasi (Opsional tapi Disarankan)

Secara default, PostgreSQL di Linux sering menggunakan autentikasi peer (login berdasarkan user OS). Agar Laravel bisa login menggunakan password, pastikan metode autentikasinya adalah scram-sha-256 atau md5.

Edit file konfigurasi:

bash
sudo nano /etc/postgresql/17/main/pg_hba.conf

Cari baris yang mengatur koneksi lokal IPv4/IPv6 dan ubah peer menjadi scram-sha-256 (atau md5):

bash
# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     scram-sha-256
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             ::1/128                 scram-sha-256

Restart service setelah perubahan:

bash
sudo systemctl restart postgresql

5. Konfigurasi di Laravel 12 (.env)

Buka file .env di project Laravel Anda dan sesuaikan bagian database:

ini
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=app_laravel
DB_USERNAME=akhmad
DB_PASSWORD=password_rahasia

6. Testing Koneksi

Terakhir, jalankan perintah migrasi dari terminal project Laravel Anda untuk memastikan koneksi berhasil:

bash
php artisan migrate

Jika berhasil, tabel-tabel bawaan Laravel akan terbuat di database app_laravel.