ฉันประสบความสำเร็จในการคอมไพล์และติดตั้ง PostgreSQL (17.4) เวอร์ชันล่าสุดบน Ubuntu ARM32
คำสั่งในบทความนี้ส่วนใหญ่มาจากเอกสารอย่างเป็นทางการของ PostgreSQL ฉันได้ทดสอบคำสั่งแต่ละคำสั่งในบทความนี้แล้ว
สามารถดูระบบที่สามารถติดตั้งได้สำเร็จได้ที่นี่ PostgreSQL build farm
คอมไพล์และติดตั้ง PostgreSQL 17.4
1. สร้างไดเร็กทอรีและเข้าไปในไดเร็กทอรี
mkdir postgresql && cd postgresql
mkdir postgresql: สร้างไดเร็กทอรีใหม่ชื่อpostgresqlcd 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/profilenano: นี่คือโปรแกรมแก้ไขข้อความที่มักใช้ในสภาพแวดล้อมเทอร์มินัลเพื่อแก้ไขไฟล์/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/bashpostgres: ชื่อผู้ใช้
คำสั่งนี้สร้างผู้ใช้ระบบ 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: ทำงานในฐานะผู้ใช้postgresExecStart=/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