ฉันประสบความสำเร็จในการคอมไพล์และติดตั้ง 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
: นี่คือไฟล์กำหนดค่าส่วนกลางที่ใช้ในการตั้งค่าตัวแปรสภาพแวดล้อมและการกำหนดค่าเริ่มต้นของระบบ การตั้งค่าในไฟล์นี้จะถูกดำเนินการเมื่อผู้ใช้ทุกคนเข้าสู่ระบบ
- เพิ่มตัวแปรสภาพแวดล้อม:
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
: อธิบายว่าบริการนี้คือเซิร์ฟเวอร์ PostgreSQLAfter=network-online.target
: รอจนกว่าการเชื่อมต่อเครือข่ายจะพร้อมใช้งานก่อนเริ่ม PostgreSQLUser=postgres
: ทำงานในฐานะผู้ใช้postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
: เริ่มเซิร์ฟเวอร์ PostgreSQLExecReload=/bin/kill -HUP $MAINPID
: ส่งสัญญาณHUP
เมื่อโหลดซ้ำKillMode=mixed
: โหมดการสิ้นสุดแบบผสมKillSignal=SIGINT
: สัญญาณสำหรับการสิ้นสุดกระบวนการ PostgreSQLTimeoutSec=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
: เริ่มบริการ PostgreSQLstatus postgresql
: ตรวจสอบสถานะการทำงานของ PostgreSQLenable postgresql
: เริ่ม PostgreSQL โดยอัตโนมัติเมื่อบูต
จุดประสงค์ของคำสั่งเหล่านี้คือ:
- สร้างผู้ใช้
postgres
ที่ใช้เฉพาะสำหรับการรัน PostgreSQL - เริ่มต้นไดเร็กทอรีเก็บข้อมูลฐานข้อมูล
- เริ่มฐานข้อมูล PostgreSQL และเข้าสู่บรรทัดคำสั่งแบบโต้ตอบ
psql
- กำหนดค่า
systemd
เพื่อให้ PostgreSQL ทำงานเป็นบริการระบบและรองรับการเริ่มต้นอัตโนมัติเมื่อบูต
ด้วยวิธีนี้ เซิร์ฟเวอร์ PostgreSQL จะสามารถทำงานได้อย่างถูกต้องและสามารถเริ่มต้นโดยอัตโนมัติเมื่อระบบเริ่มต้น
แหล่งอ้างอิง
PostgreSQL: Documentation: 17: Chapter 17. Installation from Source Code
เวอร์ชันอื่น ๆ ของหน้านี้
บทความนี้มีหลายเวอร์ชันภาษา
หากคุณต้องการแสดงความคิดเห็น โปรดไปที่หน้าเว็บต่อไปนี้:
หน้าเว็บเหล่านี้รองรับการเรียกดูเท่านั้น ไม่สามารถแสดงความคิดเห็นหรือข้อความได้ แต่มีตัวเลือกภาษาเพิ่มเติมและเวลาในการโหลดสั้นกว่า:
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