为了降低成本,有些Web应用需要部署到开源的Linux操作系统上,而其中CentOS操作系统是比较常用的一种数据库,在此操作系统上,可以方便的搭建Java环境、Tomcat容器以及数据库服务,比如MySQL或者 PostgreSQL。在一般情况下,CentOS所在的服务器是可以联网的,因此,可以通过命令很方便的从网上下载相关的安装包以及依赖包等资源,极个别的可能由于网站资源的限制,下载不了或者下载速度过慢,但都可以通过切换默认的软件源地址来变相解决。
但是,如果CentOS所在的服务器限于安全原因,客户并未给我们配置访问外网的权限,那么如何安装PostgreSQL数据库呢?本文将通过具体步骤来详细讲解如何在CentOS7 系统上离线安装PostgreSQL12数据库。
1 离线安装包准备
首先可以访问网址 https://pkgs.org/search/?q=postgresql12 来下载对应的离线安装包文件,具体的示例截图如下:
通常情况下,需要下载如下几个RPM安装包:
postgresql12-12.3-1PGDG.rhel7.x86_64.rpm
#安装扩展
postgresql12-contrib-12.3-1PGDG.rhel7.x86_64.rpm
#客户端进行连接.
postgresql12-libs-12.3-1PGDG.rhel7.x86_64.rpm
#数据库的安装文件
postgresql12-server-12.3-1PGDG.rhel7.x86_64.rpm
注意:具体版本则需要根据自己的需要来进行选择,centos7对应于rhel7,如果是centos8 的话 选择 rhel8 进行下载。
下载完成的文件截图如下:
然后,就需要利用SSL工具将本地下载的RMP安装文件上传到CentOS7服务器的pg12rpm目录中。(虽然服务器不能联网访问网站资源,但可以进行远程登录进行管理)。
2 离线安装
首先进入上述离线安装文件所在的目录,用ll命令查询一下安装包是否已经离线上传好,界面截图如下:
在pg12rmp目录下,执行如下命令,进行安装包的安装:
yum localinstall *.rpm
期间可能会访问网络,但不影响安装,在提示是否确认安装时,选择y确认安装,等待安装即可。成功安装完postgresql 12 数据库之后,会自动创建一个服务,可以看一下名为postgresql-12的服务,使用如下命令进行服务状态查看:
systemctl status postgresql-12
首次安装后,此命令会显示相关的文件信息:
Loaded: loaded (/usr/lib/systemd/system/postgresql-12.service; enabled; vendor preset: disabled)
可以通过cat命令查看此文件的内容,其中包含相关的数据存储目录信息:
# Location of database directoryEnvironment=PGDATA=/var/lib/pgsql/12/data/ #程序目录ExecStart=/usr/pgsql-12/bin/postmaster -D${PGDATA}
3 数据库初始化
有了数据库的数据存储目录和程序所在目录,可以使用如下命令进行数据库的初始化工作,具体示例代码如下:
su- postgres cd /usr/pgsql-12/bin/ #初始化数据库./initdb -D /var/lib/pgsql/12/data/
成功执行命令后,需要退出postgres命令环境,用root 用户启动postgresql 服务,并且设置postgresql服务为自动启动,这样在服务器重启后,无需手动再启动postgresql 服务,具体命令如下:
systemctl enable postgresql-12 && systemctl restart postgresql-12
最后,需要对PG数据库进行安全性方面的配置,比如修改密码,创建用户,设置登录策略等等,下面给出一些示例代码:
su- postgres psql #修改密码alter role postgres with password 'your_root_pwd###'; #修改配置文件,配置登录策略等vim /var/lib/pgsql/12/data/pg_hba.conf #增加一行host all all 0.0.0.0/0 md5 # trust 是免密, md5 是加密#修改数据库其他配置信息vim /var/lib/pgsql/12/data/postgresql.conf listen_addresses ='*'max_connections =700#重启服务systemctl restart postgresql-12
重启后,再次查看数据库状态,命令如下: