ฉันประสบความสำเร็จในการคอมไพล์และติดตั้ง PostgreSQL (17.4) เวอร์ชันล่าสุดบน Ubuntu ARM32

คำสั่งในบทความนี้ส่วนใหญ่มาจากเอกสารอย่างเป็นทางการของ PostgreSQL ฉันได้ทดสอบคำสั่งแต่ละคำสั่งในบทความนี้แล้ว

สามารถดูระบบที่สามารถติดตั้งได้สำเร็จได้ที่นี่ PostgreSQL build farm

คอมไพล์และติดตั้ง PostgreSQL 17.4

1. สร้างไดเร็กทอรีและเข้าไปในไดเร็กทอรี

mkdir postgresql && cd postgresql
  • mkdir postgresql: สร้างไดเร็กทอรีใหม่ชื่อ postgresql
  • cd postgresql: เข้าไปในไดเร็กทอรี postgresql ที่เพิ่งสร้าง

2. ดาวน์โหลดซอร์สโค้ด PostgreSQL

wget https://ftp.postgresql.org/pub/source/v17.4/postgresql-17.4.tar.bz2
  • wget: ดาวน์โหลดไฟล์จาก URL ที่ระบุ
  • https://..../postgresql-17.4.tar.bz2: ลิงก์ดาวน์โหลดแพ็กเกจซอร์สโค้ดที่บีบอัดของ PostgreSQL เวอร์ชัน 17.4 หากลิงก์ใช้งานไม่ได้ คุณสามารถค้นหาลิงก์ใหม่ได้ด้วยตัวเอง

3. แตกไฟล์แพ็กเกจซอร์สโค้ด

tar xjf postgresql-17.4.tar.bz2
  • tar: ใช้สำหรับจัดการไฟล์บีบอัด .tar

  • xjf: ตัวเลือกสำหรับการแตกไฟล์ .tar:

    • x: แตกไฟล์
    • j: ใช้รูปแบบการบีบอัด bzip2 (.bz2)
    • f: ระบุไฟล์ที่จะแตก
  • postgresql-17.4.tar.bz2: ชื่อไฟล์ที่จะแตก

4. เข้าไปในไดเร็กทอรีซอร์สโค้ดที่แตกออกมา

cd postgresql-17.4
  • เข้าไปในไดเร็กทอรีซอร์สโค้ด PostgreSQL 17.4 ที่แตกออกมา

5. ติดตั้งแพ็กเกจที่ต้องใช้

sudo apt install libssl-dev libsystemd-dev libxml2-dev libreadline-dev
  • sudo apt install: ใช้ตัวจัดการแพ็กเกจ apt เพื่อติดตั้งแพ็กเกจ
  • libssl-dev, libsystemd-dev, libxml2-dev, libreadline-dev: ติดตั้งไลบรารีการพัฒนาที่จำเป็นสำหรับการคอมไพล์ PostgreSQL ได้แก่ ไลบรารี SSL, ไลบรารี Systemd, ไลบรารี XML และไลบรารี Readline

6. กำหนดค่าตัวเลือกการคอมไพล์

./configure --prefix=/usr/local/pgsql --with-openssl --with-libxml --with-systemd
  • ./configure: เตรียมสภาพแวดล้อมการคอมไพล์ PostgreSQL
  • --prefix=/usr/local/pgsql: ระบุไดเร็กทอรีการติดตั้ง PostgreSQL เป็น /usr/local/pgsql
  • --with-openssl: เปิดใช้งานการรองรับ OpenSSL
  • --with-libxml: เปิดใช้งานการรองรับ XML
  • --with-systemd: เปิดใช้งานการรองรับ Systemd

7. คอมไพล์ซอร์สโค้ด

make -j$(nproc)
  • make: เริ่มต้นกระบวนการคอมไพล์
  • -j$(nproc): ใช้ nproc (จำนวนคอร์ CPU ของระบบ) เพื่อดำเนินการคอมไพล์แบบขนาน เพื่อเร่งกระบวนการคอมไพล์

8. ติดตั้ง PostgreSQL

sudo make install
  • sudo make install: ใช้ sudo เพื่อดำเนินการติดตั้งด้วยสิทธิ์ของผู้ดูแลระบบ, make install จะติดตั้งไฟล์ที่คอมไพล์แล้วในระบบ ติดตั้งในไดเร็กทอรี /usr/local/pgsql ที่ระบุในคำสั่ง ./configure ก่อนหน้า

9. ตั้งค่าตัวแปรสภาพแวดล้อม

ใช้โปรแกรมแก้ไขข้อความ 1. แก้ไขไฟล์ /etc/profile:

sudo nano /etc/profile
  • sudo: หมายถึงการรันคำสั่งด้วยสิทธิ์ของผู้ใช้ระดับสูง (ผู้ดูแลระบบ) เนื่องจากต้องมีสิทธิ์ของผู้ดูแลระบบในการแก้ไขไฟล์ /etc/profile
  • nano: นี่คือโปรแกรมแก้ไขข้อความที่มักใช้ในสภาพแวดล้อมเทอร์มินัลเพื่อแก้ไขไฟล์
  • /etc/profile: นี่คือไฟล์กำหนดค่าส่วนกลางที่ใช้ในการตั้งค่าตัวแปรสภาพแวดล้อมและการกำหนดค่าเริ่มต้นของระบบ การตั้งค่าในไฟล์นี้จะถูกดำเนินการเมื่อผู้ใช้ทุกคนเข้าสู่ระบบ
  1. เพิ่มตัวแปรสภาพแวดล้อม:
export PATH=/usr/local/pgsql/bin:$PATH
  • export: ใช้เพื่อตั้งค่าตัวแปรสภาพแวดล้อมเพื่อให้พร้อมใช้งานในกระบวนการปัจจุบันและกระบวนการลูก
  • PATH: นี่คือตัวแปรสภาพแวดล้อมที่มีรายการไดเร็กทอรีของไฟล์ที่สามารถเรียกใช้งานได้ในระบบ เมื่อระบบรันคำสั่ง จะค้นหาคำสั่งตามไดเร็กทอรีที่ระบุไว้ในตัวแปร PATH
  • /usr/local/pgsql/bin: นี่คือไดเร็กทอรีของไฟล์ที่สามารถเรียกใช้งานได้ของฐานข้อมูล PostgreSQL การเพิ่มไดเร็กทอรีนี้หมายความว่าไฟล์ที่สามารถเรียกใช้งานได้ในไดเร็กทอรีนี้ (เช่น psql) จะถูกระบบรู้จัก
  • :$PATH: ที่นี่ $PATH หมายถึงพาธที่มีอยู่เดิม การเพิ่มพาธใหม่ /usr/local/pgsql/bin ไปยังด้านหน้าของ PATH เดิม วิธีนี้จะทำให้ระบบตรวจสอบไดเร็กทอรีใหม่ก่อน แล้วจึงตรวจสอบพาธเดิม

คำสั่งนี้มีผลในการเพิ่มไดเร็กทอรีไฟล์ปฏิบัติการของ PostgreSQL ลงในตัวแปรสภาพแวดล้อม PATH ของระบบ เพื่อให้แน่ใจว่าสามารถรันคำสั่ง PostgreSQL ได้โดยตรง (เช่น psql) ในบรรทัดคำสั่งโดยไม่จำเป็นต้องระบุพาธแบบเต็ม การตั้งค่าที่แก้ไขแล้วจะมีผลกับผู้ใช้ทุกคน

เริ่มต้นฐานข้อมูล PostgreSQL

คำสั่งเหล่านี้ส่วนใหญ่ใช้สำหรับการกำหนดค่าเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL บนเซิร์ฟเวอร์ Linux ด้วยตนเอง ซึ่งรวมถึงการสร้างผู้ใช้ระบบ PostgreSQL การเริ่มต้นฐานข้อมูล การเริ่มต้นบริการฐานข้อมูล และการลงทะเบียนเป็นบริการ systemd เพื่อให้เริ่มต้นโดยอัตโนมัติเมื่อบูต

1. สร้างผู้ใช้ PostgreSQL

sudo useradd -m -U -r -d /var/lib/postgresql -s /bin/bash postgres
  • sudo: รันคำสั่งด้วยสิทธิ์ของผู้ใช้ระดับสูง
  • useradd: สร้างผู้ใช้ใหม่
  • -m: สร้างไดเร็กทอรี home ของผู้ใช้
  • -U: สร้างกลุ่มผู้ใช้ที่มีชื่อเดียวกับชื่อผู้ใช้
  • -r: สร้างผู้ใช้ระบบ (UID ของผู้ใช้ระบบน้อยกว่า 1000 ไม่ใช้สำหรับการเข้าสู่ระบบ)
  • -d /var/lib/postgresql: ระบุไดเร็กทอรี home เป็น /var/lib/postgresql
  • -s /bin/bash: ระบุ shell เป็น /bin/bash
  • postgres: ชื่อผู้ใช้

คำสั่งนี้สร้างผู้ใช้ระบบ postgres ที่เป็นเอกสิทธิ์เฉพาะสำหรับ PostgreSQL


2. เปลี่ยนเจ้าของไดเร็กทอรี PostgreSQL

sudo chown postgres /usr/local/pgsql
  • chown postgres /usr/local/pgsql: เปลี่ยนเจ้าของไดเร็กทอรี /usr/local/pgsql เป็นผู้ใช้ postgres ทำให้ผู้ใช้สามารถอ่านและเขียนไดเร็กทอรีได้

3. ตั้งรหัสผ่านสำหรับผู้ใช้ PostgreSQL

sudo passwd postgres
  • passwd postgres: แก้ไขรหัสผ่านของผู้ใช้ postgres

4. สลับไปยังผู้ใช้ PostgreSQL

su postgres
  • su postgres: สลับไปยังผู้ใช้ postgres เพื่อให้สามารถใช้คำสั่งที่เกี่ยวข้องกับ PostgreSQL

5. เริ่มต้นฐานข้อมูล

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
  • initdb -D /usr/local/pgsql/data: เริ่มต้นพื้นที่เก็บข้อมูลฐานข้อมูลในไดเร็กทอรี /usr/local/pgsql/data

6. เริ่มฐานข้อมูล PostgreSQL

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
  • postgres -D /usr/local/pgsql/data: เริ่มต้นฐานข้อมูลด้วยกระบวนการ postgres พื้นที่เก็บข้อมูลข้อมูลอยู่ในไดเร็กทอรี /usr/local/pgsql/data

7. ในเซสชันเทอร์มินัลอื่น เข้าสู่ฐานข้อมูล

su postgres
/usr/local/pgsql/bin/psql
  • psql: เครื่องมือบรรทัดคำสั่งแบบโต้ตอบของ PostgreSQL เข้าสู่ shell ฐานข้อมูล

8. ตั้งรหัสผ่านสำหรับผู้ใช้ฐานข้อมูล

ALTER USER postgres WITH PASSWORD 'your_new_password';
  • แก้ไขรหัสผ่านของผู้ใช้ฐานข้อมูล postgres

9. สร้างบริการ systemd

sudo nano /etc/systemd/system/postgresql.service
  • nano /etc/systemd/system/postgresql.service: แก้ไขไฟล์กำหนดค่า systemd เพื่อให้ PostgreSQL สามารถทำงานเป็นบริการได้

เนื้อหาไฟล์กำหนดค่า:

[Unit]
Description=เซิร์ฟเวอร์ PostgreSQL
#Documentation=man:postgres(1)
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=infinity

[Install]
WantedBy=multi-user.target
  • Description=เซิร์ฟเวอร์ PostgreSQL: อธิบายว่าบริการนี้คือเซิร์ฟเวอร์ PostgreSQL
  • After=network-online.target: รอจนกว่าการเชื่อมต่อเครือข่ายจะพร้อมใช้งานก่อนเริ่ม PostgreSQL
  • User=postgres: ทำงานในฐานะผู้ใช้ postgres
  • ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data: เริ่มเซิร์ฟเวอร์ PostgreSQL
  • ExecReload=/bin/kill -HUP $MAINPID: ส่งสัญญาณ HUP เมื่อโหลดซ้ำ
  • KillMode=mixed: โหมดการสิ้นสุดแบบผสม
  • KillSignal=SIGINT: สัญญาณสำหรับการสิ้นสุดกระบวนการ PostgreSQL
  • TimeoutSec=infinity: ตั้งค่าการหมดเวลาเป็นอนันต์

10. เปิดใช้งานบริการ systemd

sudo systemctl daemon-reload
sudo systemctl start postgresql
sudo systemctl status postgresql
sudo systemctl enable postgresql
  • daemon-reload: โหลดการกำหนดค่า systemd ใหม่เพื่อให้ postgresql.service ใหม่มีผล
  • start postgresql: เริ่มบริการ PostgreSQL
  • status postgresql: ตรวจสอบสถานะการทำงานของ PostgreSQL
  • enable postgresql: เริ่ม PostgreSQL โดยอัตโนมัติเมื่อบูต

จุดประสงค์ของคำสั่งเหล่านี้คือ:

  1. สร้างผู้ใช้ postgres ที่ใช้เฉพาะสำหรับการรัน PostgreSQL
  2. เริ่มต้นไดเร็กทอรีเก็บข้อมูลฐานข้อมูล
  3. เริ่มฐานข้อมูล PostgreSQL และเข้าสู่บรรทัดคำสั่งแบบโต้ตอบ psql
  4. กำหนดค่า systemd เพื่อให้ PostgreSQL ทำงานเป็นบริการระบบและรองรับการเริ่มต้นอัตโนมัติเมื่อบูต

ด้วยวิธีนี้ เซิร์ฟเวอร์ PostgreSQL จะสามารถทำงานได้อย่างถูกต้องและสามารถเริ่มต้นโดยอัตโนมัติเมื่อระบบเริ่มต้น

แหล่งอ้างอิง

PostgreSQL: Documentation: 17: Chapter 17. Installation from Source Code

เวอร์ชันอื่น ๆ ของหน้านี้

บทความนี้มีหลายเวอร์ชันภาษา

หากคุณต้องการแสดงความคิดเห็น โปรดไปที่หน้าเว็บต่อไปนี้:

ZH EN ZH-TW JA

หน้าเว็บเหล่านี้รองรับการเรียกดูเท่านั้น ไม่สามารถแสดงความคิดเห็นหรือข้อความได้ แต่มีตัวเลือกภาษาเพิ่มเติมและเวลาในการโหลดสั้นกว่า:

ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO

บทความนี้แปลจาก Chinese (Simplified) เป็น Thai โดย AI