การปรับแต่งค่าคอนฟิกของ PostgreSQL ใน ServBay
ServBay เป็นสภาพแวดล้อมการพัฒนาเว็บแบบโลคัลที่ทรงพลังสำหรับผู้พัฒนา macOS โดยมาพร้อมกับ PostgreSQL ในตัว บทความนี้จะอธิบายวิธีการปรับเปลี่ยนค่าคอนฟิกของ PostgreSQL ใน ServBay อย่างละเอียด ทั้งรูปแบบผ่าน UI ที่แนะนำ และการแก้ไขไฟล์กำหนดค่าแบบแมนนวล (เพื่ออ้างอิงชั่วคราว)
ตำแหน่งไฟล์คอนฟิกหลักของ PostgreSQL ขึ้นอยู่กับเวอร์ชันที่ติดตั้งใน ServBay โดยปกติจะอยู่ที่ /Applications/ServBay/etc/postgresql/<version>
เช่น ไฟล์คอนฟิกของ PostgreSQL 16 จะอยู่ที่ /Applications/ServBay/etc/postgresql/16
ข้อควรระวังสำคัญ
ServBay บริหารจัดการค่าคอนฟิกส่วนใหญ่ผ่านส่วนติดต่อผู้ใช้แบบกราฟิก (UI) และจะสร้างไฟล์คอนฟิกให้โดยอัตโนมัติ ขอแนะนำอย่างยิ่งให้แก้ไขผ่าน UI ของ ServBay เท่านั้น การแก้ไขไฟล์คอนฟิกด้วยตนเอง อาจทำให้การเปลี่ยนแปลงของคุณถูกเขียนทับเมื่อ ServBay มีการจัดการหรืออัปเดตค่าคอนฟิกในครั้งถัดไป ดังนั้น การแก้ไขไฟล์โดยตรงเหมาะสำหรับการทดสอบหรือผู้ใช้ขั้นสูงเท่านั้น ไม่แนะนำให้ใช้กับเซ็ตอัประยะยาวหรืองานโปรดักชัน
การตั้งค่าผ่าน UI ของ ServBay (แนะนำ)
ServBay มีอินเทอร์เฟซกราฟิกที่ใช้งานสะดวกและเป็นวิธีที่แนะนำมากที่สุดในการแก้ไขค่าคอนฟิกของ PostgreSQL ทุกการแก้ไขผ่าน UI จะถูกนำไปใช้โดยอัตโนมัติและมักมีผลทันทีโดยไม่ต้องรีสตาร์ทบริการ (ยกเว้นระบบจะแจ้งให้ต้องเริ่มใหม่)
ขั้นตอนการดำเนินการ
- เปิดโปรแกรม ServBay
- ที่แถบนำทางซ้าย เลือก
ฐานข้อมูล
- ในรายการฐานข้อมูล ค้นหา
PostgreSQL
แล้วคลิกที่ เวอร์ชัน ที่ต้องการปรับแต่ง - หลังเข้าสู่หน้าคอนฟิก PostgreSQL คุณจะเห็นรายละเอียดและตัวเลือกคอนฟิกสำหรับเวอร์ชันนั้น
ตัวเลือกที่สามารถตั้งค่าได้
ในหน้านี้ คุณจะเห็น ชื่อผู้ใช้และรหัสผ่าน PostgreSQL เริ่มต้น ที่ตั้งโดย ServBay (แสดงอยู่ในหน้าเดียวกัน) และยังสามารถแก้ไขพารามิเตอร์ทั่วไปต่างๆ ได้โดยตรง เช่น
- Listen Address (
listen_addresses
): ระบุว่าฐานข้อมูล PostgreSQL จะรับฟังบนอินเตอร์เฟซเครือข่ายใด ค่าเริ่มต้นคือ*
ซึ่งหมายถึงทุกอินเตอร์เฟซ - พอร์ต (
port
): พอร์ตของบริการ PostgreSQL ค่าทั่วไปคือ5432
(โดยแตกต่างจาก MySQL/MariaDB ซึ่งใช้ 3306) - จำนวนการเชื่อมต่อสูงสุด (
max_connections
): จำกัดจำนวนไคลเอนต์ที่สามารถเชื่อมต่อกับฐานข้อมูลได้พร้อมกัน - หน่วยความจำใช้งาน (
work_mem
): กำหนดหน่วยความจำสำหรับ process query แต่ละรายการที่ใช้ในการคัดเลือก/จัดเรียงข้อมูลและ hash table
สำหรับค่าคอนฟิกอื่น ๆ ที่ UI ไม่ได้แสดงไว้ คุณยังสามารถเพิ่มเติมหรือปรับแต่งในส่วน Additional Parameters
พิมพ์แต่ละพารามิเตอร์ในรูปแบบ ชื่อพารามิเตอร์ = ค่า
ทีละบรรทัด
การนำการเปลี่ยนแปลงไปใช้
เมื่อแก้ไขค่าคอนฟิกเรียบร้อย ให้คลิกปุ่ม บันทึก
ที่ด้านล่างเพจ เพื่อให้ ServBay นำการเปลี่ยนแปลงไปใช้ สำหรับพารามิเตอร์ส่วนใหญ่จะมีผลทันที ในกรณีที่ต้องรีสตาร์ท PostgreSQL ใหม่ ServBay จะแจ้งเตือนให้ดำเนินการ
การแก้ไขไฟล์คอนฟิกด้วยตนเอง (ไม่แนะนำสำหรับการตั้งค่าหลัก)
อย่างที่ได้กล่าวไว้ การแก้ไขไฟล์คอนฟิกโดยตรงไม่ควรใช้สำหรับการปรับแต่งปกติ เพราะค่าอาจถูกเขียนทับอีกครั้งโดยเซ็ตติ้ง UI ของ ServBay อย่างไรก็ตาม การทราบตำแหน่งและเนื้อหาของไฟล์ช่วยให้เข้าใจโครงสร้างเบื้องลึกของ PostgreSQL ได้ดีขึ้น
WARNING
การแก้ไขไฟล์คอนฟิกเหมาะสำหรับการแก้บั๊กหรือทดสอบชั่วคราวเท่านั้น ServBay แนะนำให้ใช้ UI ทุกครั้งเพื่อความถูกต้องและคงความสม่ำเสมอของเซ็ตติ้ง การแก้ไขไฟล์ด้วยตนเองมีโอกาสสูงที่จะถูกระบบจัดการไฟล์ภายในของ ServBay เขียนทับ
ตำแหน่งไฟล์คอนฟิก
ไฟล์หลักของคอนฟิก PostgreSQL ใน ServBay ได้แก่ postgresql.conf
และ pg_hba.conf
ซึ่งส่วนมากจะอยู่ที่
postgresql.conf
:/Applications/ServBay/etc/postgresql/<version>/postgresql.conf
pg_hba.conf
:/Applications/ServBay/etc/postgresql/<version>/pg_hba.conf
ควรสังเกตว่าเอกสารบางเวอร์ชันอาจระบุ /db/postgresql/16/pg_hba.conf
เป็นที่อยู่สำหรับไฟล์ แต่ค่าหลักที่ UI ของ ServBay จัดการจะอยู่ใน /Applications/ServBay/etc
การแก้ไขไฟล์ควรตรวจสอบให้ตรงกับตำแหน่งที่ใช้งานจริง เพื่อความสอดคล้องกับระบบของ ServBay
ตัวอย่างค่าคอนฟิกที่ใช้บ่อย
ด้านล่างเป็นตัวอย่างการตั้งค่าที่พบได้ใน postgresql.conf
และ pg_hba.conf
ควรเปิดไฟล์ด้วย Text Editor ที่คุณถนัด (เช่น VS Code, Sublime Text, Nano ฯลฯ) และใช้สิทธิ์ผู้ดูแลระบบในการบันทึกการเปลี่ยนแปลง
postgresql.conf
postgresql.conf
คือไฟล์คอนฟิกหลักของ PostgreSQL ที่ควบคุมพฤติกรรมต่าง ๆ ของเซิร์ฟเวอร์
yaml
# ที่อยู่สำหรับ listen: PostgreSQL จะรับฟังการเชื่อมต่อบนอินเตอร์เฟซใดบ้าง '*' หมายถึงทุกอินเตอร์เฟซ
listen_addresses = '*'
# พอร์ต: พอร์ตสำหรับรับการเชื่อมต่อจากลูกข่าย PostgreSQL ค่ามาตรฐานคือ 5432
port = 5432
# จำนวนการเชื่อมต่อสูงสุด: จำกัดจำนวนไคลเอนต์ที่เชื่อมต่อพร้อมกันสูงสุด
max_connections = 100
# ขนาด shared buffer: หน่วยความจำที่ PostgreSQL ใช้สำหรับแคชข้อมูลจากฐานข้อมูล
shared_buffers = 128MB
# โฟลเดอร์สำหรับไฟล์ log: ระบุที่จัดเก็บ log
log_directory = 'log'
# รูปแบบชื่อไฟล์ log: กำหนดรูปแบบการตั้งชื่อไฟล์ log
log_filename = 'postgresql-%Y-%m-%d.log'
# เปิดใช้งาน slow query log: บันทึก query ที่ใช้เวลานานกว่าค่าที่กำหนด (ms)
# ตั้งเป็นจำนวนเต็มบวก เช่น 2000 คือ query ที่ใช้เวลากว่า 2 วินาทีจะถูกบันทึก
# หากตั้งเป็น -1 จะปิด slow query log
log_min_duration_statement = 2000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
pg_hba.conf
pg_hba.conf
(Host-Based Authentication) คือไฟล์สำหรับกำหนดนโยบายการรับรองความถูกต้องและการอนุญาตของไคลเอนต์ที่ต้องการเข้าถึงฐานข้อมูล
sql
# TYPE DATABASE USER ADDRESS METHOD
# อนุญาตให้เชื่อมต่อแบบ local ผ่าน Unix domain socket โดยใช้แบบ trust (ไม่ต้องใช้รหัสผ่าน)
# "local" is for Unix domain socket connections only
local all all trust
# อนุญาตทุกที่อยู่ IPv4 เชื่อมต่อผ่าน TCP/IP โดยใช้ md5 (ต้องใช้รหัสผ่าน)
# IPv4 local connections:
host all all 0.0.0.0/0 md5
# อนุญาตเฉพาะช่วงที่อยู่ IPv4 เช่น 192.168.1.0/24 ให้เชื่อมต่อผ่าน TCP/IP ด้วย md5
# IPv4 local connections from a specific subnet:
# host all all 192.168.1.0/24 md5
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
ขณะปรับแต่ง pg_hba.conf
โปรดเข้าใจความหมายของแต่ละคอลัมน์ (TYPE
, DATABASE
, USER
, ADDRESS
, METHOD
) การตั้งค่าที่ไม่ถูกต้องอาจทำให้เชื่อมต่อฐานข้อมูลไม่ได้หรือเปิดช่องให้เกิดความเสี่ยงด้านความปลอดภัย
นำค่าคอนฟิกที่ปรับแต่งด้วยตนเองไปใช้
เมื่อแก้ไขไฟล์เสร็จแล้ว ต้องรีสตาร์ทบริการ PostgreSQL เพื่อให้การเปลี่ยนแปลงมีผล
รีสตาร์ทผ่าน UI ของ ServBay
- เปิดหน้าจอจัดการของ ServBay
- เลือก
ฐานข้อมูล
จากแถบซ้าย - หา
PostgreSQL
และเลือกเวอร์ชันที่ตรงกับไฟล์ที่แก้ไข - ที่หน้านั้นหรือในรายการ “แพ็คเกจ/บริการ” หลัก ให้คลิกที่ปุ่ม
รีสตาร์ท
ตรงกับ PostgreSQL เวอร์ชันที่ต้องการ
รีสตาร์ทผ่านเครื่องมือบรรทัดคำสั่ง servbayctl
คุณสามารถใช้เครื่องมือ servbayctl
ของ ServBay เพื่อจัดการบริการ รวมถึงการรีสตาร์ท PostgreSQL ได้ด้วย
bash
servbayctl restart postgresql <version>
1
โดยเปลี่ยน <version>
เป็นหมายเลขเวอร์ชัน PostgreSQL ที่ใช้งาน (เช่น 16
)
สรุป
ServBay มีระบบ UI เพื่อช่วยปรับแต่งค่าคอนฟิกของ PostgreSQL ได้อย่างรวดเร็วและปลอดภัย ซึ่งเป็นวิธีที่แนะนำที่สุด เนื่องจากป้องกันการถูกเขียนทับจากไฟล์คอนฟิก Manual ในภายหลัง นอกจากนี้ยังสามารถแก้ไขค่าต่าง ๆ ที่จำเป็น เช่น listen address, port, จำนวนการเชื่อมต่อ และดูข้อมูลบัญชีผู้ใช้เริ่มต้นได้ สำหรับการทดสอบหรือ debug ชั่วคราว สามารถแก้ไขไฟล์คอนฟิกที่อยู่ใน /Applications/ServBay/etc/postgresql/<version>
ได้หลังจากนั้นจึงรีสตาร์ทบริการ PostgreSQL ด้วย UI หรือคำสั่ง servbayctl
เพื่อให้ค่าคอนฟิกใหม่มีผล
การเข้าใจตัวเลือกคอนฟิกและวิธีการปรับแต่งดังกล่าว จะช่วยให้คุณปรับ PostgreSQL ใน ServBay ได้ตรงตามความต้องการของโปรเจ็กต์หรือการพัฒนาของทีมอย่างเหมาะสม