安装和配置 > 安装 ThingWorx > Ubuntu 安装 > PostgreSQL > 安装和配置 PostgreSQL (Ubuntu)
安装和配置 PostgreSQL (Ubuntu)
以下说明适用于 PostgreSQL 管理员 (非数据库主机服务器)。如果您将 HA 层包括到您的实施中,请参阅此帮助中心的 ThingWorx 高可用性部分
安装 PostgreSQL 并创建新建用户角色
1. 有关受支持的 PostgreSQL 版本的信息,请参阅 ThingWorx 系统要求
* 
此过程中的步骤使用 PostgreSQL 版本 x.x,其中 x.x 为受支持的版本。
2. 下载并安装 PostgreSQL 的适当版本。
可以添加 PostgreSQL 信息库,以便从包管理器直接安装应用程序。
* 
要获取 Ubuntu 版本名称,请使用以下命令:
$ lsb_release -sc

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ <YOUR_UBUNTU_VERSION_HERE>-pgdg main" '> /etc/apt/sources.list.d/pgdg.list
$ sudo wget -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install postgresql-x.x -y
3. 安装 PgAdmin,PostgreSQL 管理工具:
$ sudo apt-get install pgadmin4 -y
* 
要通过命令行安装 PgAdmin,请参考 https://wiki.postgresql.org/wiki/Manual_Setup_at_the_Command_Line
4. 设置 PostgreSQL 用户密码:
$ sudo service postgresql restart
$ sudo -u postgres psql -c "ALTER ROLE postgres WITH password '<unique PostgreSQL password>'"
5. 输入 PostgreSQL 用户密码。您将在之后的步骤中使用此密码。
* 
此密码应不容易被猜到或不应是一个已知的通用密码,其长度应至少为 14 个字符,并且包括大小写字母、数字和特殊字符的组合。
6. 配置 pgAdmin:
$ sudo pgadmin4
在 PgAdmin GUI 中,请单击文件 -> 打开 postgresql.conf
打开 /etc/postgresql/x.x/main/postgresql.conf
监听地址端口旁进行检查。localhost5432 的默认设置通常足够。
保存并关闭。
单击文件 -> 打开 pg_hba.conf
打开 /etc/postgresql/x.x/main/pg_hba.conf
双击地址为 127.0.0.1/32 的数据库“全部”行
将方法设置为 md5
单击“确定”
保存并退出
关闭 PgAdmin。
7. 重新启动 PostgreSQL 服务:
$ sudo service postgresql restart
8. 设置 PgAdmin 以连接到数据库:
$ sudo pgadmin4
9. 单击插件图标,将连接添加至左上角的服务器并填写以下内容:
Name: PostgreSQL x.x
Host: localhost
Port: 5432
Service: <blank>
Maintenance DB: postgres
Username: postgres
Password: <unique PostgreSQL password as set previously>
Store password: Checked
Group: Servers
10. 单击“确定”
11. 创建新用户角色:
* 
如果您不使用 PgAdmin,则可以使用以下命令:
sudo -u postgres psql -c "CREATE USER twadmin WITH PASSWORD '<unique postgres password>';"
b. 右键单击 PostgreSQLx.x (<数据库的 IP 或主机名称>:<PostgreSQL 的端口号>)。示例:PostgreSQLx.x (localhost:5432)
c. 选择 NewObject > NewLogin 角色。在“属性”选项卡上的“角色”字段中请输入名称。
d. “定义”选项卡上的“密码”字段中输入唯一密码 (系统将提示您输入两次)。您将需要在之后的步骤中重新输入此密码。
* 
此密码应不容易被猜到或不应是一个已知的通用密码,其长度应至少为 14 个字符,并且包括大小写字母、数字和特殊字符的组合。
e. 单击“确定”
配置与 ThingWorx 不同服务器上的 PostgreSQL 数据库
* 
此部分对于开发环境是可选的,但在所有生产环境中应全部实现。
默认情况下,将 PostgreSQL 服务器安装为锁定状态。为实现 ThingWorx 与 PostgreSQL 之间的通信,服务器将只监听来自本地计算机的连接,需要进行某些配置更改,以便 PostgreSQL 监听来自其他用户 (thingworx 用户,默认为 twadmin) 和/或其他计算机 (ThingWorx 安装在单独的服务器上) 的连接。
您需要知道 PostgreSQL 数据目录所在位置,以便操作这些步骤。在 Linux 上,数据文件夹、甚至配置文件的位置可根据分发和安装方式 (下载或包管理器安装) 进行更改。在这些说明中,此位置将被称为 <PGDATA>
* 
在 Ubuntu 上,使用 apt-get 安装配置文件时,该配置文件位于 /etc/postgresql/x.x/main/
修改 pg_hba.conf 文件并根据所需配置添加以下各行:
如果想要允许所有 IPv4 地址连接:
host all all 0.0.0.0/0 md5
如果想要只允许特定 IPv4 地址连接 (将 <ipAddress> 替换为进行连接的计算机的 IP 地址):
host all all <ipAddress>/32 md5
如果想要允许所有 IPv6 地址连接:
host all all ::0/0 md5
如果想要只允许特定 IPv6 地址连接 (将 <ipv6Address> 替换为相应的地址):
host all all <ipv6Address>/128 md5
通过使用适用于需要 PostgreSQL 数据库访问权限的计算机的其他余量行 (各个 IP 或范围) 或子网掩码,可以实现任何其他组合。
对此文件所做的任何更改都需要重新启动数据库服务。
* 
有关配置 pg_hba.conf 文件的详细信息,请参阅 PostgreSQL 文档
启用 PostgreSQL 以监听全部连接
在 PostgreSQL 的 Linux 安装过程中,需要其他配置步骤,以便配置 PostgreSQL 服务器对连接进行监听。
1. postgresql.conf 文件中,取消备注并更新 listen_addresses 行:
Uncomment the listen_addresses line and change localhost to '*'
# Listen on all addresses. Requires restart.
listen_addresses = '*'
2. 重新启动 PostgreSQL 服务器。
配置并执行 PostgreSQL 数据库脚本
要设置 PostgreSQL 数据库和表空间,必须配置并执行 thingworxPostgresDBSetup 脚本。
1. 在 (默认的根目录下) ThingworxStorage 文件夹所在的驱动上创建一个名为 ThingworxPostgresqlStorage 的文件夹。请注意以下几点:
如果使用 -d<databasename> 命令创建此文件夹,则无需使用 PostgreSQL 用户。
您必须将 -l 选项指定到存在的路径。例如,-l D:\ThingworxPostgresqlStorage。该脚本不会为您创建文件夹。
该文件夹必须具有相应的所有权和访问权限。它应为运行 PostgreSQL 服务的同一用户所有,并将完全控制分配给该用户 - 该用户通常是 NETWORK_SERVICE,但在您的环境中可能会有所不同。

$ sudo mkdir /ThingworxPostgresqlStorage
$ sudo chown postgres:postgres /ThingworxPostgresqlStorage
$ sudo chmod 755 /ThingworxPostgresqlStorage
2. 从 ThingWorx 软件下载包获取 thingworxPostgresDBSetup 脚本。该脚本位于 install 文件夹中。ThingWorx 下载在 PTC 软件下载中可用。
3. 必要时,配置此脚本。参考下表中的选项。
* 
本示例使用从 PTC 网站下载的 8.x.x 版本。必要时,请将文件名更改为您使用的版本。

$ sudo unzip MED-61111-CD-084_ThingWorx-Platform-Postgres-8-x-x.zip
$ cd install
4. 要使用默认 PostgreSQL 安装 (具有 PostgreSQL 数据库和 PostgreSQL 用户名) 来设置数据库和表空间,请输入:
$ sudo sh thingworxPostgresDBSetup.sh -a postgres -u <user role name> -l /ThingworxPostgresqlStorage
thingworxPostgresDBSetup 脚本选项
选项
参数
默认值
说明
示例
t 或者 -T
tablespace
thingworx
表空间名称
-t thingworx
-p 或者 -P
port
5432
PostgreSQL 端口号
-p 5432
-\d 或者 -D
database
thingworx
要创建的 PostgreSQL 数据库名称
-d thingworx
-h 或者 -H
host
localhost
主机名称
-h localhost
-l 或者 -L
tablespace_location
/ThingworxPostgresqlStorage
必填字段。存储代表数据库对象的文件所在文件系统中的位置。
-l 或者 -L
-a 或者 -A
adminusername
postgres
管理员名称
-a postgres
-u 或者 -U
thingworxusername
twadmin
有写入数据库权限的用户名。
-u twadmin
5. 执行此脚本。
配置并执行模型/数据提供程序架构脚本
要设置 PostgreSQL 模型/数据提供程序架构,必须配置并执行 thingworxPostgresSchemaSetup 脚本。这将公共架构设置在安装于本地主机的 PostgreSQL 实例的数据库下。
1. 从 ThingWorx 软件下载包获取并打开 thingworxPostgresSchemaSetup 文件。该脚本位于 install 文件夹中。
2. 必要时,配置此脚本。参考下表中的选项。
thingworxPostgresSchemaSetup 脚本选项
选项
参数
默认值
说明
示例
-h 或者 -H
host
localhost
数据库的 IP 或主机名称。
-h localhost
-p 或者 -P
port
5432
PostgreSQL 端口号。
-p 5432
-\d 或者 -D
database
thingworx
要使用的数据库名称。
-d thingworx
-s 或者 -S
schema
public
要使用的架构名称。
-s mySchema
-u 或者 -U
username
twadmin
用于更新数据库架构的用户名
-u twadmin
-o 或者 -O
option
all
有三个选项:
全部:将模型和数据提供程序架构设置到指定的数据库中。
模型:将模型提供程序架构设置到指定的数据库中。
数据:将数据提供程序架构设置到指定的数据库中。
-o data
3. 执行此脚本。可以使用默认参数运行以下脚本:
$ sudo sh thingworxPostgresSchemaSetup.sh
该用户名应与先前创建的 PostgreSQL 用户名相匹配。
配置 platform-settings.json
1. 在安装 Tomcat 的驱动器的根目录下或作为系统变量创建 ThingworxPlatform 文件夹。请注意以下几点:
要指定存储 ThingWorx 设置的位置,可以将 THINGWORX_PLATFORM_SETTINGS 环境变量设置到所需位置。确保 THINGWORX_PLATFORM_SETTINGS 所参考的文件夹存在并可以由 Tomcat 用户写入。此环境变量应配置为系统环境变量的一部分。Ubuntu 示例:THINGWORX_PLATFORM_SETTINGS=/data/ThingworxPlatform
如果 ThingWorx 服务器不具备对此文件夹的读写权限,将无法启动。

$ sudo mkdir /ThingworxPlatform
2. platform-settings.json 文件置于 ThingworxPlatform 文件夹中。此文件可从 ThingWorx 软件下载中获取。

$ sudo cp platform-settings.json /ThingworxPlatform/
3. 打开 platform-settings.json 并根据需要进行配置。请参阅 platform-settings.json 配置详细信息中的配置选项。
* 
如果您的 PostgreSQL 服务器与 ThingWorx 服务器不同,并且在安装 ThingWorx 时出现问题,请查看 platform-settings.json 文件。默认安装假定两个服务器位于同一计算机上。尽管在开发环境中可以选择将 PostgreSQL 数据库与 ThingWorx 放置在同一服务器上,但在所有生产环境中应将其设置为位于不同服务器上。
加密 PostgreSQL 密码
按照 加密密码中的步骤加密密码
(可选) 安装 PostgreSQL 客户端包和 PostgreSQL 用户
为了将 PostgreSQL 命令从客户端机器发送到 PostgreSQL 服务器,请从 PostgreSQL 用户执行这些操作。postgresql-client-x.x 包可安装在客户端机器上,有关如何进行安装,请参阅您的分布文档。该软件包提供了一些管理工具,如 psql
安装 ThingWorx