Ubuntu 22.04服务器模式安装配置pgAdmin 4完整教程
开始引言
pgAdmin是一个开源的管理和开发平台,专为PostgreSQL及其相关的数据库管理系统而设计。它使用Python和jQuery编写,支持PostgreSQL中的所有功能。你可以使用pgAdmin执行从编写基本的SQL查询到监控数据库和配置高级数据库架构等各种操作。
在本教程中,我们将详细介绍如何在Ubuntu 22.04服务器上安装和配置最新版本的pgAdmin,通过Web浏览器访问pgAdmin,并将其连接到您服务器上的PostgreSQL数据库。
先决条件
完成本教程,你将需要以下物品:
- 一台运行Ubuntu 22.04的服务器。该服务器应具有一个拥有sudo权限的非root用户,以及使用ufw配置的防火墙。如需帮助设置,请遵循我们的《Ubuntu 22.04初始服务器设置指南》。
- 已安装并配置Nginx作为http://unix:/tmp/pgadmin4.sock的反向代理,遵循《如何在Ubuntu 22.04上配置Nginx作为反向代理》的步骤1和2。
- 在您的服务器上安装PostgreSQL。您可以按照我们的《如何在Ubuntu 22.04上安装和使用PostgreSQL》指南进行设置。按照该指南时,请确保创建一个新角色和数据库,因为您需要这两者来将pgAdmin连接到PostgreSQL实例。
- 在您的服务器上安装Python 3和venv。按照《如何在Ubuntu 22.04服务器上安装Python 3并设置编程环境》来安装这些工具并设置虚拟环境。
第一步 – 安装pgAdmin及其依赖组件
截至目前,pgAdmin的最新版本是pgAdmin 4,而通过官方Ubuntu存储库可用的最新版本是pgAdmin 3。尽管pgAdmin 3不再得到支持,但项目维护人员建议安装pgAdmin 4。在这一步中,我们将介绍在虚拟环境中安装最新版本的pgAdmin 4(按项目开发团队的建议),并使用apt安装其依赖项的过程。
首先,如果你最近还没有这样做的话,请更新你的服务器软件包索引。
- sudo apt update
接下来,安装以下依赖项。它们包括libgmp3-dev,一种多精度算术库;libpq-dev,其中包括与PostgreSQL后端通信所需的头文件和静态库。
- sudo apt install libgmp3-dev libpq-dev
随后,创建一些目录,用于存储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用户和组,以便能够通过Web提供服务。
- sudo chown -R sammy:sammy /var/lib/pgadmin4
- sudo chown -R sammy:sammy /var/log/pgadmin4
接下来,打开你的虚拟环境。进入你的编程环境所在的目录并激活它。按照前置 Python 3 教程的命名约定,我们将进入环境目录并激活 my_env 环境。
- cd environments/
- source my_env/bin/activate
在激活虚拟环境后,确保你的系统已安装了最新版本的pip是明智的。要将pip升级到最新版本,请运行以下命令:
- python -m pip install -U pip
使用pip来安装pgadmin4。
- python -m pip install pgadmin4==6.10
接下来,安装Gunicorn,这是一个Python WSGI服务器,将在本教程后面与Nginx一起用于提供pgadmin网页接口。
- python -m pip install gunicorn
这就完成了pgAdmin和它的依赖项的安装。在将其连接到数据库之前,您需要对程序的配置进行一些更改。
第二步——配置pgAdmin 4
虽然pgAdmin已经安装在您的服务器上,但还有一些步骤需要进行,以确保它具有所需的权限和配置,以便能够正确提供Web界面服务。
pgAdmin的主要配置文件config.py在任何其他配置文件之前被读取。它的内容可以用作参考点,以进一步配置pgAdmin的其他配置文件,但为了避免意外错误,不应编辑config.py文件本身。我们将在一个名为config_local.py的新文件中添加一些配置更改,该文件将在主配置文件之后被读取。
现在使用您喜欢的文本编辑器创建此文件。在这里,我们将使用nano。
- 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以服务器模式运行,而不是桌面模式。
请注意,每个文件路径都指向您在第一步创建的目录。
在添加了这些行之后,保存并关闭文件。如果您使用的是nano编辑器,按下CTRL + X,然后按Y,最后按ENTER以保存并关闭文件。
在配置完成后,运行pgAdmin设置脚本以设置登录凭据。
- python my_env/lib/python3.10/site-packages/pgadmin4/setup.py
运行此命令后,您将会看到一个提示,要求输入您的电子邮件地址和密码。当您以后访问pgAdmin时,这些将作为您的登录凭据,所以请确保记住或记录下您在此输入的内容。
. . . 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,这样您就可以通过Web浏览器访问其用户界面。
步骤3 — 启动Gunicorn并配置Nginx
您将使用Gunicorn作为应用程序的服务器,将pgAdmin作为Web应用程序提供。然而,作为应用程序服务器,Gunicorn只能在本地访问,不能通过互联网访问。为了使其可以远程访问,您需要使用Nginx作为反向代理。
在完成将Nginx设置为反向代理的先决条件后,您的Nginx配置文件将包含以下内容:
您的域名在/etc/nginx/sites-available/目录下。
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服务器。
- gunicorn –bind unix:/tmp/pgadmin4.sock –workers=1 –threads=25 –chdir ~/environments/my_env/lib/python3.10/site-packages/pgadmin4 pgAdmin4:app
[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
在您的本地计算机上,打开您偏爱的网络浏览器,并导航到您服务器的域名:
http://your_domain
一旦到达那里,您会看到一个类似于下面的登录界面。

输入您在步骤2中定义的登录凭证,您将会看到pgAdmin的欢迎界面。

既然您确认您可以访问pgAdmin界面,现在所需要做的就是将pgAdmin连接到您的PostgreSQL数据库。不过,在这之前,您需要对您的PostgreSQL超级用户的配置进行一个小的更改。
第五步 — 配置您的PostgreSQL用户
如果您按照前置的PostgreSQL教程进行了操作,您的服务器上应该已经安装了PostgreSQL,并已设置了新的超级用户角色和数据库。
接下来,在您的浏览器中返回到pgAdmin 4界面,并找到左侧的浏览器菜单。右键单击Servers以打开上下文菜单,将鼠标悬停在Create上,并点击Server…

这将导致一个窗口在您的浏览器中弹出,您将在其中输入有关您的服务器、角色和数据库的信息。
在”常规”选项卡中,输入此服务器的名称。可以随意取名,但建议使用一些描述性的词语。例如,我们将服务器命名为Sammy-server-1。

接下来,点击连接选项卡。由于pgAdmin正在与您的Postgres数据库运行在同一台机器上,您可以使用Unix域套接字进行连接。与TCP套接字连接相比,Unix域套接字具有更高的性能和更低的延迟。这种方法还可以跳过设置密码的步骤。在”主机名/地址”字段中输入/var/run/postgresql。端口默认应该设置为5432,这适用于此设置,因为这是PostgreSQL默认使用的端口。
在维护数据库字段中,输入您想要连接的数据库的名称。请注意,该数据库必须已经在您的服务器上创建。然后,输入之前配置的PostgreSQL用户名。在这里,我们创建的数据库是sammy,用户名也是sammy。

只要您有特定的设置,其他选项卡中的空字段是可选的,只有在有必要时才需要填写它们。点击保存按钮,数据库将出现在浏览器菜单中的服务器下。
您已成功将pgAdmin 4连接到PostgreSQL数据库。您可以通过pgAdmin仪表板完成几乎与使用PostgreSQL命令行相同的任何操作。为了说明此点,我们将通过Web界面创建一个示例表并填充一些样本数据。
第六步 – 在pgAdmin概览页中创建表格
从pgAdmin仪表板上,找到窗口左侧的浏览器菜单。点击”服务器(1)”旁边的加号(+)来展开其中的树状菜单。接下来,点击先前添加的服务器(在我们的例子中是Sammy-server-1)左侧的加号,然后展开”数据库”、”添加的数据库的名称”(在我们的例子中是sammy)以及”模式(1)”。您应该会看到一个类似下面的树状菜单:

在表格列表项上点击右键,然后将鼠标悬停在”创建”上并点击”表格”。

这将打开一个”创建表格”的窗口。在该窗口的”常规”选项卡下,输入一个表格的名称。这个名称可以任意设置,但为了简单起见,我们将称之为”表格-01″。

然后导航到”列”选项卡,点击窗口右上角的”+”号来添加一些列。在添加列时,您需要输入名称和数据类型,如果所选数据类型要求,可能还需要选择长度。
此外,官方的 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来创建和填充表。
结论
在这个指南中,您学习了如何从Python虚拟环境中安装pgAdmin 4,配置它,并通过Gunicorn和Nginx将其提供给网络,以及如何连接到PostgreSQL数据库。此外,本指南还介绍了一种方法,可以用来创建和填充表格,但pgAdmin可以用于更多不仅仅是创建和编辑表格的功能。
为了了解如何充分利用pgAdmin的所有功能,我们鼓励您查看该项目的文档以获取更多信息。您还可以通过我们社区的相关教程进一步了解PostgreSQL。