Ubuntu24.04源码安装postgresql17

一、什么是 Postgresql

PostgreSQL 是一款功能全面且开源的关系型数据库管理系统,凭借其卓越的扩展能力和对SQL标准的严格遵循而广受赞誉。作为一款成熟的数据库系统,它不仅支持符合ACID特性的事务处理,还集成了自动更新的视图、物化视图、触发器、外键约束以及存储过程等一系列强大功能。PostgreSQL能够在Windows、Linux、macOS等主流操作系统上流畅运行,其应用范围极为广泛,无论是单机应用、大规模数据仓库,还是数据湖、高并发Web服务等场景,都能应对自如。

二、环境

  • 系统: Ubuntu24.04 LTS sever
  • 数据库: Postgresql 17.0

三、安装步骤

注意: 以下所有步骤除明确说明外均使用 root 用户(或者具有root权限的用户)。

1、安装依赖环境

bash 复制代码
apt-get install -y systemtap-sdt-dev libicu-dev libreadline-dev zlib1g-dev libssl-dev libpam0g-dev libxml2-dev libxslt1-dev  libldap-dev libsystemd-dev  gettext tcl-dev libpython3-dev libperl-dev

2、调整内核系统参数

bash 复制代码
cat >> /etc/sysctl.conf << EOF
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.shmmni = 4096
kernel.sem = 50100 64128000 50100 1280
fs.file-max = 7672460
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF

echo >> /etc/security/limits.conf << EOF
*       soft    nofile  131072
*       hard    nofile  131072
*       soft    nproc   131072
*       hard    nproc   131072
*       soft    core    unlimited
*       hard    core    unlimited
*       soft    memlock 50000000
*       hard    memlock 50000000
EOF

3、下载并解压源码文件

bash 复制代码
# 官方下载链接,如果下载速度慢可以考虑使用下面的国内镜像站下载链接
wget -c https://ftp.postgresql.org/pub/source/v17.0/postgresql-17.0.tar.gz

# 国内镜像站下载链接,
wget -c https://mirrors.ustc.edu.cn/postgresql/source/v17.0/postgresql-17.0.tar.gz

tar -xf postgresql-17.0.tar.gz
cd postgresql-17.0

4、配置编译参数

bash 复制代码
./configure \
  --prefix=/Programs/postgres17.0 \
  --enable-nls='en_US zh_CN' \
  --with-perl \
  --with-python \
  --with-tcl \
  --with-icu \
  --with-openssl \
  --with-ldap \
  --with-pam \
  --with-systemd \
  --with-libxml \
  --with-libxslt \
  --with-readline \
  --with-zlib \
  --with-pgport=5432

5、编译安装

bash 复制代码
make -j$(nproc)
make instal

6、创建用户并修改权限

bash 复制代码
mkdir /data/pg17
useradd -m -s /bin/bash postgres
chown postgres:postgres -R /Programs/postgres17.0/
chown postgres:postgres -R /data/pg17

7、配置postgres用户环境变量(使用postgres用户操作)

shell 复制代码
su - postgres
cat >> ~/.profile<< EOF
export PGDATA=/data/pg17/
export LANG=en_US.utf8
export PGHOME=/Programs/postgres17.0/
export PATH=/Programs/postgres17.0/bin:\$PATH
export PGUSER=postgres
EOF
source ~/.profile

8、初始化数据库(使用postgres用户)

bash 复制代码
initdb -A md5 -D $PGDATA -E utf8 --locale=C -W

9、使用 systemd 管理 postgres

bash 复制代码
cat > /etc/systemd/system/postgres.service <<EOF
[Unit]
Description=PostgreSQL 17.0 database server
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres

# Commands to manage the service
ExecStart=/Programs/postgres17.0/bin/pg_ctl start -D /data/pg17 -l /data/pg17/logfile
ExecStop=/Programs/postgres17.0/bin/pg_ctl stop -D /data/pg17 -s -m fast
ExecReload=/Programs/postgres17.0/bin/pg_ctl reload -D /data/pg17

# Restart settings
Restart=on-failure
RestartSec=5

# Limits
LimitNOFILE=65536
LimitNPROC=65536

[Install]
WantedBy=multi-user.target
EOF

10、修改 postgres 数据库配置文件(可选)

如果需要除安装 postgres 数据库的服务器以外的其他机器要连接使用数据库,需要进行以下操作,

bash 复制代码
# 修改pg_hba.conf文件,添加一下内容
host    all             all             0.0.0.0/0            md5

sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /data/pg17/postgresql.conf 
sed -i "s/#unix_socket_directories = '\/tmp'/unix_socket_directories = '\/tmp'/g" /data/pg17/postgresql.conf 

11 、设置 postgres 数据库开机启动

bash 复制代码
# 重载systemd
systemctl daemon-reload
# 设置设置 postgres  数据库开机自启并启动数据库服务
systemctl enable postgres --now

文章原始发布地址:www.omfox.cn

相关推荐
SlothLu6 分钟前
Debezium-KafkaDatabaseHistory
数据库·mysql·kafka·多线程·debezium·cdc·数据迁移
冷瞳11 分钟前
Redis基本的全局命令
数据库·redis·缓存
白云如幻36 分钟前
SQL99版外连接
数据库·mysql
我们的五年1 小时前
【MySQL课程学习】:MySQL安装,MySQL如何登录和退出?MySQL的简单配置
linux·服务器·数据库·学习·mysql·adb
ProtonBase2 小时前
分布式 Data Warebase - 构筑 AI 时代数据基石
大数据·数据库·数据仓库·人工智能·分布式·数据分析·数据库系统
yyycqupt2 小时前
数据库连接池(二)
linux·数据库·c++·后端·单例模式
皓木.3 小时前
SQL-多表操作
数据库·sql
007php0074 小时前
家庭智慧工程师:如何通过科技提升家居生活质量
数据库·python·云原生·架构·golang·php·postman
沃和莱特4 小时前
C++中类的继承
数据库·c++·编程·c·指针·友元函数