Ubuntu源码安装配置PostgreSQL

源码安装PostgreSQL可以自定义配置,省去很多apt默认安装带来的配置冲突,在后续使用中会遇到诸多问题。一般生产都是推荐源码安装,更灵活,标准化。此处为大家提供源码安装的演示。

提前说明演示中的各文件路径供参考。

PostgreSQL目录[自定义创建,pg内容均存放在该目录下]:/opt/pgsql/
源码目录:/opt/pgsql/postgresql-16.1
安装目录:/opt/pgsql/pgsql-16.1
数据目录:/opt/pgsql/data
用户目录:/home/postgres

下载安装包

安装依赖包

sudo apt-get build-essential
sudo apt-get libreadline-dev
sudo apt-get zlib1g zlib1g-dev
sudo apt-get bison
sudo apt-get flex
sudo apt-get libpq-dev

下载安装包

两种方法均可下载源码,最简版推荐第二种安装。

  1. 通过官网https://www.postgresql.org/ftp/source/上的FTP服务器下载tar文件。注:这里下载的安装包不同操作系统均适用。
    打开官网选择对应的版本 。 在这里插入图片描述
    这里选择最新的16.1版本,点击下载后缀名为tar.gz的文件即可。在这里插入图片描述
  2. 通过wegt下载到当前路径下,查看官网替换成指定版本对应的名称。
    wget https://ftp.postgresql.org/pub/source/[版本号]/[tar.gz后缀文件名]
    
    例如此处下载16.1版本的tar.gz
    wget https://ftp.postgresql.org/pub/source/v16.1/postgresql-16.1.tar.gz
    

安装PostgreSQL

安装源码

解压安装包到指定目录下

tar -zxvf postgresql-16.1.tar.gz -C /opt/pgsql/

配置编译

进入解压过的源码文件下,指定安装到/opt/pgsql/pgsql-16.1

–prefix=prefix安装到prefix指向的目录,否则默认为/usr/local/pgsql

cd /opt/pgsql/postgresql-16.1/
./configure --prefix=/opt/pgsql/pgsql-16.1

此处若出现如下报错提示

configure: error: ICU library not found
If you have ICU already installed, see config.log for details on the
failure. It is possible the compiler isn’t looking in the proper directory.
Use --without-icu to disable ICU support.

# 跳过icu编译
./configure --prefix=/opt/pgsql/pgsql-16.1 --without-icu

编译项目

make && make install

至此,已完成postgreql的安装。进入/opt/pgsql/pgsql-16.1目录可以看到安装后的postgresql的文件。

验证

在make install之后,会在前面configure指定的路径中生成几个文件夹bin,include,lib,share文件夹。

验证是否安装成功可以运行bin下面的pg_config:

cd /opt/pgsql/pgsql-16.1/bin
./pg_config

如果有配置信息,那么安装成功。

创建用户

创建用户组postgres并创建用户postgres

groupadd postgres
useradd -g postgres postgres
id postgres 
>uid=1001(postgres) gid=1001(postgres) groups=1001(postgres)
# 设置密码
passwd postgres
>输入密码

初始化用户

# 创建postgres文件夹
sudo mkdir /home/postgres
# 设置权限
sudo chmod 755 /home/postgres
chown postgres:postgres /home/postgres

# 初始化
sudo cp -a /etc/skel/. /home/postgres
vi /etc/passwd
# 最后一行为postgres:x:1001:1001::/home/postgres:/bin/sh
# 将sh修改为bash
postgres:x:1001:1001::/home/postgres:/bin/bash

创建数据目录

创建postgresql数据库的数据主目录并修改文件所有者

mkdir /opt/pgsql/data
chown postgres:postgres data

配置PostgreSQL

配置环境

为了方便,可以将该bin路径添加到PATH变量中。

sudo vi /etc/profile

在末尾添加如下配置,PGHOME为pg的安装目录路径,PGDATA为pg的数据目录路径。

# PostsQL
export PGHOME=/opt/pgsql/pgsql-16.1
export PGDATA=/opt/pgsql/data
export PATH=$PATH:$PGHOME/bin

重新加载系统环境变量

source /etc/profile

初始化数据库

切换到postgre用户,并使用initdb初始化数据库

su - postgres
initdb

返回root用户,可以看到data目录下已经被初始化

cd /opt/pgsql/data/
ls
>base          pg_hba.conf    pg_notify     pg_stat      pg_twophase  postgresql.auto.conf
global        pg_ident.conf  pg_replslot   pg_stat_tmp  PG_VERSION   postgresql.conf
pg_commit_ts  pg_logical     pg_serial     pg_subtrans  pg_wal
pg_dynshmem   pg_multixact   pg_snapshots  pg_tblspc    pg_xact

开机自启动

PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下。linux文件即为linux系统上的启动脚本

cd /opt/pgsql/postgresql-16.1/contrib/start-scripts/
ls
>freebsd  linux  macos

# 切换为root用户,修改Linux文件属性,添加X属性
chmod a+x linux

# 复制Linux文件到/etc/init.d目录下,更名为postgresql
cp linux /etc/init.d/postgresql

# 修改/etc/init.d/postgresql文件的两个变量
prefix设置为postgresql的安装路径:/opt/pgsql/pgsql-16.1
PGDATA设置为postgresql的数据目录路径:"/opt/pgsql/data"

# 设置postgresql服务开启自启动
sudo systemctl enable postgresql

查看状态

# 查看状态
sudo systemctl status postgresql
# 关闭状态
sudo systemctl stop postgresql
# 重启状态
sudo systemctl restart postgresql

启动验证

进入postgres用户启动postgresql,测试创建数据库和数据表。

# 切换postgres用户
su - postgres

# 进入postgresql
psql

# 查看数据库,默认数据库postgres和template0、template1
\l

# 创建数据数据库testdb
create database testdb;

# 看到已经创建数据库testdb
\l

# 进入数据库testdb
\c testdb;
>You are now connected to database "testdb" as user "postgres".

# 创建四张表,分别插入一条数据
create table t1(id int);
insert into t1 values (1);
# 查看数据表
\d
>        List of relations
 Schema | Name | Type  |  Owner   
--------+------+-------+----------
 public | t1   | table | postgres

# 退出
\q
  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Ubuntu 是一种流行的操作系统,可以用于服务器和个人电脑。PostgreSQL 是一款开源的关系型数据库管理系统,广泛用于企业级应用程序。安装 PostgreSQLUbuntu 中有几种方法,下面介绍两种较为常用的方式。 方法一:使用 Ubuntu 软件源安装 Ubuntu 软件源提供了 PostgreSQL 的最新版本,可通过以下命令安装: 1. 打开终端并切换到 root 用户: ``` sudo -i ``` 2. 更新系统软件源: ``` apt update ``` 3. 安装 PostgreSQL: ``` apt install postgresql postgresql-contrib ``` 4. 安装完成后,启动 PostgreSQL 服务: ``` systemctl start postgresql ``` 5. 设置 PostgreSQL 开机自启动: ``` systemctl enable postgresql ``` 安装完成后,您可以使用以下命令登录 PostgreSQL: ``` sudo -i -u postgres psql ``` 方法二:从源代码编译安装 如果您需要安装一个特定版本的 PostgreSQL 或者想要自定义编译选项,可以选择从源代码编译安装。 要从源代码编译安装 PostgreSQL,可以按照以下步骤进行: 1. 下载 PostgreSQL 的源代码包: ``` wget https://ftp.postgresql.org/pub/source/v13.2/postgresql-13.2.tar.gz ``` 2. 解压源代码包: ``` tar -zxvf postgresql-13.2.tar.gz ``` 3. 切换到解压后的目录: ``` cd postgresql-13.2 ``` 4. 安装编译依赖项: ``` apt install build-essential libreadline-dev zlib1g-dev libxml2-dev libssl-dev libsqlite3-dev ``` 5. 编译和安装 PostgreSQL: ``` ./configure --prefix=/usr/local/pgsql --with-pgport=5432 make make install ``` 6. 配置 PostgreSQL: ``` adduser postgres mkdir /usr/local/pgsql/data chown postgres /usr/local/pgsql/data su - postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start /usr/local/pgsql/bin/createuser -s -P username /usr/local/pgsql/bin/createdb databasename ``` 安装完成后,您可以使用以下命令登录 PostgreSQL: ``` su - postgres /usr/local/pgsql/bin/psql ``` 总之,如果您需要在 Ubuntu安装 PostgreSQL,您可以选择从 Ubuntu 软件源或者源代码编译安装。两种安装方式都比较简单,您可以根据自己的需要选择适合的方式。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值