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

介绍

pgAdmin是PostgreSQL及其相关数据库管理系统的开源管理和开发平台,以Python和jQuery编写,它支持PostgreSQL中发现的所有功能。

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

前提条件

要完成本教程,您将需要:

步骤 1 — 安装 pgAdmin 及其依赖

截至本文,最新的版本的pgAdmin是pgAdmin 4,而最新的版本可通过官方的Ubuntu存储库是pgAdmin 3.pgAdmin 3已经不受支持,但项目维护者建议安装pgAdmin 4. 在这个步骤中,我们将通过在虚拟环境中安装最新版本的pgAdmin 4的过程(如项目开发团队的建议)并使用apt安装其依赖。

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

1sudo apt update

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

1sudo apt install libgmp3-dev libpq-dev

接下来,创建几个目录, pgAdmin 将其会话数据、存储数据和日志存储在其中:

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

然后,将这些目录的所有权更改为您的非根用户和组,这是必要的,因为它们目前由您的 root 用户拥有,但我们将从您的非根用户拥有的虚拟环境中安装pgAdmin,安装过程涉及在这些目录中创建一些文件。

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

接下来,打开您的虚拟环境. 导航到您的编程环境中的目录并激活它. 按照 前提Python 3教程的命名惯例,我们将进入环境目录并激活my_env环境:

1cd environments/
2source my_env/bin/activate

在激活虚拟环境后,要确保您在系统上安装了最新版本的「pip」是明智的。从默认 Ubuntu 18.04 存储库中提供的版本的「pip」是版本 9.0.1,而最新版本是 21.0.1。

若要將「pip」升級至最新版本,請執行以下命令:

1python -m pip install -U pip

接下来,将 pgAdmin 4 源代码下载到您的计算机上。 要找到源代码的最新版本,请导航到 pgAdmin 4 (Python Wheel) 下载页面。 点击最新版本的链接( v6.10),然后在下一页上点击阅读的链接 pip 。 从此 ** File Browser** 页面上,复制以 .whl 结束的文件链接 - 用于 Python 发行版的标准组件格式。 然后回到您的终端,运行下面的 wget 命令,确保将链接替换为您从 PostgreSQL 网站上复制的链接,该链接将下载到您的服务器上 .whl 文件:

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

接下来安装轮子包,是轮子包装标准的参考实现。Python库,此包作为构建轮子的扩展,并包含一个命令行工具,用于与whl文件工作:

1python -m pip install wheel

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

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

接下来,安装Python WSGI服务器Gunicorn,该服务器将与Nginx一起使用,以在教程中稍后为pgadmin Web 界面提供服务:

1python -m pip install gunicorn

然而,在将其连接到您的数据库之前,您需要对程序的配置做出一些更改。

步骤 2 — 配置 pgAdmin 4

虽然 pgAdmin 已安装在您的服务器上,但仍有几个步骤,您必须通过,以确保它有必要的权限和配置,以便它能够正确地服务于 Web 界面。

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

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

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

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

1[label environments/my_env/lib/python3.10/site-packages/pgadmin4/config_local.py]
2LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
3SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
4SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
5STORAGE_DIR = '/var/lib/pgadmin4/storage'
6SERVER_MODE = True

以下是这五项指令所做的:

  • LOG_FILE:这定义了将 pgAdmin 日志存储的文件。
  • SQLITE_PATH: pgAdmin 将用户相关数据存储在 SQLite 数据库中,本指令将 pgAdmin 软件指向此配置数据库。由于此文件位于持久目录 /var/lib/pgadmin4/ 下,您的用户数据将不会在升级后丢失。
  • SESSION_DB_PATH:指定将用于存储会话数据的目录。
  • STORAGE_DIR:定义了 pgAdmin 将存储其他数据,如备份和安全证书。
  • SERVER_MODE:将

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

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

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

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

运行此命令后,你会看到一个提示,要求你的电子邮件地址和密码. 这些将作为你的登录凭证,当你访问pgAdmin后,所以一定要记住或记住你在这里输入的内容:

1[secondary_label Output]
2. . .
3Enter the email address and password to use for the initial pgAdmin user account:
4
5Email address: [email protected]
6Password:
7Retype password:

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

步骤 3 – 启动 Gunicorn 和配置 Nginx

您将使用 Gunicorn 作为 Web 应用程序服务 pgAdmin. 然而,作为应用程序服务器 Gunicorn 将仅在本地提供,而不是通过互联网访问。

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

 1[label /etc/nginx/sites-available/your_domain]
 2server {
 3    listen 80;
 4    listen [::]:80;
 5
 6    server_name your_domain www.your_domain;
 7
 8    location / {
 9        proxy_pass http://unix:/tmp/pgadmin4.sock;
10        include proxy_params;
11    }
12}

此反向代理配置允许您的 Gunicorn 服务器在本地浏览器中可访问。

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

<$>[注] 注: 以这种方式调用Gunicorn将过程连接到您的终端。为了获得更长远的解决方案,请使用像Supervisor这样的程序调用Gunicorn。您可以遵循本教程(如何在Ubuntu和Debian VPS上安装和管理Supervisor)(https://andsky.com/tech/tutorials/how-to-install-and-manage-supervisor-on-ubuntu-and-debian-vps)。 <$>

随着Gunicorn作为一个应用程序服务器,通过您的Nginx反向代理,您已经准备好在您的Web浏览器中访问pgAdmin。

步骤 4 – 访问 pgAdmin

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

1http://your_server_ip

一旦到达那里,您将看到一个类似于以下的登录屏幕:

pgAdmin login screen

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

pgAdmin Welcome Page

现在你已经确认你可以访问pgAdmin界面,剩下的只是将pgAdmin连接到你的PostgreSQL数据库。

步骤 5 – 配置您的 PostgreSQL 用户

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

默认情况下,在 PostgreSQL 中,您使用身份验证协议相同身份验证方法作为数据库用户进行身份验证. 这涉及 PostgreSQL 使用客户端的 Ubuntu 用户名并使用它作为允许的数据库用户名。在许多情况下,这可以允许更大的安全性,但也可以在您希望外部程序(如 pgAdmin)连接到您的数据库的情况下引起问题。 为了解决此问题,我们将为此 PostgreSQL 角色设置密码,允许 pgAdmin 连接到您的数据库。

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

1sudo -u sammy psql

从PostgreSQL提示,更新用户配置文件,以获得您选择的强有力的密码:

1ALTER USER sammy PASSWORD 'password';

然后输出 PostgreSQL 提示:

1\q

接下来,回到浏览器中的pgAdmin 4接口,并在左侧找到 浏览器 菜单. 右键单击 ** 服务器** 以打开一个背景菜单,滚动鼠标在 ** 创建** 上,然后单击 ** 服务器...** 。

Create Server context menu

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

在 ** 一般** 选项卡中,输入这个服务器的名称。这可以是你想要的任何东西,但你可能觉得有帮助把它变成一些描述性的东西。

Create Server - General tab

接下来,单击连接选项卡。在主机名称/地址字段中,输入本地主机端口 应该默认设置为5432,这将为此设置工作,因为这是PostgreSQL使用的默认端口。

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

Create Server - Connection tab

其他选项卡中的空白字段是可选的,您只需要填写这些字段,如果您有需要设置的特定设置。 点击保存按钮,数据库将在浏览器菜单中的服务器下显示。

您已成功连接 pgAdmin4 到您的 PostgreSQL 数据库. 您可以从 pgAdmin 仪表板做任何事情,您可以从 PostgreSQL 提示中做。

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

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

Expanded Browser tree menu

右键单击 ** 表** 列表项,然后将导向器移动到 ** 创建** 并单击 ** 表...** 。

Create Table context menu

这会打开一个创建表窗口,在这个窗口的一般选项卡中,输入表的名称,这可以是你想要的任何东西,但为了让事情简单,我们会把它称为表-01

Create Table - General tab

然后导航到 选项卡,然后点击窗口右上角的 ** + ** 标志来添加一些列. 添加列时,您需要给它一个 ** 名称** 和一个 ** 数据类型** ,并且您可能需要选择一个 ** 长度** ,如果您所选择的数据类型要求。

此外, 官方 PostgreSQL 文档指出,将主要密钥添加到表中通常是最佳做法。 primary key 是一个限制,指示一个特定的列或列集,可以用作表中的行的特殊标识符。

点击保存按钮来创建表。

Create Table - Columns Tab with Primary Key turned on

到目前为止,您已经创建了一个表并添加了几个列,但这些列尚未包含任何数据. 若要将数据添加到新表中,请在 Browser 菜单中右键单击表的名称,在 ** Scripts** 上滚动导向器,然后单击 ** INSERT Script** 。

INSERT script context menu

这将在仪表板上打开一个新的面板。在顶部,您将看到一个部分完成的输入陈述,包含相应的表和列名称。继续,并用一些愚蠢的数据取代问题标记(? ),确保您添加的数据与每个列所选择的数据类型一致。

如果你愿意,请用以下示例INSERT语句替换部分完成的INSERT脚本:

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

Example INSERT statement

点击侧向三角形图标( )以执行INSERT声明. 请注意,在 pgAdmin 较早版本中,执行图标是闪电螺旋(** ☀** )。

要查看表和其中的所有数据,请在 ** 浏览器 ** 菜单中再次右键单击表的名称,将指针移动到 ** 查看/编辑数据** ,然后选择 ** 所有行** 。

View/Edit Data, All Rows context menu

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

View Data - example data output

有了它,你已经成功创建了一个表,并通过pgAdmin Web 界面填充了一些数据。当然,这只是你可以通过pgAdmin创建一个表的一种方法。

结论

在本指南中,您了解如何从Python虚拟环境中安装pgAdmin 4,配置它,用Gunicorn和Nginx服务到Web,以及如何将其连接到PostgreSQL数据库。

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

Published At
Categories with 技术
comments powered by Disqus