−25%

በWindows ዓመታዊ ክፍያ ላይ፣ እስከ ኦክቶበር 31። ዕቅዶችን ይመልከቱ

EQVPS

በVPS ላይ PostgreSQL መጫን እና በደህንነት መገናኘት

በUbuntu ላይ PostgreSQL 16ን ይጫኑ፣ database እና ተጠቃሚ ይፍጠሩ፣ እና ፖርት 5432ን ለኢንተርኔት ሳያጋልጡ ከርቀት ይገናኙ፦ በSSH tunnel ወይም በፈቃድ ዝርዝር።

PostgreSQL በአንድ ትዕዛዝ ይጫናል። ሰዎች የሚሳሳቱት በርቀት መዳረሻ ላይ ነው፦ ፖርት 5432ን ለመላው ዓለም ይከፍታሉ፣ የይለፍ ቃል ያስቀምጣሉ፣ ከዚያ logs ለምን በመግቢያ ሙከራዎች እንደሞሉ ይገረማሉ። ይህ መመሪያ Postgresን በUbuntu 24.04 ላይ ይጭናል፣ database ይፈጥራል፣ እና ከውጭ ለመገናኘት ሁለት ደህንነቱ የተጠበቁ መንገዶችን ያሳያል።

1. መጫን

apt update && apt install -y postgresql
systemctl status postgresql --no-pager

በUbuntu 24.04 ላይ ይህ PostgreSQL 16 ነው። በነባሪ የሚያዳምጠው localhostን ብቻ ነው፤ ምክንያት ከሌለዎት እንዲሁ ይተዉት።

2. ተጠቃሚ እና database ይፍጠሩ

sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL

በተመሳሳይ server ላይ ያሉ apps በpostgresql://app:PASSWORD@localhost:5432/appdb ይገናኛሉ።

3. ከላፕቶፕዎ ይገናኙ፦ SSH tunnel (የሚመከር)

የሚከፈት ምንም ነገር የለም፣ በserverሩ ላይ የሚዋቀር ምንም ነገር የለም። tunnelኡ አካባቢያዊ ፖርትን በ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

tunnelኡ ክፍት እስከሆነ ድረስ የdatabase clientዎን ወደ localhost:5433 ያመልክቱ። SSH ሁሉንም ነገር ያመስጥራል እና ፖርት 5432 ለኢንተርኔት ተዘግቶ ይቆያል። እንደ DBeaver እና pgAdmin ያሉ ግራፊክ tools ተመሳሳዩን የሚያደርግ «SSH tunnel» tab አላቸው።

4. ለሌላ server ቀጥተኛ መዳረሻ (የፈቃድ ዝርዝር)

በሌላ ቦታ ያለ የapp server በቀጥታ መገናኘት ካለበት የእሱን IP ብቻ ይፍቀዱ። ይህ የdatabase serverሩ 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

firewallኡን ለዚያ አንድ አድራሻ ብቻ ይክፈቱ እና ዳግም ያስጀምሩ፦

ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql

hostssl የተመሰጠሩ ግንኙነቶችን ያስገድዳል፤ የUbuntu package self-signed certificate አለው፣ ስለዚህ clients በsslmode=require መገናኘት አለባቸው።

5. ምክንያታዊ የመነሻ ቅንብሮች

2 GB RAM ላለው server፣ በpostgresql.conf ውስጥ፦

shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB

ከለውጡ በኋላ ዳግም ያስጀምሩ። ለአብዛኞቹ ትናንሽ apps ይህ በቂ ነው፤ እውነተኛ queries ካዩ በኋላ በጥንቃቄ ያስተካክሉ።

6. Backups

በየሌሊቱ አንድ dump፣ ለአንድ ሳምንት የሚቀመጥ፦

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 የሚመለስ የተጨመቀ dump ይፈጥራል። dumpsን ከserverሩ ውጭም ይቅዱ፤ Managed Backups የሙሉውን ማሽን ዕለታዊ የመመለሻ ነጥቦችን ይጨምራሉ።

ተዛማጅ

FAQ

ፖርት 5432ን ለኢንተርኔት መክፈት አለብኝ?

ባይከፍቱ ይሻላል። ክፍት የdatabase ፖርቶች ያለማቋረጥ ይቃኛሉ እና የይለፍ ቃል መገመቻ ጥቃቶች ይደርሱባቸዋል። በSSH tunnel ይገናኙ፣ ወይም የapp server በቀጥታ መገናኘት ካለበት የእሱን IP ብቻ፣ በpg_hba.conf እና በfirewall ውስጥ፣ ይፍቀዱ።

በNAT ዕቅድ ላይ PostgreSQL መጠቀም እችላለሁ?

አዎ። በተመሳሳይ server ላይ ያሉ apps በአካባቢያዊ ሁኔታ ይገናኛሉ፣ እርስዎም በግል SSH ፖርትዎ ላይ በSSH tunnel ከላፕቶፕዎ databaseኡን ይደርሳሉ። የNAT ዕቅድ የማይችለው ከሌሎች servers ወደ 5432 ቀጥተኛ ገቢ ግንኙነቶችን መቀበል ነው።

PostgreSQL ምን ያህል RAM ያስፈልገዋል?

በጥቂት መቶ megabytes ይሰራል እና የሰጡትን ሁሉ እንደ cache ይጠቀማል። የተለመደ መነሻ ነጥብ shared_buffersን ወደ RAM 25% ያህል ማዘጋጀት ነው። ለትንሽ app database 2 GB RAM ያለው server ከበቂ በላይ ነው።

የdatabase backup እንዴት እወስዳለሁ?

pg_dumpን በcustom ቅርጸት ('pg_dump -Fc') ይጠቀሙ እና ከcron ያሂዱት። ከserverሩ ውጭም ቅጂዎችን ያስቀምጡ። Managed Backups የሙሉውን server ዕለታዊ የመመለሻ ነጥቦችን ይጨምራሉ።

የትኛውን የPostgreSQL ስሪት አገኛለሁ?

Ubuntu 24.04 ከPostgreSQL 16 ጋር ይመጣል፣ Debian 12 ደግሞ ከ15 ጋር። ለአዲስ ዋና ስሪት ይፋዊውን የPostgreSQL apt repository (apt.postgresql.org) ያክሉ።

አስተያየቶች

እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።

አስተያየት ይተዉ

አስተያየቶች ከመታየታቸው በፊት ይጣራሉ።