PostgreSQL یک سیستم مدیریت پایگاه داده رابطهای قابل اعتماد است که برای برنامههای وب، هوش تجاری و بارهای کاری ترکیبی مناسب است. این راهنما نصب روی Ubuntu/Debian، ساخت پایگاه داده و نخستین تنظیمات امنیتی را پوشش میدهد.
پیشنیازها
- VPS لینوکس (Ubuntu 20.04+ یا Debian 11+) با
sudo - دستکم 1 GB RAM (2 GB+ در صورت بار زیاد)
نصب
1. بهروزرسانی و نصب سرور
Bashsudo apt update && sudo apt upgrade -y sudo apt install -y postgresql postgresql-contrib
2. بررسی سرویس
Bashsudo systemctl status postgresql sudo systemctl enable postgresql
بهطور پیشفرض PostgreSQL فقط بهصورت محلی (127.0.0.1) گوش میدهد؛ این حالت زمانی مناسب است که برنامه شما روی همان VPS اجرا شود.
ساخت پایگاه داده و کاربر برنامه
به کاربر سیستمی postgres تغییر دهید و سپس کلاینت psql را باز کنید:
Bashsudo -u postgres psql
داخل psql (نامها و رمز عبور را تطبیق دهید):
SQLCREATE USER monapp WITH PASSWORD 'mot_de_passe_solide'; CREATE DATABASE monapp_db OWNER monapp; GRANT ALL PRIVILEGES ON DATABASE monapp_db TO monapp; \q
آزمایش اتصال:
Bashpsql -h 127.0.0.1 -U monapp -d monapp_db
رشته اتصال معمول
برنامههای شما اغلب از نشانیای شبیه این استفاده میکنند:
TEXTpostgresql://monapp:[email protected]:5432/monapp_db
امنیت (ضروری)
- رمز عبور قوی برای کاربر برنامه.
- PostgreSQL را بدون ضرورت مطلق در اینترنت در معرض دسترسی قرار ندهید. اگر ناچارید: فایروال سختگیرانه،
listen_addresses،pg_hba.confو ترجیحاً تونل یا VPN. - اگر سرویسهایی عمومی هستند، آن را با UFW و Fail2ban ترکیب کنید.
دسترسی از راه دور (جز در صورت نیاز واقعی اجتناب کنید)
فایل postgresql.conf را ویرایش کنید (مسیر متغیر است، اغلب /etc/postgresql/*/main/):
Configlisten_addresses = '*'
در pg_hba.conf یک خط محدودکننده اضافه کنید (مثال: فقط IP ثابت یک سرور دیگر):
TEXThost monapp_db monapp 203.0.113.50/32 scram-sha-256
سپس:
Bashsudo systemctl restart postgresql
بکاپها
برای یک بکاپ منطقی ساده:
Bashsudo -u postgres pg_dump monapp_db > backup_monapp.sql
بازیابی:
Bashsudo -u postgres psql monapp_db < backup_monapp.sql
بکاپهای منظم (cron) را به یک فضای ذخیرهسازی خارجی زمانبندی کنید.
عیبیابی
- Peer authentication failed: از
-h 127.0.0.1استفاده کنید تا بهجای سوکت یونیکس، TCP اجباری شود، یاpg_hba.confرا تنظیم کنید. - Connection refused: بررسی کنید سرویس فعال باشد و پورت درست را هدف گرفته باشید (
5432بهطور پیشفرض).