PostgreSQL ایک کمانڈ میں انسٹال ہوتا ہے۔ لوگ غلطی ریموٹ رسائی میں کرتے ہیں: پورٹ 5432 پوری دنیا کے لیے کھول دیتے ہیں، پاس ورڈ لگاتے ہیں، پھر حیران ہوتے ہیں کہ لاگز لاگ اِن کی کوششوں سے کیوں بھرے ہیں۔ یہ گائیڈ Ubuntu 24.04 پر Postgres انسٹال کرتی ہے، ایک ڈیٹا بیس بناتی ہے، اور باہر سے جڑنے کے دو محفوظ طریقے دکھاتی ہے۔
1. انسٹال
apt update && apt install -y postgresql
systemctl status postgresql --no-pager
Ubuntu 24.04 پر یہ PostgreSQL 16 ہے۔ بطور ڈیفالٹ یہ صرف localhost پر سنتا ہے؛ جب تک کوئی وجہ نہ ہو اسے ایسے ہی رکھیں۔
2. صارف اور ڈیٹا بیس بنائیں
sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL
اسی سرور کی ایپس postgresql://app:PASSWORD@localhost:5432/appdb سے جڑتی ہیں۔
3. لیپ ٹاپ سے جڑیں: SSH ٹنل (تجویز کردہ)
کچھ کھولنا نہیں، سرور پر کچھ کنفیگر نہیں کرنا۔ ٹنل SSH کے ذریعے ایک مقامی پورٹ فارورڈ کرتا ہے:
ssh -N -L 5433:localhost:5432 root@203.0.113.10
NAT پلان پر پینل سے اپنا ذاتی SSH پورٹ شامل کریں:
ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host
جب تک ٹنل کھلا ہے، اپنے ڈیٹا بیس کلائنٹ کو localhost:5433 کی طرف کریں۔ SSH سب کچھ انکرپٹ کرتا ہے اور پورٹ 5432 انٹرنیٹ کے لیے بند رہتا ہے۔ DBeaver اور pgAdmin جیسے گرافیکل ٹولز میں «SSH tunnel» ٹیب ہوتا ہے جو یہی کام کرتا ہے۔
4. دوسرے سرور کے لیے براہ راست رسائی (اجازت فہرست)
اگر کہیں اور موجود ایپ سرور کو براہ راست جڑنا ہو تو صرف اس کا IP اجازت دیں۔ اس کے لیے ڈیٹا بیس سرور کا dedicated IP والے پلان پر ہونا ضروری ہے، کیونکہ NAT پلانز SSH کے سوا آنے والے کنکشنز قبول نہیں کرتے۔
/etc/postgresql/16/main/postgresql.conf میں:
listen_addresses = '*'
/etc/postgresql/16/main/pg_hba.conf کے آخر میں:
hostssl appdb app 198.51.100.20/32 scram-sha-256
فائر وال صرف اسی ایک ایڈریس کے لیے کھولیں اور ری اسٹارٹ کریں:
ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql
hostssl انکرپٹڈ کنکشنز لازمی کرتا ہے؛ Ubuntu پیکیج میں self-signed سرٹیفکیٹ آتا ہے، اس لیے کلائنٹس کو sslmode=require کے ساتھ جڑنا چاہیے۔
5. معقول ابتدائی سیٹنگز
2 GB RAM والے سرور کے لیے، postgresql.conf میں:
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB
تبدیلی کے بعد ری اسٹارٹ کریں۔ زیادہ تر چھوٹی ایپس کے لیے یہ کافی ہے؛ حقیقی کوئریز دیکھنے کے بعد باریک ٹیوننگ کریں۔
6. بیک اپس
ہر رات ایک ڈمپ، ایک ہفتہ رکھا جاتا ہے:
mkdir -p /var/backups/pg && chown postgres /var/backups/pg
cat > /etc/cron.d/pg-backup <<'EOF'
30 3 * * * postgres pg_dump -Fc appdb > /var/backups/pg/appdb-$(date +\%u).dump
EOF
-Fc ایک کمپریسڈ ڈمپ بناتا ہے جسے pg_restore سے ریسٹور کیا جاتا ہے۔ ڈمپس سرور سے باہر بھی کاپی کریں؛ Managed Backups پوری مشین کے روزانہ ریسٹور پوائنٹس شامل کرتے ہیں۔
تبصرے
ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔