Cara Menyusun Modul PostgreSQL dalam ServBay
Apabila membangunkan PostgreSQL menggunakan persekitaran pembangunan web tempatan ServBay, anda mungkin perlu menyusun dan memasang modul PostgreSQL tambahan (juga dikenali sebagai ekstensi) untuk menambah atau mempertingkatkan keupayaan pangkalan data anda. Modul-modul ini boleh menyediakan jenis data baharu, fungsi, operator, kaedah capaian indeks, dan banyak lagi.
Dokumen ini menerangkan secara terperinci bagaimana untuk menyusun dan memasang modul PostgreSQL dalam persekitaran ServBay, menggunakan postgis
(sokongan Sistem Maklumat Geografi, GIS) dan pg_jieba
(pembahagi perkataan Bahasa Cina) sebagai contoh amalan.
Pengenalan
ServBay menawarkan persekitaran yang fleksibel dan berkuasa, membolehkan pembangun membina semula atau menyusun komponen tambahan di atas pakej perisian yang telah diintegrasi. Proses menyusun modul PostgreSQL biasanya melibatkan memuat turun kod sumber modul, mengkonfigurasi pilihan kompilasi, menggunakan alat binaan tertentu seperti make
atau cmake
untuk menyusun dan memasang, dan akhir sekali mengaktifkan modul berkenaan dalam pangkalan data PostgreSQL.
Kejayaan proses ini bergantung kepada tetapan persekitaran kompilasi yang betul, supaya ia dapat mengakses fail header, perpustakaan, serta sokongan kebergantungan yang berkaitan dengan versi PostgreSQL spesifik dalam ServBay.
Prasyarat
Sebelum anda mula menyusun sebarang modul PostgreSQL, anda mesti memulakan persekitaran kompilasi ServBay mengikut arahan. Langkah ini penting kerana ia akan menetapkan alat rantai binari (compiler, linker dsb.), pembolehubah persekitaran seperti $PATH
, $CFLAGS
, $LDFLAGS
, serta laluan konfigurasi khas untuk binaan dalam ServBay.
Untuk maklumat terperinci mengenai cara memulakan persekitaran kompilasi, sila rujuk dokumentasi rasmi ServBay dalam seksyen Kompilasi Pakej Ulangan dengan ServBay. Pastikan anda sudah melengkapkan penyediaan persekitaran seperti yang diterangkan, biasanya dengan menjalankan skrip inisialisasi dalam terminal ServBay.
Kepentingan Menentukan Versi PostgreSQL
ServBay membenarkan anda memasang dan menjalankan berbilang versi PostgreSQL secara serentak. Oleh kerana penyusunan dan penggunaan modul PostgreSQL sangat berkait rapat dengan versi spesifiknya (bergantung kepada fail header, perpustakaan dan API dalaman), anda mesti menetapkan dengan tepat versi PostgreSQL dan laluan konfigurasinya semasa menggunakan alat binaan untuk menyusun modul.
Menetapkan laluan konfigurasi yang betul memastikan modul yang dihasilkan dapat berinteraksi dengan betul dengan PostgreSQL yang disasarkan, mengelakkan ralat semasa penyusunan, kegagalan semasa pemuatan, atau masalah runtime yang tidak dijangka.
Contoh dalam dokumen ini akan menggunakan PostgreSQL versi 15
dalam ServBay (mis. 15.7
). Sila sesuaikan laluan yang berkaitan mengikut versi PostgreSQL yang anda gunakan.
ServBay menggunakan pembolehubah persekitaran dan alat pg_config
(cari di ${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/pg_config
) untuk membantu anda mendapatkan semua laluan dan konfigurasi berkaitan. pg_config
ialah utiliti PostgreSQL yang memaparkan lokasi pemasangan, maklumat kompilasi, laluan perpustakaan, laluan fail header, dan banyak lagi – sangat penting untuk menyusun ekstensi pihak ketiga.
Menyusun Modul postgis
Modul postgis
ialah antara ekstensi PostgreSQL yang paling popular, menambah sokongan objek dan fungsi GIS kepada PostgreSQL agar boleh menyimpan, soal-siasat dan menganalisis data spatial. Berikut adalah langkah menyusun modul postgis-3.4.2
:
Langkah 1: Muat Turun Kod Sumber
Mula-mula, muat turun pakej sumber postgis-3.4.2
dari laman web rasmi PostGIS. Pastikan anda memuat turun versi kod sumber (biasanya dalam format .tar.gz
atau .zip
).
bash
wget https://download.osgeo.org/postgis/source/postgis-3.4.2.tar.gz
1
wget
ialah utiliti baris arahan untuk memuat turun fail dari URL tertentu.
Langkah 2: Ekstrak Pakej Sumber
Ekstrak fail sumber yang telah dimuat turun dan masuk ke dalam direktori sumber tersebut.
bash
tar zxvf postgis-3.4.2.tar.gz
cd postgis-3.4.2
1
2
2
tar zxvf
akan mengekstrak fail .tar.gz
, manakala cd
menukar direktori semasa ke akar sumber postgis-3.4.2
.
Langkah 3: Konfigurasi Pilihan Kompilasi
PostGIS menggunakan GNU Autotools untuk sistem binaannya. Proses konfigurasi akan menyemak kebergantungan sistem, menentukan ciri kompilasi, dan menghasilkan fail Makefile
. Pada peringkat ini, anda perlu menentukan laluan pemasangan PostgreSQL dalam ServBay serta laluan perpustakaan yang diperlukan.
bash
./configure \
--prefix=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7 \
--bindir=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin \
--datarootdir=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/share \
--with-protobufdir=${SERVBAY_BIN_PATH} \
--disable-nls \
--without-raster \
--without-topology \
--with-pgconfig=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/pg_config \
CFLAGS="${CFLAGS} -I${SERVBAY_COMMON_INCLUDE_PATH}/libxml2 -I${SERVBAY_COMMON_INCLUDE_PATH}" \
CXXFLAGS="${CXXFLAGS} -std=c++17 -I${SERVBAY_COMMON_INCLUDE_PATH}/libxml2 -I${SERVBAY_COMMON_INCLUDE_PATH}" \
LDFLAGS="${LDFLAGS} -L${SERVBAY_COMMON_LIB_PATH} -lxml2 -lz -lpthread -liconv -licui18n -licuuc -licudata -lm"
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
./configure
: Menjalankan skrip konfigurasi.--prefix
,--bindir
,--datarootdir
: Menentukan destinasi pemasangan dalam struktur direktori khusus PostgreSQL 15.7 di ServBay. Ini membolehkan PostgreSQL mencari dan memuat modul dengan mudah. Laluan${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7
biasanya telah ditetapkan oleh skrip inisialisasi ServBay.--with-protobufdir
: Laluan ke Protobuf, bergantung kepada keperluan PostGIS.${SERVBAY_BIN_PATH}
ialah laluan fail binari dalam ServBay.--disable-nls
: Melumpuhkan sokongan bahasa nasional, biasanya tidak diperlukan untuk pembangunan tempatan.--without-raster
,--without-topology
: Melumpuhkan sokongan Raster dan Topologi pada PostGIS untuk memudahkan binaan. Anda boleh mengaktifkan semula mengikut keperluan, tetapi ini mungkin memerlukan kebergantungan tambahan.--with-pgconfig
: Pilihan utama ini menunjuk ke laluanpg_config
versi PostgreSQL yang disusun. Ini memastikan modul yang disusun serasi dengan PostgreSQL bertujuan.CFLAGS
,CXXFLAGS
,LDFLAGS
: Pembolehubah persekitaran bagi compiler/linker untuk parameter tambahan.${CFLAGS}
,${CXXFLAGS}
,${LDFLAGS}
merujuk tetapan bawaannya oleh persekitaran ServBay.-I${SERVBAY_COMMON_INCLUDE_PATH}/libxml2 -I${SERVBAY_COMMON_INCLUDE_PATH}
: Menambah direktori header umum ServBay, termasuk untuklibxml2
.-L${SERVBAY_COMMON_LIB_PATH} ...
: Menyambung ke direktori perpustakaan umum ServBay dan menyertakan banyak perpustakaan kebergantungan (libxml2, zlib, pthread, dll.).-std=c++17
: Menentukan bahawa penyusun C++ akan menggunakan standard C++17, keperluan untuk banyak projek moden.
Langkah 4: Kompilasi dan Pasang
Setelah konfigurasi selesai, gunakan perintah make
untuk menyusun kod dan make install
untuk memasang modul ke direktori PostgreSQL yang ditetapkan dalam ServBay.
bash
make -j ${CPU_NUMBER}
make install
1
2
2
make -j ${CPU_NUMBER}
: Memulakan proses kompilasi, menggunakan pemprosesan selari (${CPU_NUMBER}
ialah bilangan teras CPU yang dikesan persekitaran ServBay).make install
: Menyalin fail yang telah dikompilasi (perpustakaan bersama PostGIS, skrip SQL, dll.) ke lokasi sepadan dalam struktur direktori PostgreSQL 15.7 (kebiasaannyalib/postgresql
danshare/postgresql/extension
).
Langkah 5: Sahkan Pemuatan Modul
Selepas menyusun dan memasang, anda perlu mengaktifkan ekstensi postgis
di dalam pangkalan data PostgreSQL. Sambung ke pangkalan data menggunakan baris perintah atau klien kegemaran anda.
Gunakan alat psql
dari persekitaran ServBay untuk pengesahan. Pastikan anda berada dalam sesi terminal ServBay bagi memastikan pembolehubah persekitaran dimuat dengan betul.
bash
# Jalankan arahan CREATE EXTENSION untuk mengaktifkan PostGIS
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "CREATE EXTENSION postgis;"
1
2
2
Jika berjaya, ekstensi PostGIS telah diaktifkan. Untuk mengesahkan versi, gunakan:
bash
# Periksa versi PostGIS
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "SELECT PostGIS_Version();"
1
2
2
Jika semuanya berjalan lancar, anda akan melihat nombor versi yang dipaparkan, menandakan modul telah dipasang dan berfungsi sepenuhnya.
Menyusun Modul pg_jieba
pg_jieba
ialah ekstensi PostgreSQL berasaskan pustaka C++ cppjieba
untuk fungsi pemotongan perkataan Bahasa Cina, sesuai untuk pencarian teks penuh. pg_jieba
menggunakan CMake untuk pembinaan. Berikut ialah langkah menyusun pg_jieba
:
Langkah 1: Dapatkan Kod Sumber
Mula-mula, klon repositori pg_jieba
dari GitHub. Ia bergantung kepada cppjieba
melalui submodul Git, jadi anda perlu inisialisasi dan kemas kini submodul juga.
bash
git clone https://github.com/jaiminpan/pg_jieba.git
cd pg_jieba
git submodule update --init --recursive
1
2
3
2
3
git clone ...
: Klon repositori Gitpg_jieba
.git submodule update --init --recursive
: Inisialisasi dan kemas kini semua submodul Git yang diperlukan, termasukcppjieba
.
Langkah 2: Konfigurasi Pilihan Kompilasi (CMake)
pg_jieba
menggunakan CMake. Serupa dengan Autotools, anda perlu menentukan laluan PostgreSQL yang betul dan sasaran binaan ServBay.
bash
cmake -S . -B builddir \
-DCMAKE_PREFIX_PATH=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7 \
-DCMAKE_OSX_DEPLOYMENT_TARGET=${BUILD_OS_MIN_VERSION} \
-DCMAKE_OSX_ARCHITECTURES=${BUILD_CPU_ARCH_CMAKE}
1
2
3
4
2
3
4
cmake -S . -B builddir
: Jalankan konfigurasi CMake, menghasilkan semua fail binaan dalam subdirektoribuilddir
.-DCMAKE_PREFIX_PATH
: Pilihan utama – laluan ke direktori pemasangan PostgreSQL 15.7 dalam ServBay. Ini membolehkan CMake mengenal pasti perpustakaan/head yang berkaitan.-DCMAKE_OSX_DEPLOYMENT_TARGET
: Spesifikasikan versi minimum macOS yang disokong untuk fail binari hasil binaan.-DCMAKE_OSX_ARCHITECTURES
: Spesifikasikan seni bina CPU semasa (x86_64
,arm64
dsb.) untuk keserasian macOS dalam persekitaran ServBay.
Langkah 3: Kompilasi dan Pasang (CMake)
Jika konfigurasi berjaya, gunakan CMake untuk menyusun dan memasang fail modul.
bash
cmake --build builddir -j ${CPU_NUMBER}
cmake --install builddir
1
2
2
cmake --build builddir
: Jalankan kompilasi di direktori binaan yang ditetapkan.-j ${CPU_NUMBER}
: Gunakan semua teras CPU untuk pempersilangan binaan pantas.cmake --install builddir
: Pasang fail ke lokasi sepadan dalam direktori pemasangan PostgreSQL.
Langkah 4: Sahkan Pemuatan Modul
Setelah pemasangan selesai, aktifkan ekstensi pg_jieba
di pangkalan data anda:
bash
# Jalankan arahan CREATE EXTENSION untuk mengaktifkan pg_jieba
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "CREATE EXTENSION pg_jieba;"
1
2
2
Jika berjaya, ekstensi pg_jieba
kini aktif. Anda boleh menyemak maklumat modul dengan:
bash
# Senaraikan ekstensi yang tersedia dan disokong
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "SELECT * FROM pg_available_extensions WHERE name = 'pg_jieba';"
1
2
2
Jika modul disenaraikan, proses kompilasi, pemasangan, dan pengaktifan berjaya.
Soalan Lazim (FAQ)
- Penyusunan gagal dengan ralat header atau perpustakaan tidak ditemui?
- Pastikan anda telah memulakan persekitaran binaan ServBay dengan betul. Jalankan skrip inisialisasi dan pastikan semua pembolehubah persekitaran (
$CFLAGS
,$LDFLAGS
,${SERVBAY_COMMON_INCLUDE_PATH}
,${SERVBAY_COMMON_LIB_PATH}
dll.) telah ditetapkan. - Semak sama ada nilai
--with-pgconfig
(untuk Autotools) atau-DCMAKE_PREFIX_PATH
(untuk CMake) menunjuk pada versi dan laluan PostgreSQL yang betul serta failpg_config
wujud dan boleh dijalankan. - Sesetengah modul mungkin memerlukan kebergantungan sistem tambahan (misalnya GEOS, GDAL untuk PostGIS dengan raster/topologi). Jika kekurangan, anda perlu memasangnya sendiri atau menyahdayakan ciri berkenaan.
- Pastikan anda telah memulakan persekitaran binaan ServBay dengan betul. Jalankan skrip inisialisasi dan pastikan semua pembolehubah persekitaran (
CREATE EXTENSION
gagal dengan mesej modul tidak ditemui?- Sahkan bahawa
make install
(Autotools) ataucmake --install
(CMake) telah berjalan lancar tanpa ralat, dan fail telah dipindahkan ke direktori yang betul. - Periksa laluan yang digunakan dalam
--prefix
(Autotools) atau-DCMAKE_PREFIX_PATH
(CMake) semasa konfigurasi. - Cuba restart perkhidmatan PostgreSQL – kadang-kadang server perlu dimulakan semula untuk mengenal pasti fail ekstensi baru.
- Semak sama ada perlu menambah nama modul ke
shared_preload_libraries
dalam tetapan PostgreSQL (tidak biasanya diperlukan untuk ekstensi biasa, tetapi wajib bagi modul dengan integrasi mendalam). Sila rujuk dokumentasi modul yang anda gunakan.
- Sahkan bahawa
- Bagaimana untuk menyusun modul bagi versi PostgreSQL berbeza?
- Ulang langkah kompilasi di atas, tetapi dalam peringkat konfigurasi (
./configure
ataucmake
), pastikan parameter laluan menunjuk ke versi PostgreSQL yang anda ingin sasarkan. Sebagai contoh, untuk PostgreSQL 14, tukar laluan ke${SERVBAY_PACKAGE_FULL_PATH}/postgresql/14/14.x/bin/pg_config
(Autotools) atau${SERVBAY_PACKAGE_FULL_PATH}/postgresql/14/14.x
(CMake), di mana14.x
ialah nombor versi sebenar.
- Ulang langkah kompilasi di atas, tetapi dalam peringkat konfigurasi (
Ringkasan
Dengan mengikuti panduan di atas dan menggunakan persekitaran dan alat binaan yang disediakan ServBay, anda boleh berjaya menyusun dan memasang modul PostgreSQL mengikut keperluan projek anda, memperluas keupayaan pangkalan data secara tempatan dalam macOS. Kejayaan proses ini sangat bergantung pada inisialisasi persekitaran binaan yang betul, pemilihan versi sasaran PostgreSQL yang tepat, serta semakan teliti ke atas konfigurasi, penyusunan, dan laluan pemasangan.
Semoga panduan ini dapat membantu anda mengkonfigurasi PostgreSQL dalam ServBay dengan lebih baik. Untuk isu tambahan, sila rujuk dokumentasi atau forum komuniti ServBay.