如何在服务器模式下安装和配置pgAdmin4

来自菜鸟教程
跳转至:导航、​搜索

介绍

pgAdmin 是 PostgreSQL 及其相关数据库管理系统的开源管理和开发平台。 它用 Python 和 jQuery 编写,支持 PostgreSQL 中的所有功能。 您可以使用 pgAdmin 来完成从编写基本 SQL 查询到监控数据库和配置高级数据库架构的所有工作。

在本教程中,我们将介绍在 Ubuntu 18.04 服务器上安装和配置最新版本的 pgAdmin、通过 Web 浏览器访问 pgAdmin 并将其连接到服务器上的 PostgreSQL 数据库的过程。

先决条件

要完成本教程,您需要:

  • 运行 Ubuntu 18.04 的服务器。 此服务器应具有具有 sudo 权限的非 root 用户,以及配置为 ufw 的防火墙。 如需有关设置的帮助,请遵循我们的 Initial Server Setup Guide for Ubuntu 18.04
  • 安装在您的服务器上的 Apache Web 服务器。 按照我们关于 如何在 Ubuntu 18.04 上安装 Apache Web 服务器的指南在您的机器上进行配置。
  • PostgreSQL 安装在您的服务器上。 您可以按照我们关于 如何在 Ubuntu 18.04 上安装和使用 PostgreSQL 的指南进行设置。 当您按照本指南进行操作时,一定要创建一个新角色和数据库,因为您需要将 pgAdmin 连接到您的 PostgreSQL 实例。
  • Python 3 和 venv 安装在您的服务器上。 按照如何在Ubuntu 18.04服务器上安装Python 3并设置编程环境安装这些工具并设置虚拟环境。

第 1 步 — 安装 pgAdmin 及其依赖项

在撰写本文时,pgAdmin 的最新版本是 pgAdmin 4,而可通过官方 Ubuntu 存储库获得的最新版本是 pgAdmin 3。 不过,pgAdmin 3 不再受支持,项目维护人员建议安装 pgAdmin 4。 在这一步中,我们将介绍在虚拟环境中安装最新版本的 pgAdmin 4 的过程(按照项目开发团队的建议)并使用 apt 安装其依赖项。

首先,如果您最近没有这样做,请更新服务器的包索引:

sudo apt update

接下来,安装以下依赖项。 其中包括 libgmp3-dev,一个多精度算术库; libpq-dev,包括头文件和有助于与 PostgreSQL 后端通信的静态库; 和 libapache2-mod-wsgi-py3,一个 Apache 模块,允许您在 Apache 中托管基于 Python 的 Web 应用程序:

sudo apt install libgmp3-dev libpq-dev libapache2-mod-wsgi-py3

在此之后,创建几个目录,pgAdmin 将在其中存储其会话数据、存储数据和日志:

sudo mkdir -p /var/lib/pgadmin4/sessions
sudo mkdir /var/lib/pgadmin4/storage
sudo mkdir /var/log/pgadmin4

然后,将这些目录的所有权更改为您的非 root 用户和组。 这是必要的,因为它们当前由您的 root 用户拥有,但我们将从您的非 root 用户拥有的虚拟环境安装 pgAdmin,并且安装过程涉及在这些目录中创建一些文件。 但是,在安装之后,我们会将所有权更改为 www-data 用户和组,以便可以将其提供给网络:

sudo chown -R sammy:sammy /var/lib/pgadmin4
sudo chown -R sammy:sammy /var/log/pgadmin4

接下来,打开您的虚拟环境。 导航到您的编程环境所在的目录并激活它。 按照先决条件Python 3教程的命名约定,我们将进入environments目录并激活my_env环境:

cd environments/
source my_env/bin/activate

激活虚拟环境后,请确保您的系统上安装了最新版本的 pip。 默认 Ubuntu 18.04 存储库中可用的 pip 版本是 9.0.1,而最新版本是 21.0.1。 如果按照先决条件 Python 安装教程中的说明安装了 pyton3-pip 包,但尚未将其升级到最新版本,则在下一步配置 pgAdmin 时会遇到问题。

要将 pip 升级到最新版本,请运行以下命令:

python -m pip install -U pip

在此之后,将 pgAdmin 4 源代码下载到您的机器上。 要查找最新版本的源代码,请导航到 pgAdmin 4 (Python Wheel) 下载页面 。 单击最新版本的链接(v5.1,截至本文撰写时),然后在下一页单击链接阅读 pip。 从这个 文件浏览器 页面,复制以 .whl 结尾的文件链接——用于 Python 发行版的标准内置包格式。 然后返回您的终端并运行以下 wget 命令,确保将链接替换为您从 PostgreSQL 站点复制的链接,这会将 .whl 文件下载到您的服务器:

wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v5.1/pip/pgadmin4-5.1-py3-none-any.whl

接下来安装wheel包,车轮包装标准的参考实现。 一个 Python 库,这个包用作构建轮子的扩展,并包括一个用于处理 .whl 文件的命令行工具:

python -m pip install wheel

然后使用以下命令安装 pgAdmin 4 包:

python -m pip install pgadmin4-5.1-py3-none-any.whl

这负责安装 pgAdmin 及其依赖项。 但是,在将其连接到数据库之前,您需要对程序的配置进行一些更改。

第 2 步 — 配置 pgAdmin 4

尽管 pgAdmin 已安装在您的服务器上,但您仍然必须执行几个步骤以确保它具有允许其正确服务 Web 界面所需的权限和配置。

pgAdmin 的主配置文件 config.py 在任何其他配置文件之前被读取。 它的内容可以用作进一步配置设置的参考点,这些设置可以在 pgAdmin 的其他配置文件中指定,但为避免意外错误,您不应编辑 config.py 文件本身。 我们将向一个名为 config_local.py 的新文件添加一些配置更改,该文件将在主文件之后读取。

现在使用您喜欢的文本编辑器创建此文件。 在这里,我们将使用 nano

nano my_env/lib/python3.6/site-packages/pgadmin4/config_local.py

在您的编辑器中,添加以下内容:

环境/my_env/lib/python3.6/site-packages/pgadmin4/config_local.py

LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
STORAGE_DIR = '/var/lib/pgadmin4/storage'
SERVER_MODE = True

以下是这五个指令的作用:

  • LOG_FILE:这定义了 pgAdmin 的日志将被存储的文件。
  • SQLITE_PATH:pgAdmin 将用户相关数据存储在 SQLite 数据库中,该指令将 pgAdmin 软件指向此配置数据库。 由于此文件位于持久目录 /var/lib/pgadmin4/ 下,升级后您的用户数据不会丢失。
  • SESSION_DB_PATH:指定将使用哪个目录来存储会话数据。
  • STORAGE_DIR:定义 pgAdmin 将存储其他数据的位置,例如备份和安全证书。
  • SERVER_MODE:将此指令设置为 True 告诉 pgAdmin 在服务器模式下运行,而不是在桌面模式下运行。

请注意,这些文件路径中的每一个都指向您在步骤 1 中创建的目录。

添加这些行后,保存并关闭文件。 如果您使用 nano,请按 CTRL + X,然后按 Y,然后按 ENTER

有了这些配置,运行 pgAdmin 设置脚本来设置您的登录凭据:

python my_env/lib/python3.6/site-packages/pgadmin4/setup.py

运行此命令后,您将看到一个提示,要求您输入电子邮件地址和密码。 当您稍后访问 pgAdmin 时,这些将用作您的登录凭据,因此请务必记住或记下您在此处输入的内容:

Output. . .
Enter the email address and password to use for the initial pgAdmin user account:

Email address: sammy@example.com
Password:
Retype password:

在此之后,停用您的虚拟环境:

deactivate

调用您在 config_local.py 文件中指定的文件路径。 这些文件保存在您在步骤 1 中创建的目录中,这些目录当前归您的非 root 用户所有。 但是,运行 Web 服务器的用户和组必须可以访问它们。 默认情况下,在 Ubuntu 18.04 上,这些是 www-data 用户和组,因此更新以下目录的权限以赋予 www-data 对它们的所有权:

sudo chown -R www-data:www-data /var/lib/pgadmin4/
sudo chown -R www-data:www-data /var/log/pgadmin4/

有了这个,pgAdmin 就完全配置好了。 但是,您的服务器尚未提供该程序,因此它仍然无法访问。 为了解决这个问题,我们将配置 Apache 为 pgAdmin 提供服务,以便您可以通过 Web 浏览器访问其用户界面。

第 3 步 — 配置 Apache

Apache Web 服务器使用 虚拟主机 来封装配置细节并从单个服务器托管多个域。 如果您遵循先决条件 Apache 教程,您可能已经设置了一个名为 your_domain.conf 的示例虚拟主机文件,但在这一步中,我们将创建一个新的文件,我们可以从中提供 pgAdmin Web 界面。

首先,请确保您位于根目录中:

cd /

然后在您的 /sites-available/ 目录中创建一个名为 pgadmin4.conf 的新文件。 这将是您服务器的虚拟主机文件:

sudo nano /etc/apache2/sites-available/pgadmin4.conf

将以下内容添加到此文件中,确保更新突出显示的部分以与您自己的配置保持一致:

/etc/apache2/sites-available/pgadmin4.conf

<VirtualHost *>
    ServerName your_server_ip

    WSGIDaemonProcess pgadmin processes=1 threads=25 python-home=/home/sammy/environments/my_env
    WSGIScriptAlias / /home/sammy/environments/my_env/lib/python3.6/site-packages/pgadmin4/pgAdmin4.wsgi

    <Directory "/home/sammy/environments/my_env/lib/python3.6/site-packages/pgadmin4/">
        WSGIProcessGroup pgadmin
        WSGIApplicationGroup %{GLOBAL}
        Require all granted
    </Directory>
</VirtualHost>

保存并关闭虚拟主机文件。 接下来,使用 a2dissite 脚本禁用默认虚拟主机文件 000-default.conf

sudo a2dissite 000-default.conf

注意: 如果您遵循了先决条件 Apache 教程,您可能已经禁用了 000-default.conf 并设置了示例虚拟主机配置文件(先决条件中名为 your_domain.conf)。 如果是这种情况,您需要使用以下命令禁用 your_domain.conf 虚拟主机文件:

sudo a2dissite your_domain.conf

然后使用 a2ensite 脚本启用 pgadmin4.conf 虚拟主机文件。 这将创建一个从 /sites-available/ 目录中的虚拟主机文件到 /sites-enabled/ 目录的符号链接:

sudo a2ensite pgadmin4.conf

在此之后,测试您的配置文件的语法是否正确:

apachectl configtest

如果您的配置文件全部正常,您将看到 Syntax OK。 如果您在输出中看到错误,请重新打开 pgadmin4.conf 文件并仔细检查您的 IP 地址和文件路径是否正确,然后重新运行 configtest

在输出中看到 Syntax OK 后,重新启动 Apache 服务以读取新的虚拟主机文件:

sudo systemctl restart apache2

pgAdmin 现在已完全安装和配置。 接下来,我们将介绍如何在将 pgAdmin 连接到 PostgreSQL 数据库之前从浏览器访问它。

第 4 步 - 访问 pgAdmin

在您的本地计算机上,打开您首选的 Web 浏览器并导航到您的服务器的 IP 地址:

http://your_server_ip

在那里,您将看到类似于以下内容的登录屏幕:

输入您在第 2 步中定义的登录凭据,您将被带到 pgAdmin 欢迎屏幕:

现在您已经确认可以访问 pgAdmin 界面,剩下要做的就是将 pgAdmin 连接到您的 PostgreSQL 数据库。 不过,在此之前,您需要对 PostgreSQL 超级用户的配置进行一点小改动。

第 5 步 — 配置您的 PostgreSQL 用户

如果您遵循 先决条件 PostgreSQL 教程 ,您应该已经在您的服务器上安装了 PostgreSQL,并设置了新的超级用户角色和数据库。

默认情况下,在 PostgreSQL 中,您使用“身份识别协议”或“身份”身份验证方法作为数据库用户进行身份验证。 这涉及 PostgreSQL 获取客户端的 Ubuntu 用户名并将其用作允许的数据库用户名。 在许多情况下,这可以提高安全性,但在您希望外部程序(例如 pgAdmin)连接到您的数据库之一的情况下,它也可能导致问题。 为了解决这个问题,我们将为这个 PostgreSQL 角色设置一个密码,这将允许 pgAdmin 连接到您的数据库。

在您的终端中,在您的超级用户角色下打开 PostgreSQL 提示符:

sudo -u sammy psql

在 PostgreSQL 提示符下,更新用户配置文件以使用您选择的强密码:

ALTER USER sammy PASSWORD 'password';

然后退出 PostgreSQL 提示符:

\q

接下来,在浏览器中回到 pgAdmin 4 界面,找到左侧的 Browser 菜单。 右键单击 Servers 打开上下文菜单,将鼠标悬停在 Create 上,然后单击 Server...

这将导致您的浏览器中弹出一个窗口,您将在其中输入有关您的服务器、角色和数据库的信息。

General 选项卡中,输入此服务器的名称。 这可以是您想要的任何内容,但您可能会发现使其具有描述性会很有帮助。 在我们的示例中,服务器名为 Sammy-server-1

接下来,单击 连接 选项卡。 在 主机名/地址 字段中,输入 localhost。 默认情况下,Port 应设置为 5432,这将适用于此设置,因为这是 PostgreSQL 使用的默认端口。

Maintenance database 字段中,输入您要连接的数据库的名称。 请注意,此数据库必须已在您的服务器上创建。 然后,分别在 UsernamePassword 字段中输入您之前配置的 PostgreSQL 用户名和密码。

其他选项卡中的空白字段是可选的,只有在您考虑到需要它们的特定设置时才需要填写它们。 点击【X10X】保存【X18X】按钮,数据库会出现在【X95X】浏览器【X106X】菜单中【X71X】服务器【X82X】下。

您已成功将 pgAdmin4 连接到您的 PostgreSQL 数据库。 您可以从 pgAdmin 仪表板执行任何您在 PostgreSQL 提示符下执行的操作。 为了说明这一点,我们将创建一个示例表并通过 Web 界面使用一些示例数据填充它。

第 6 步 — 在 pgAdmin 仪表板中创建一个表

在 pgAdmin 仪表板中,找到窗口左侧的 Browser 菜单。 单击 Servers (1) 旁边的加号 (+) 以展开其中的树形菜单。 接下来,单击您在上一步中添加的服务器左侧的加号(在我们的示例中为 Sammy-server-1),然后展开 Databases,数据库的名称您添加了(在我们的示例中为 sammy),然后添加了 Schemas (1)。 您应该会看到如下所示的树形菜单:

右键单击 Tables 列表项,然后将光标悬停在 Create 上并单击 Table...

这将打开一个 Create-Table 窗口。 在此窗口的 General 选项卡下,输入表的名称。 这可以是您想要的任何东西,但为了简单起见,我们将其称为 table-01

然后导航到 Columns 选项卡并单击窗口右上角的 + 符号以添加一些列。 添加列时,需要给它一个Name和一个Data type,如果需要的话,你可能需要选择一个Length您选择的数据类型。

此外, 官方 PostgreSQL 文档 指出,向表添加主键通常是最佳实践。 主键 是一个约束,它指示可以用作表中行的特殊标识符的特定列或列集。 这不是必需的,但如果您想将一个或多个列设置为主键,请将最右侧的开关从 No 切换到 Yes

单击保存按钮创建表。

至此,您已经创建了一个表并向其中添加了几列。 但是,这些列尚不包含任何数据。 要向新表中添加数据,请在 Browser 菜单中右键单击表的名称,将光标悬停在 Scripts 上,然后单击 INSERT Script

这将在仪表板上打开一个新面板。 在顶部,您将看到一个部分完成的 INSERT 语句,其中包含适当的表和列名称。 继续用一些虚拟数据替换问号(?),确保您添加的数据与您为每列选择的数据类型一致。 请注意,您还可以通过将每一行添加到一组新的括号中来添加多行数据,每组括号用逗号分隔,如下例所示。

如果您愿意,请随意用此示例 INSERT 语句替换部分完成的 INSERT 脚本:

INSERT INTO public."table-01"(
    col1, col2, col3)
    VALUES ('Juneau', 14, 337), ('Bismark', 90, 2334), ('Lansing', 51, 556);

点击侧边三角形图标()执行INSERT语句。 请注意,在旧版本的 pgAdmin 中,执行图标是一个闪电 ()。

要查看表格及其中的所有数据,请再次右键单击 Browser 菜单中的表格名称,将光标悬停在 View/Edit Data 上,然后选择 [ X181X]所有行。

这将打开另一个新面板,在下方面板的 数据输出 选项卡中,您可以查看该表中保存的所有数据。

这样,您就成功地创建了一个表,并通过 pgAdmin Web 界面用一些数据填充了它。 当然,这只是您可以用来通过 pgAdmin 创建表的一种方法。 例如,可以使用 SQL 而不是此步骤中描述的基于 GUI 的方法来创建和填充表。

结论

在本指南中,您学习了如何从 Python 虚拟环境安装 pgAdmin 4、对其进行配置、使用 Apache 将其提供给 Web,以及如何将其连接到 PostgreSQL 数据库。 此外,本指南还介绍了一种可用于创建和填充表的方法,但 pgAdmin 不仅可以用于创建和编辑表。

有关如何充分利用 pgAdmin 的所有功能的更多信息,我们鼓励您查看 项目的文档 。 您还可以通过我们关于该主题的 社区教程 了解有关 PostgreSQL 的更多信息。