如何在 Ubuntu 18.04 上以服务器模式安装和配置 pgAdmin 4如何在 Ubuntu 18.04 上以服务器模式安装和配置 pgAdmin 4如何在 Ubuntu 18.04 上以服务器模式安装和配置 pgAdmin 4如何在 Ubuntu 18.04 上以服务器模式安装和配置 pgAdmin 4
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 18.04 上以服务器模式安装和配置 pgAdmin 4

介绍

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

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

先决条件

要完成本教程,您需要:

  • 一台运行 Ubuntu 18.04 的服务器。此服务器应具有具有 sudo 权限的非 root 用户,以及配置有 ufw 的防火墙。如需有关设置的帮助,请遵循我们的 Ubuntu 18.04 初始服务器设置指南。
  • Nginx 安装并配置为 http://unix:/tmp/pgadmin4.sock 的反向代理,遵循如何在 Ubuntu 22.04 上将 Nginx 配置为反向代理的步骤 1 和 2。
  • 在您的服务器上安装了 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 安装其依赖项的过程。

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

  1. sudo apt update

接下来,安装以下依赖项。其中包括 libgmp3-dev,一个多精度算术库; libpq-dev,其中包括头文件和有助于与 PostgreSQL 后端通信的静态库:

  1. sudo apt install libgmp3-dev libpq-dev

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

  1. sudo mkdir -p /var/lib/pgadmin4/sessions
  2. sudo mkdir /var/lib/pgadmin4/storage
  3. sudo mkdir /var/log/pgadmin4

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

  1. sudo chown -R sammy:sammy /var/lib/pgadmin4
  2. sudo chown -R sammy:sammy /var/log/pgadmin4

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

  1. cd environments/
  2. source my_env/bin/activate

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

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

  1. python -m pip install -U pip

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

  1. wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v6.10/pip/pgadmin4-6.10-py3-none-any.whl

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

  1. python -m pip install wheel

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

  1. python -m pip install pgadmin4-6.10-py3-none-any.whl

接下来,安装 Gunicorn,这是一个 Python WSGI 服务器,它将与 Nginx 一起使用,以便在本教程后面的部分为 pgadmin web 界面提供服务:

  1. python -m pip install gunicorn

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

第 2 步 — 配置 pgAdmin 4

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

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

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

  1. nano my_env/lib/python3.10/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 设置脚本来设置您的登录凭据:

  1. python my_env/lib/python3.10/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:

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

第 3 步 — 启动 Gunicorn 并配置 Nginx

您将使用 Gunicorn 将 pgAdmin 作为 Web 应用程序提供服务。但是,作为应用程序服务器,Gunicorn 只能在本地使用,不能通过互联网访问。要使其远程可用,您需要使用 Nginx 作为反向代理。

完成将 Nginx 设置为反向代理的先决条件后,您的 Nginx 配置文件将包含以下内容:

server {
    listen 80;
    listen [::]:80;

    server_name your_domain www.your_domain;
        
    location / {
        proxy_pass http://unix:/tmp/pgadmin4.sock;
        include proxy_params;
    }
}

这种反向代理配置使您的 Gunicorn 服务器可以在本地浏览器中访问。使用 pgAdmin 应用程序启动 Gunicorn 服务器:

  1. gunicorn --bind unix:/tmp/pgadmin4.sock --workers=1 --threads=25 --chdir ~/environments/my_env/lib/python3.10/site-packages/pgadmin4 pgAdmin4:app
Output
[2022-08-29 00:19:11 +0000] [7134] [INFO] Starting gunicorn 20.1.0 [2022-08-29 00:19:11 +0000] [7134] [INFO] Listening at: unix:/tmp/pgadmin4.sock (7134) [2022-08-29 00:19:11 +0000] [7134] [INFO] Using worker: gthread [2022-08-29 00:19:11 +0000] [7135] [INFO] Booting worker with pid: 7135

注意:以这种方式调用 Gunicorn 会将进程绑定到您的终端。对于更长期的解决方案,请使用类似 Supervisor 的程序调用 Gunicorn。您可以按照本教程了解如何在 Ubuntu 和 Debian VPS 上安装和管理 Supervisor。

使用 Gunicorn 作为应用程序服务器,您的 Nginx 反向代理可以访问它,您就可以在 Web 浏览器中访问 pgAdmin。

第 4 步 — 访问 pgAdmin

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

http://your_server_ip

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

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

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

第 5 步 — 配置您的 PostgreSQL 用户

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

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

从您的终端,以您的超级用户角色打开 PostgreSQL 提示符:

  1. sudo -u sammy psql

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

  1. ALTER USER sammy PASSWORD 'password';

然后退出 PostgreSQL 提示:

  1. \q

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

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

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

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

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

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

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

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

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

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

这将打开一个创建表窗口。在此窗口的常规选项卡下,输入表的名称。这可以是您想要的任何内容,但为了简单起见,我们将其称为 table-01。

然后导航到 Columns 选项卡并单击窗口右上角的 + 号以添加一些列。添加列时,您需要为其指定名称和数据类型,如果您选择的数据类型需要,则可能需要选择长度。

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

单击保存按钮创建表。

至此,您已经创建了一个表并向其中添加了几列。但是,这些列还不包含任何数据。要将数据添加到新表,请在浏览器菜单中右键单击表的名称,将光标悬停在脚本上,然后单击插入脚本。

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

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

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

单击横向三角形图标 (▶) 以执行 INSERT 语句。请注意,在旧版本的 pgAdmin 中,执行图标改为闪电 (⚡)。

要查看表格及其中的所有数据,请再次在浏览器菜单中右键单击表格名称,将光标悬停在查看/编辑数据上,然后选择所有行。

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

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

结论

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

有关如何充分利用 pgAdmin 的所有功能的更多信息,我们鼓励您查看有关该主题的社区教程。

©2015-2025 艾丽卡 support@alaica.com