۱. نصب و مقداردهی
sudo dnf install -y postgresql-server postgresql-contrib
sudo postgresql-setup --initdb
sudo systemctl enable --now postgresql
psql --versionدادهها در /var/lib/pgsql/data هستند.
۲. کاربر و پایگاه داده
sudo -u postgres psql <<'SQL'
CREATE ROLE app LOGIN PASSWORD 'change-me';
CREATE DATABASE appdb OWNER app;
SQL۳. احراز هویت
در /var/lib/pgsql/data/pg_hba.conf، قانون اتصال از شبکه را با روش scram-sha-256 اضافه کنید:
# TYPE DATABASE USER ADDRESS METHOD
host appdb app 192.168.10.0/24 scram-sha-256برای دسترسی از شبکه، در /var/lib/pgsql/data/postgresql.conf این خط را بگذارید:
listen_addresses = 'localhost,192.168.10.25'sudo systemctl restart postgresql
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" service name="postgresql" accept'
sudo firewall-cmd --reload
psql -h 192.168.10.25 -U app appdb -c 'select version();'۴. نکتهی مهم: ارتقای Fedora
Fedora هر شش ماه یک نسخهی جدید دارد و گاهی نسخهی اصلی PostgreSQL را هم بالا میبرد (مثلاً از ۱۶ به ۱۷). فایلهای دادهی نسخهی قدیم با نسخهی جدید سازگار نیستند و سرویس بالا نمیآید. اگر بعد از ارتقای Fedora پیام database files are incompatible with server دیدید:
sudo dnf install -y postgresql-upgrade
sudo postgresql-setup --upgrade
sudo systemctl start postgresql
sudo -u postgres vacuumdb --all --analyze-in-stagespostgresql-upgrade باینریهای نسخهی قبلی را دارد و pg_upgrade را اجرا میکند. پیش از ارتقای Fedora حتماً از دادهها dump بگیرید:
sudo -u postgres pg_dumpall > /root/pg-before-upgrade.sql۵. بکاپ روزانه
sudo mkdir -p /var/backups/pg && sudo chown postgres /var/backups/pg
echo '30 2 * * * postgres pg_dump -Fc appdb > /var/backups/pg/appdb-$(date +\%F).dump && find /var/backups/pg -mtime +14 -delete' | sudo tee /etc/cron.d/pg-backupاگر cron نصب نیست: sudo dnf install -y cronie && sudo systemctl enable --now crond.