۱. نصب
در FreeBSD هر نسخهی اصلی PostgreSQL بستهی جداگانه دارد. نسخه را آگاهانه انتخاب کنید:
pkg search -x '^postgresql[0-9]+-server'
pkg install -y postgresql17-server postgresql17-contrib۲. مقداردهی و اجرا
sysrc postgresql_enable=YES
service postgresql initdb
service postgresql start
service postgresql statusدادهها در /var/db/postgres/data17 هستند و کاربر سیستمی postgres است.
۳. روی ZFS (اختیاری ولی توصیهشده)
اگر سرور ZFS دارد، پیش از initdb یک dataset اختصاصی با recordsize کوچک بسازید:
zfs create -o recordsize=16k -o compression=lz4 -o atime=off -o mountpoint=/var/db/postgres zroot/postgres
chown postgres:postgres /var/db/postgres۴. کاربر و پایگاه داده
su -l postgres -c "psql" <<'SQL'
CREATE ROLE app LOGIN PASSWORD 'change-me';
CREATE DATABASE appdb OWNER app;
SQL۵. دسترسی شبکه
/var/db/postgres/data17/postgresql.conf:
listen_addresses = 'localhost,192.168.10.30'
password_encryption = scram-sha-256/var/db/postgres/data17/pg_hba.conf:
host appdb app 192.168.10.0/24 scram-sha-256service postgresql restartبا فعال بودن PF، پورت را فقط برای شبکهی داخلی باز کنید. در /etc/pf.conf:
pass in on vtnet0 proto tcp from 192.168.10.0/24 to any port 5432pfctl -nf /etc/pf.conf && pfctl -f /etc/pf.conf۶. بکاپ
mkdir -p /var/backups/pg && chown postgres /var/backups/pg
echo '30 2 * * * postgres /usr/local/bin/pg_dump -Fc appdb > /var/backups/pg/appdb-$(date +\%F).dump' >> /etc/crontabارتقای نسخهی اصلی
بستهی postgresql17-server هیچوقت خودکار به ۱۸ ارتقا پیدا نمیکند. برای ارتقا باید با pg_dumpall بکاپ بگیرید، بستهی جدید را نصب کنید، initdb بزنید و داده را بازیابی کنید (یا از pg_upgrade استفاده کنید).