Installation et configuration > Installation de ThingWorx > Installation RHEL > PostgreSQL > Installation et configuration de PostgreSQL (RHEL)
Installation et configuration de PostgreSQL (RHEL)
Les instructions fournies ci-dessous sont destinées à l'administrateur PostgreSQL (ne concerne pas les serveurs hôtes de base de données). Si vous incluez la couche haute disponibilité (HA) dans votre implémentation, consultez la rubrique Haute disponibilité ThingWorx de ce Centre d'aide .
Installation de PostgreSQL et création d'un nouveau rôle d'utilisateur
* 
La procédure suivante suppose l'utilisation d'une version de RHEL offrant une interface GUI (X11) et d'un compte actif avec accès aux référentiels logiciels RHEL. Si vous travaillez sans interface GUI, ignorez l'installation de PgAdmin et consultez cet article de support pour prendre connaissance des instructions à suivre. Si vous n'avez pas accès aux sources logicielles officielles de RHEL, vous pouvez configurer un référentiel open source gratuit depuis le site de l'équipe EPEL (ce site n'est pas fourni ni contrôlé par PTC).
1. Pour plus d'informations sur les versions de PostgreSQL prises en charge, consultez la rubrique Configuration requise pour ThingWorx de ce Centre d'aide.
* 
Les étapes de cette procédure utilisent PostgreSQL version x.x, où x.x désigne la version prise en charge.
2. Ajoutez le référentiel PostgreSQL à Yum et effectuez l'installation.
3. Installez PgAdmin, l'outil d'administration de PostgreSQL :
$ sudo yum install pgadmin4
* 
Pour installer PgAdmin via la ligne de commande, reportez-vous à la page https://wiki.postgresql.org/wiki/Manual_Setup_at_the_Command_Line.
4. Initialisez et lancez la base de données :
$ sudo /usr/pgsql-x.x/bin/postgresqlx.x-setup initdb
Configurez le service PostgreSQL pour qu'il se lance au démarrage :
$ sudo chkconfig postgresql-x.x on
$ sudo service postgresql-x.x start
5. Configurez le mot de passe de l'utilisateur PostgreSQL :
$ sudo passwd postgres
6. Spécifiez le mot de passe de l'utilisateur PostgreSQL. Vous devrez réutiliser ce mot de passe ultérieurement.
* 
Veillez à ce que ce mot de passe ne puisse pas être deviné facilement et à ce qu'il comprenne au moins 14 caractères et se compose d'une combinaison de caractères majuscules et minuscules, de chiffres et de caractères spéciaux.
7. Configurez l'utilisateur PostgreSQL dans psql. La valeur <unique PostgreSQL password> est la valeur de mot de passe que vous avez spécifiée précédemment.
* 
Si la base de données PostgreSQL ne se trouve pas sur le même serveur que ThingWorx, reportez-vous à la rubrique Configuration d'une base de données PostgreSQL située sur un serveur autre que celui de ThingWorx et ignorez les deux étapes suivantes. Bien qu'il soit facultatif que la base de données PostgreSQL se trouve sur le même serveur que ThingWorx dans un environnement de développement, elle doit être séparée dans tous les environnements de production.
$ sudo -u postgres psql -c "ALTER ROLE postgres WITH password '<unique PostgreSQL password>'"
8. Si vous utilisez la ligne de commande, ouvrez les fichiers suivants et modifiez-les comme indiqué. Ignorez cette étape si vous utilisez PgAdmin.
/var/lib/pgsql/x.x/data/postgresql.conf/postgresql.conf : décommentez listen addresses et port. Les paramètres par défaut, à savoir localhost et 5432, sont généralement suffisants.
/var/lib/pgsql/x.x/data/pg_hba.conf : définissez Method sur md5.
9. Configurez PgAdmin. Ignorez cette étape si vous n'utilisez pas PgAdmin.
$ sudo pgadmin3
Dans l'interface GUI de PgAdmin, cliquez sur file->Open postgresql.conf.
Ouvrez /var/lib/pgsql/x.x/data/postgresql.conf.
Cochez les cases en regard de listen addresses et de port. Les paramètres par défaut, à savoir localhost et 5432, sont généralement suffisants.
Enregistrez, puis fermez.
Cliquez sur file->Open pg_hba.conf.
Ouvrez /var/lib/pgsql/x.x/data/pg_hba.conf.
Double-cliquez sur la ligne de base de données "all" avec l'adresse 127.0.0.1/32.
Définissez la méthode sur md5.
Cliquez sur OK.
Enregistrez et quittez.
Fermez PgAdmin.
10. Redémarrez le service PostgreSQL :
$ sudo service postgresql-x.x restart
11. Configurez PgAdmin pour permettre la connexion à la base de données :
$ sudo pgadmin3
12. Cliquez sur l'icône de la prise dans le coin supérieur gauche pour ajouter une connexion à un serveur, puis entrez les informations suivantes :
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
13. Cliquez sur OK.
14. Créez un nouveau rôle d'utilisateur :
* 
Vous pouvez utiliser la commande suivante si vous n'utilisez pas PgAdmin :
sudo -u postgres psql -c "CREATE USER twadmin WITH PASSWORD '<unique postgres password>';"
a. Cliquez avec le bouton droit sur PostgreSQLx.x(localhost:5432).
b. Sélectionnez NewObject > NewLogin Role. Sur l'onglet Properties, entrez un nom dans le champ Role.
c. Sur l'onglet Definition, dans le champ Password, saisissez un mot de passe unique (deux saisies du mot de passe sont nécessaires).
* 
Veillez à ce que ce mot de passe ne puisse pas être deviné facilement et à ce qu'il comprenne au moins 14 caractères et se compose d'une combinaison de caractères majuscules et minuscules, de chiffres et de caractères spéciaux. Vous devrez réutiliser ce mot de passe ultérieurement.
d. Cliquez sur OK.
Configuration d'une base de données PostgreSQL située sur un serveur autre que celui de ThingWorx
* 
Cette section est facultative pour les environnements de développement, mais doit être implémentée dans tous les environnements de production.
Par défaut, le serveur PostgreSQL est installé dans un état verrouillé. Le serveur n'écoute que les connexions de la machine locale. Pour que ThingWorx communique avec le serveur PostgreSQL, certaines modifications de configuration sont nécessaires afin que PostgreSQL puisse écouter les connexions d'autres utilisateurs (utilisateur thingworx, twadmin par défaut) et/ou d'autres machines (ThingWorx installé sur un serveur distinct).
Vous devez savoir où réside votre répertoire de données PostgreSQL pour cette procédure. Sous Linux, l'emplacement du dossier de données et même des fichiers de configuration peut changer en fonction de la distribution et de la méthode d'installation (installation par le gestionnaire de paquets ou téléchargement). Cet emplacement sera appelé <PGDATA> dans ces instructions.
Modifiez le fichier pg_hba.conf en lui ajoutant les lignes correspondant à la configuration qui vous convient parmi les suivantes :
Si vous souhaitez autoriser toutes les adresses IPv4 à se connecter :
host all all 0.0.0.0/0 md5
Si vous souhaitez autoriser uniquement une adresse IPv4 spécifique à se connecter (remplacez <ipAddress> par l'adresse IP de la machine concernée) :
host all all <ipAddress>/32 md5
Si vous souhaitez autoriser toutes les adresses IPv6 à se connecter :
host all all ::0/0 md5
Si vous souhaitez autoriser uniquement une adresse IPv6 spécifique à se connecter (remplacez <ipv6Address> par l'adresse appropriée) :
host all all <ipv6Address>/128 md5
Toute autre combinaison est possible par ajout de lignes de configuration supplémentaires (adresses IP individuelles ou plages d'adresses) ou de masques de sous-réseau appropriés pour les machines qui nécessitent un accès à la base de données PostgreSQL.
Toute modification de ce fichier nécessite un redémarrage du service de base de données.
* 
Pour plus d'informations sur la configuration du fichier pg_hba.conf, consultez la documentation de PostgreSQL.
Configuration de PostgreSQL pour qu'il écoute toutes les connexions
Dans les installations Linux de PostgreSQL, une étape de configuration supplémentaire est nécessaire pour faire en sorte que le serveur PostgreSQL écoute les connexions.
1. Dans le fichier postgresql.conf, décommentez et mettez à jour la ligne listen_addresses :
Uncomment the listen_addresses line and change localhost to '*'
# Listen on all addresses. Requires restart.
listen_addresses = '*'
2. Redémarrez le serveur PostgreSQL :
Configuration et exécution du script de base de données PostgreSQL
Pour mettre en oeuvre la base de données et l'espace de table PostgreSQL, le script thingworxPostgresDBSetup doit être configuré et exécuté.
1. Créez le dossier ThingworxPostgresqlStorage sur le lecteur hébergeant le dossier ThingworxStorage (dans le répertoire racine par défaut). Notez le point suivant :
Si vous créez le dossier à l'aide de la commande -d<databasename>, vous n'avez pas à utiliser l'utilisateur PostgreSQL.
Vous devez utiliser l'option -l en spécifiant un chemin d'accès existant. Par exemple, -l D:\ThingworxPostgresqlStorage. Le script ne crée pas le dossier pour vous.
La propriété du dossier et les droits d'accès à celui-ci doivent être configurés de manière appropriée. Il doit appartenir au même utilisateur que celui qui exécute le service PostgreSQL et cet utilisateur doit bénéficier d'un contrôle total ; ce dernier est généralement NETWORK_SERVICE, mais il peut être différent dans votre environnement.

$ sudo mkdir /ThingworxPostgresqlStorage
$ sudo chown postgres:postgres /ThingworxPostgresqlStorage
$ sudo chmod 755 /ThingworxPostgresqlStorage
2. Récupérez le script thingworxPostgresDBSetup depuis le package de téléchargement de logiciel ThingWorx. Le script se trouve dans le dossier install. Les téléchargements ThingWorx s'effectuent depuis la page des  téléchargements de logiciels de PTC.
3. Si nécessaire, configurez le script. Reportez-vous à la table ci-dessous pour le paramétrage des options.
* 
Cet exemple utilise le téléchargement x.x.x disponible sur le site de PTC. Modifiez le nom de fichier compte tenu de la version que vous utilisez.

$ sudo unzip MED-61111-CD-08x_ThingWorx-Platform-Postgres-x-x-x.zip
$ cd install
Options du script thingworxPostgresDBSetup
Option
Paramètre
Par défaut
Description
Exemple
t ou -T
tablespace
thingworx
Nom de l'espace de table.
-t thingworx
-p ou -P
port
5432
Numéro de port de PostgreSQL.
-p 5432
-d ou -D
database
thingworx
Nom de la base de données PostgreSQL à créer.
-d thingworx
-h ou -H
host
localhost
Nom de l'hôte
-h localhost
-l ou -L
tablespace_location
/ThingworxPostgresqlStorage
Obligatoire. Emplacement sur le système de fichiers où sont stockés les fichiers représentant les objets de base de données.
-l ou -L
-a ou -A
adminusername
postgres
Nom de l'administrateur.
-a postgres
-u ou -U
thingworxusername
twadmin
Nom d'utilisateur autorisé à accéder en écriture à la base de données.
-u twadmin
4. Pour configurer la base de données et l'espace de table avec une installation PostgreSQL par défaut offrant une base de données PostgreSQL et un nom d'utilisateur PostgreSQL, entrez :
$ sudo sh thingworxPostgresDBSetup.sh -a postgres -u <user role name> -l /ThingworxPostgresqlStorage
5. Exécutez le script.
Configuration et exécution du script de schéma de fournisseur de modèles/données
Pour mettre en oeuvre le schéma de fournisseur de modèles/données PostgreSQL, le script thingworxPostgresSchemaSetup doit être configuré et exécuté. Cette opération mettra en oeuvre le schéma public sous votre base de données sur l'instance PostgreSQL installée sur l'hôte local.
1. Récupérez et ouvrez le fichier thingworxPostgresSchemaSetup depuis le package de téléchargement de logiciel ThingWorx. Le script se trouve dans le dossier install.
2. Si nécessaire, configurez le script. Reportez-vous à la table ci-dessous pour le paramétrage des options.
* 
Le script peut être exécuté avec les paramètres par défaut comme suit :
$ sudo sh thingworxPostgresSchemaSetup.sh
Options du script thingworxPostgresSchemaSetup
Option
Paramètre
Par défaut
Description
Exemple
-h ou -H
host
localhost
Adresse IP ou nom d'hôte de la base de données.
-h localhost
-p ou -P
port
5432
Numéro de port de PostgreSQL.
-p 5432
-d ou -D
database
thingworx
Nom de la base de données à utiliser.
-d thingworx
-s ou -S
schema
public
Nom du schéma à utiliser.
-s monSchéma
-u ou -U
Nom d'utilisateur
twadmin
Nom d'utilisateur pour la mise à jour du schéma de base de données.
-u twadmin
-o ou -O
option
all
Trois options sont disponibles :
all : met en oeuvre les schémas de fournisseur de modèles et de données dans la base de données spécifiée.
model : met en oeuvre le schéma de fournisseur de modèles dans la base de données spécifiée.
data : met en oeuvre le schéma de fournisseur de données dans la base de données spécifiée.
-o data
3. Exécutez le script.
* 
Le nom d'utilisateur doit correspondre au nom d'utilisateur PostgreSQL précédemment créé.
Configuration du fichier platform-settings.json
1. Créez le dossier ThingworxPlatform à la racine du lecteur sur lequel Tomcat a été installé ou en tant que variable système. Notez le point suivant :
Pour spécifier l'emplacement de stockage par ThingWorx de ses paramètres, vous pouvez définir la variable d'environnement THINGWORX_PLATFORM_SETTINGS sur l'emplacement souhaité. Assurez-vous que le dossier référencé par THINGWORX_PLATFORM_SETTINGS existe et qu'il est accessible en écriture par l'utilisateur Tomcat. Cette variable d'environnement doit être configurée dans le cadre des variables d'environnement système.
Le serveur ThingWorx ne démarrera pas s'il n'a pas accès en lecture et en écriture à ce dossier.
2. Placez le fichier platform-settings.json dans le dossier ThingworxPlatform. Ce fichier est disponible dans le téléchargement de logiciel.

$ sudo cp platform-settings.json /ThingworxPlatform/
3. Ouvrez le fichier platform-settings.json et procédez à la configuration voulue. Reportez-vous aux options de configuration décrites à la rubrique Détails de la configuration du fichier platform-settings.json.
* 
Si votre serveur PostgreSQL se trouve sur une autre machine que votre serveur ThingWorx, et que vous rencontrez des problèmes avec votre installation de ThingWorx, examinez vos journaux Tomcat et votre fichier platform-settings.json. L'installation par défaut prend pour hypothèse que les deux serveurs se trouvent sur la même machine.
Chiffrement du mot de passe PostgreSQL
Cryptez le mot de passe en suivant la procédure de la rubrique Cryptage de mots de passe.
(Facultatif) Installation du package client PostgreSQL et de l'utilisateur PostgreSQL
Pour envoyer des commandes PostgreSQL depuis la machine cliente vers le serveur PostgreSQL, procédez à partir d'un utilisateur PostgreSQL. Le package postgresql-client-x.x peut être installé sur la machine cliente ; reportez-vous à la documentation relative aux distributions pour connaître la procédure d'installation. Ce package inclut un certain nombre d'outils d'administration, tels que psql.
Installation de ThingWorx
Consultez la rubrique Installation de ThingWorx.