给Ubuntu系统创建postgresql用户
1 2
| sudo adduser --system --group --home /var/lib/postgresql postgres
|
安装依赖包
1 2 3 4
| sudo apt update sudo apt install -y build-essential pkg-config libicu-dev bison flex \ libreadline-dev zlib1g-dev libxml2-dev libxslt-dev libssl-dev \ libxml2-utils xsltproc ccache libsystemd-dev
|
编译安装
进入源码目录后,执行如下命令。请务必将 $ver 和 $type 替换为你实际的版本号(如 16)和类型(通常为 main)
1 2 3 4 5 6 7 8 9 10 11
| export ver=18.6 export type=main ./configure \ --prefix=/usr/lib/postgresql/$ver \ --bindir=/usr/lib/postgresql/$ver/bin \ --sysconfdir=/etc/postgresql/$ver/$type \ --datarootdir=/usr/share/postgresql/$ver \ --includedir=/usr/include/postgresql \ --with-openssl \ --with-libxml \ --with-systemd
|
参数说明:
- –prefix:这是所有其他路径的基础,官方包将其设为 /usr/lib/postgresql/$ver。
- –bindir:指定二进制文件(如 postgres, psql)的安装位置。
- –sysconfdir:指定配置文件 postgresql.conf 等所在目录。
- –datarootdir:指定共享数据文件的位置。
- –includedir:指定头文件位置。
- –with-openssl、–with-libxml、–with-systemd:启用 SSL、XML 和 systemd 支持
编译与安装
1 2
| make -j$(nproc) sudo make install
|
创建 systemd 服务文件
1、创建服务文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| sudo tee /etc/systemd/system/postgresql.service <<EOF [Unit] Description=PostgreSQL database server After=network.target
[Service] Type=simple User=postgres Group=postgres ExecStart=/usr/lib/postgresql/$ver/bin/postgres -D /var/lib/postgresql/$ver/$type Restart=on-failure RestartSec=10 TimeoutSec=300
[Install] WantedBy=multi-user.target EOF
|
2、创建数据目录并初始化
1 2 3
| sudo mkdir -p /var/lib/postgresql/$ver/$type sudo chown postgres:postgres /var/lib/postgresql/$ver/$type sudo -u postgres /usr/lib/postgresql/$ver/bin/initdb -D /var/lib/postgresql/$ver/$type
|
3、启用并启动服务
1 2 3
| sudo systemctl daemon-reload sudo systemctl enable postgresql sudo systemctl start postgresql
|
验证安装
1 2
| sudo systemctl status postgresql sudo -u postgres /usr/lib/postgresql/$ver/bin/psql -c "SELECT version();"
|