PostgresSQL部署(V11.1)

1、准备

操作系统: CentOS 7 64位操作系统

安装程序: postgresql-11.1.tar

程序版本: v11.1

PostgreSQL数据库的安装程序可以通过从官网或者第三方网站下载(推荐从官网下载,安全性有一定保障)。可以直接下载程序到本地,然后通过FTP/SFTP方式上传到服务器。也可以通过使用wget命令获取。

wget获取安装包命令:

> wget https://ftp.postgresql.org/pub/source/v11.1/postgresql-11.1.tar.gz

2、安装

获取安装包

现将PostgreSQL的安装包下载到服务器中,我们在/opt/目录下创建保存安装包的目录/postgresql_pkg

此处选择直接从服务器下载PostgreSQL安装包。

执行命令:

> mkdir /opt/postgresql_pkg
> cd /opt/postgresql_pkg
> wget https://ftp.postgresql.org/pub/source/v11.1/postgresql-11.1.tar.gz

关闭selinux

在Linux系统中,如果selinux没有设置为 permissive 或者是 disable 的情况下,有些Linux系统上的应用程序运行时可能会被拒绝,导致无法正常运行,所以需要关闭selinux(如果有专业运维可以进行详细配置来规避此问题)。

执行命令:

> vim /etc/selinux/config

修改内容:
SELINUX=disable
#SELINUXTYPE=targeted

创建用户

需要注意的是 PostgreSQL是禁止使用超级管理员来运行服务启动命令的,所以我们需要创建一个账号来进行后续的PostgreSQL的安装。

我们创建一个用户组(组名为postgres),向刚创建的用户组中添加一个用户账号(用户名为:postgres),并给该用户创建密码。

执行命令:

> groupadd postgres
> useradd -g postgres postgres
> passwd postgres

创建目录

创建 PostgreSQL需要的目录,并且为目录 /mnt/db1赋予读写权限。

mkdir -p /mnt/db1/pgdata/pgsql /mnt/db1/pgdata/pgtbs /mnt/db1/archivelog /backups
chmod -R 775 /mnt/db1
chown -R postgres:postgres /mnt/db1

安装依赖

在正式编译安装程序之前需要安装 PostgreSQL 的依赖。

> yum install -y gcc gcc-c++  epel-release llvm5.0 llvm5.0-devel clang libicu-devel perl-ExtUtils-Embed zlib-devel openssl openssl-devel pam-devel libxml2-devel libxslt-devel openldap-devel systemd-devel tcl-devel python-devel

> yum install -y llvm5.0 llvm5.0-devel

编译安装

进入保存 PostgreSQL 安装包的目录 /opt/postgresql_pkg,解压、编译、安装等操作

执行命令:

> cd /opt/postgresql_pkg

进入保存安装包的目录之后,解压安装包并进入解压后的目录。

执行命令:

> tar -zxvf ./postgresql-11.1.tar.gz
> mkdir -p ./postgresql-11.1/build_dir
> cd ./postgresql-11.1/build_dir

在进行编译前,需要修改编译所需的配置文件。

执行命令:

> vim ../src/Makefile.global.in

修改以下行:
COMPILE.c.bc = $(CLANG) -Wno-ignored-attributes $(BITCODE_CFLAGS) $(CPPFLAGS) -flto=thin -emit-llvm -c
修改为:
COMPILE.c.bc = $(CLANG) -Wno-ignored-attributes $(BITCODE_CFLAGS) $(CPPFLAGS) -emit-llvm -c

保存之后,开始编辑安装 PostgreSQL。

执行命令:

> ../configure --prefix=/usr/pgsql-11 --enable-nls --with-perl --with-python --with-tcl --with-gssapi --with-llvm LLVM_CONFIG='/usr/lib64/llvm5.0/bin/llvm-config' --with-icu --with-openssl --with-pam --with-ldap --with-systemd --with-libxml --with-libxslt
> make world
> make install

启动配置

添加启动配置文件。

执行命令:

> vim /usr/lib/systemd/system/postgresql-11.service

向新建的文件中贴入一下内容。

[Unit]
Description=PostgreSQL 11 database server
Documentation=https://www.postgresql.org/docs/11/static/
After=syslog.target
After=network.target
 
[Service]
Type=notify
User=postgres
Group=postgres
Environment=PGDATA=/mnt/db1/pgdata/pgsql/
OOMScoreAdjust=-1000
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0
ExecStart=/usr/pgsql-11/bin/postmaster -D ${PGDATA}
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
 
[Install]
WantedBy=multi-user.target

环境变量

需要设置环境变量,否则 PostgreSQL 的安装命令无法正常使用。

修改 /etc/profile文件。

执行命令:

> vim /etc/profile

向打开的配置文件最后处添加一下内容。

export PGPORT=8432
export PGHOME=/usr/pgsql-11
export PGDATA=/mnt/db1/pgdata/pgsql
export PATH=$PGHOME/bin:$PATH
export MANPATH=$PGHOME/share/man:$MANPATH
export LANG=en_US.UTF-8
export DATE='date +"%Y%m%d%H%M"'
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres

保存之后,执行命令使环境变量生效。

> source /etc/profile

初始化数据库

初始化 PostgreSQL数据库,切换账号到postgres,进行初始化操作。

> su - postgres
> initdb -D $PGDATA -U postgres --locale=en_US.UTF8 -E UTF8

需要注意的是,如果此处没有切换账号,仍然使用root账号进行初始化时,会反馈错误信息,无法初始化数据库。

可能报出错误信息如下:

initdb: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.

报出此错误时需要先执行切换用户命令。

修改数据库参数

修改监听地址权限、端口等信息。

> vim /mnt/db1/pgdata/pgsql/postgresql.conf

需要修改如下内容:

listen_addresses = '*'
unix_socket_directories = '.'
port = 8432

此处需要注意,PostgreSQL默认端口为5432,此处将端口修改为8432。

修改访问权限

> vim /mnt/db1/pgdata/pgsql/pg_hba.conf

添加如下命令

host all all 0.0.0.0/0 md5 # 其他用户登陆

所有配置文件修改成功后,执行 exit命令退出 postgres用户。

> exit

设置防火墙规则

> firewall-cmd --zone=public --add-port=8432/tcp --permanent
> firewall-cmd --reload

设置开机自启动

设置开机自动启动服务,并且启动PostgreSQL服务。

> systemctl enable postgresql-11.service
> systemctl start postgresql-11.service

至此PostgreSQL已经安装成功并且启动。

3、维护

进入系统切换 用户到postgres。进入PostgreSQL客户端添加用户。

切换账号

> su - postgres

然后执行命令进入 PostgreSQL客户端。

> psql
# 在客户端内执行添加用户命令
ALTER USER postgres WITH encrypted PASSWORD 'postgres';

第三方客户端

第三方客户端可以使用 Navicat进行连接对数据表进行管理。

你可能感兴趣的:(移动互联网,数据库,企业应用,服务器技术,数据库,PostgresSQL,关系数据库)