IP Address:34.239.162.61



PostgreSQL(即Postgres)是一款免费的开源关系数据库管理系统(RDBMS),以 Oracle 的开源替代产品作为目标,PostgreSQL 一直强调标准性和可扩展性。 PostgreSQL由 PostgreSQL Global Development Group 开发,是MacOS服务器的默认数据库,同时也支持其他平台。

pgAdmin 是最流行的开源 PostgreSQL 数据库服务器管理Web界面,具有丰富的功能。 pgAdmin 4 已经发布并可通过PostgreSQL yum 软件库的认可。

本文将演示如何在 CentOS 7 服务器上安装PostgreSQL 11和pgAdmin 4。 教程分为三个部分,首先我们将安装PostgreSQL,然后我们将配置 PostgreSQL 允许远程访问,最后我们将安装pgAdmin Web界面。

1. 演示环境说明

  • Operating System – CentOS 7.6
  • Hostname – postgresql.daehub.com
  • IP Address – 192.168.1.200/24

2. CentOS 7 系统安装 PostgreSQL 11

CentOS 7.6 发行版软件库默认安装 PostgreSQL 9.2,但是我们想要安装最新版的 PostgreSQL 11,就需要安装首先安装 PostgreSQL yum 软件库,命令如下:

# yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

软件库安装成功后,使用如下命令安装 PostgreSQL:

# yum install postgresql11 postgresql11-server

数据库安装成功后,则使用如下命令初始化数据库实例、设置开机启动并启动 PostgreSQL 数据库:

# /usr/pgsql-11/bin/postgresql-11-setup initdb
# systemctl enable postgresql-11
# systemctl start postgresql-11

数据库启动成功后,则使用”postgres”登录到服务器设置管理密码:

# su - postgres

示例将管理密码设置为”daehub”,至此,我们已经在 CentOS 7 系统成功安装了 PostgreSQL 11。

3. CentOS 7 系统配置 PostgreSQL 11 远程接入

默认情况下,PostgreSQL服务在本地端口5432运行。如果需要,我们可以将其配置为从网络中的其他计算机进行远程访问。

编辑 PostgreSQL 配置文件”/var/lib/pgsql/11/data/postgresql.conf”,修改文件中如下内容:

# listen_addresses = '*'

允许访问的网络在配置文件”/var/lib/pgsql/11/data/pg_hba.conf”中进行设置,使用如下命令将服务器所在网段加入到允许访问列表中:

# echo "host all all 192.168.1.0/24 md5" >> /var/lib/pgsql/11/data/pg_hba.conf

现在,就可以通过网络来远程访问 PostgreSQL数据库了。

配置完成后,使用如下命令重新启动数据库,并将 postgresql 服务添加到防火墙允许列表:

# systemctl restart postgresql-11
# firewall-cmd --add-service=postgresql --zone=public --permanent
# firewall-cmd --reload

现在,我们就可远程访问 PostgreSQL 服务器了。

4. CentOS 7 系统安装 pgAdmin 管理网页

为了简化 PostgreSQL 的数据库管理,我们将在 CentOS 7 服务器上安装了一个非常流行的SQL Web界面,即 pgAdmin 4。pgAdmin 同样可以在 PostgreSQL 11软件库中获得。但首先,我们需要安装 EPEL 软件库,因为 pgAdmin 4 需要一些 EPEL 软件库中的软件包。安装命令如下:

# yum install epel-release
# yum makecache fast
# yum install pgadmin4

pgAdmin 4是一个基于 Python 开发的 web 应用程序,因此它需要一个支持 Python 语言的 web 服务器来部署。幸运的是,yum 方式安装 pgAdmin 4 不需要考虑这些因素,因为它会自动安装 Apache HTTP服务器以及 Python 语言支持。

现在,使用如下命令启动 Web 服务器并开在防火墙中放行 HTTP 流量:

# systemctl enable httpd
# systemctl start httpd
# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --reload

pgAdmin 4还贴心的为我们提供了一个 Apache 的示例配置文件,我们只需要将其修改为可以被”httpd”支持即可:

# mv /etc/httpd/conf.d/pgadmin4.conf.sample /etc/httpd/conf.d/pgadmin4.conf

修改这个配置文件,将”ServerName”部分修改实际内容,示例使用”192.168.1.200″:

<VirtualHost *:80>
  ServerName 192.168.1.200
  LoadModule wsgi_module modules/mod_wsgi.so
  WSGIDaemonProcess pgadmin processes=1 threads=25
  WSGIScriptAlias /pgadmin4 /usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.wsgi

  <Directory /usr/lib/python2.7/site-packages/pgadmin4-web/>
    WSGIProcessGroup pgadmin
    WSGIApplicationGroup %{GLOBAL}
    <IfModule mod_authz_core.c>
    # Apache 2.4
    Require all granted
    </IfModule>
    <IfModule !mod_authz_core.c>
    # Apache 2.2
    Order Deny,Allow
    Deny from All
    Allow from 127.0.0.1
    Allow from ::1
    </IfModule>
  </Directory>
</VirtualHost>

修改Python 支持包对应文件”/usr/lib/python2.7/site-packages/pgadmin4-web/config_distro.py”的路径变量,在文件中添加如下内容:

SQLITE_PATH = '/var/lib/pgadmin/pgadmin.db'
SESSION_DB_PATH = '/var/lib/pgadmin/sessions'
STORAGE_DIR = '/var/lib/pgadmin/storage'
LOG_FILE = '/var/log/pgadmin/pgadmin.log'

使用如下命令修改对应文件夹的权限:

# chown -R apache:apache /var/log/pgadmin/
# chown -R apache:apache /var/lib/pgadmin/

最后,使用以下命令设置SELinux访问权限,如果禁用了SELinux,以下命令可以忽略:

# semanage fcontext -a -t httpd_sys_rw_content_t "/var/lib/pgadmin(/.*)?"
# restorecon -R /var/lib/pgadmin/
# semanage fcontext -a -t httpd_sys_rw_content_t "/var/log/pgadmin(/.*)?"
# restorecon -R /var/log/pgadmin/
# setsebool -P httpd_can_network_connect_db 1

现在,重新启动 Apache 服务器,并使用如下命令对 pgAdmin 4进行初始化:

# systemctl restart httpd
# python /usr/lib/python2.7/site-packages/pgadmin4-web/setup.py

系统会提示输入pgAdmin 4 的管理邮箱和登录密码,最后提示应用初始化完成。

现在,可以通过浏览器访问”http://YOUR_SERVER_IP/pgadmin4/”来打开 pgAdmin 4的页面了。

输入之前设置的邮箱和密码,然后点击登录,注意可以在语言下拉框里选择简体中文:

点击添加服务器按钮,输入相应信息:

最后,点击保存完成添加 PostgreSQL 服务器。

至此,我们已经成功在 CentOS 7 系统安装了 PostgreSQL 数据库服务器和 pgAadmin 4 管理界面。

发表评论

电子邮件地址不会被公开。 必填项已用*标注