首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

Ubuntu 編譯安裝 PostgreSQL 8.2.5 完整步驟

     編輯:關於SqlServer

Ubuntu 從原始碼編譯安裝 PostgreSQL 8.2.5

適用場景:舊系統維護、特定編譯選項需求、套件管理器無對應版本。生產環境建議使用官方 APT 倉庫安裝支援版本 (15/16)。

編譯環境準備

# 更新套件索引
sudo apt-get update

# 核心編譯工具鏈
sudo apt-get install -y build-essential libtool autoconf

# PostgreSQL 必要依賴庫
sudo apt-get install -y \
    libreadline6-dev \      # psql 命令列編輯/歷史
    zlib1g-dev \            # 壓縮支援
    libssl-dev \            # SSL 連線加密
    libkrb5-dev \           # Kerberos 驗證
    libpam0g-dev \          # PAM 驗證
    libxml2-dev \           # XML 功能
    libxslt-dev \           # XSLT 功能
    python-dev \            # PL/Python
    perl \                  # PL/Perl
    tcl-dev \               # PL/Tcl
    flex bison              # 詞法/語法分析器產生器

# 選用:文件產生工具
sudo apt-get install -y docbook-dsssl docbook-xsl jade

下載、配置、編譯、安裝

# 建立工作目錄
mkdir -p ~/src && cd ~/src

# 下載原始碼 (官方 FTP)
wget https://ftp.postgresql.org/pub/source/v8.2.5/postgresql-8.2.5.tar.gz

# 解壓縮
tar -xzf postgresql-8.2.5.tar.gz
cd postgresql-8.2.5

# 配置編譯選項
./configure \
    --prefix=/usr/local/pgsql-8.2.5 \
    --with-openssl \
    --with-libxml \
    --with-libxslt \
    --enable-thread-safety \
    --with-perl \
    --with-python \
    --with-tcl \
    --with-krb5 \
    --with-pam \
    --docdir=/usr/local/pgsql-8.2.5/share/doc

# 編譯 (利用多核心加速)
make -j$(nproc)

# 安裝 (需 root 權限)
sudo make install

# 建立軟連結方便管理
sudo ln -sf /usr/local/pgsql-8.2.5 /usr/local/pgsql

建立 postgres 系統使用者與資料目錄

# 建立系統帳號 (無登入殼層、無家目錄)
sudo useradd -r -s /bin/false -d /usr/local/pgsql/data -c "PostgreSQL Server" postgres

# 建立資料目錄並設定權限
sudo mkdir -p /usr/local/pgsql/data
sudo chown postgres:postgres /usr/local/pgsql/data
sudo chmod 700 /usr/local/pgsql/data

初始化資料庫叢集

# 切換到 postgres 使用者
sudo -u postgres -i

# 初始化 (指定編碼、語系、資料目錄)
/usr/local/pgsql/bin/initdb \
    -D /usr/local/pgsql/data \
    -E UTF8 \
    --locale=zh_TW.UTF-8 \
    -U postgres \
    -W  # 提示輸入超級使用者密碼
# 或無互動模式:
# /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data -E UTF8 --locale=C -U postgres -A md5

啟動/停止/狀態管理

# 啟動 (前景模式,除錯用)
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data

# 啟動 (背景守護進程模式,生產用)
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/pg_log/startup.log start

# 停止
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -m fast stop

# 重新載入設定
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data reload

# 狀態檢查
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data status

建立 systemd 服務 (Ubuntu 16.04+)

sudo tee /etc/systemd/system/postgresql-8.2.service <<'EOF'
[Unit]
Description=PostgreSQL 8.2.5 Database Server
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGDATA=/usr/local/pgsql/data
ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA} -l ${PGDATA}/pg_log/startup.log
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D ${PGDATA} -m fast
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D ${PGDATA}
TimeoutSec=300

[Install]
WantedBy=multi-user.target
EOF

# 重載 systemd、啟用開機自動啟動、啟動服務
sudo systemctl daemon-reload
sudo systemctl enable postgresql-8.2
sudo systemctl start postgresql-8.2
sudo systemctl status postgresql-8.2

防火牆與遠端存取設定

# UFW 開放埠
sudo ufw allow 5432/tcp

# postgresql.conf 允許遠端連線
sudo -u postgres sed -i "s/^#listen_addresses = 'localhost'/listen_addresses = '*'/" /usr/local/pgsql/data/postgresql.conf

# pg_hba.conf 允許密碼驗證 (生產環境請限制 IP 範圍)
sudo -u postgres tee -a /usr/local/pgsql/data/pg_hba.conf <<'EOF'
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             0.0.0.0/0               md5
host    all             all             ::/0                    md5
EOF

# 重新載入設定
sudo systemctl reload postgresql-8.2

pgAdmin 3 圖形管理工具安裝

# Ubuntu 套件庫版本 (可能較舊)
sudo apt-get install -y pgadmin3

# 或從官網下載較新版 .deb 安裝
# wget https://ftp.postgresql.org/pub/pgadmin3/release/v1.22.2/ubuntu/pgadmin3_1.22.2-1_amd64.deb
# sudo dpkg -i pgadmin3_*.deb
# sudo apt-get install -f

驗證安裝與基本操作

# 連線測試
/usr/local/pgsql/bin/psql -U postgres -d postgres -c "SELECT version();"

# 建立測試資料庫與表
/usr/local/pgsql/bin/createdb -U postgres testdb
/usr/local/pgsql/bin/psql -U postgres -d testdb -c "
CREATE TABLE test (id SERIAL PRIMARY KEY, name TEXT, created TIMESTAMP DEFAULT NOW());
INSERT INTO test (name) VALUES ('Ubuntu 編譯安裝測試');
SELECT * FROM test;"

# 備份測試
/usr/local/pgsql/bin/pg_dump -U postgres testdb > /tmp/testdb_backup.sql

效能優化參數建議 (postgresql.conf)

# 記憶體設定 (假設 4GB RAM 專用資料庫伺服器)
shared_buffers = 1GB                  # 25% RAM
work_mem = 16MB
maintenance_work_mem = 256MB
effective_cache_size = 3GB            # 75% RAM

# WAL / 檢查點
checkpoint_segments = 32
wal_buffers = 16MB
checkpoint_completion_target = 0.9

# 查詢規劃器
random_page_cost = 1.1                # SSD 優化
effective_io_concurrency = 200        # SSD 併發

# 平行查詢 (8.2 不支援,9.6+ 才有)
# max_parallel_workers_per_gather = 4

# 日誌
log_min_duration_statement = 1000
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '

常見編譯/安裝問題排查

問題解決方案
configure: error: readline library not found安裝 libreadline6-dev (Ubuntu 18.04+) 或 libreadline5-dev (舊版)
configure: error: zlib library not found安裝 zlib1g-dev
make: *** [postgres] Error 1 (ld: cannot find -lssl)安裝 libssl-dev (Ubuntu 20.04+ 需 libssl1.1 相容)
initdb: could not access directory: Permission denied資料目錄擁有者非 postgres、權限非 700、SELinux/AppArmor 阻擋
psql: could not connect to server: No such file or directory服務未啟、socket 目錄權限、/tmp/.s.PGSQL.5432 不存在
pgAdmin 連線失敗pg_hba.conf 未允許、postgresql.conf listen_addresses、防火牆
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved