PostgreSQL ერთი ბრძანებით დგება. ადამიანები დისტანციურ წვდომაში ცდებიან: 5432 პორტს მთელი სამყაროსთვის ხსნიან, პაროლს აყენებენ და შემდეგ უკვირთ, რატომ არის ჟურნალები შესვლის მცდელობებით სავსე. ეს გზამკვლევი Postgres-ს Ubuntu 24.04-ზე აყენებს, ქმნის ბაზას და აჩვენებს გარედან დაკავშირების ორ უსაფრთხო გზას.
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-ს მიეცით. ეს მოითხოვს, რომ ბაზის სერვერი გამოყოფილი 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
გახსენით firewall მხოლოდ ამ ერთი მისამართისთვის და გადატვირთეთ:
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 მთელი მანქანის ყოველდღიურ აღდგენის წერტილებს ამატებს.
კომენტარები
ჯერ არ არის კომენტარები. იყავით პირველი.