Installare e configurare PostgreSQL (RHEL)
Le istruzioni fornite di seguito sono destinate all'amministratore di PostgreSQL (non ai server host del database). Se si intende includere il livello di disponibilità elevata nell'implementazione, fare riferimento alla sezione ThingWorx a disponibilità elevata di questo Help Center.
Installare PostgreSQL e creare un nuovo ruolo utente
* 
Questa procedura presuppone che si utilizzi una versione di RHEL con una GUI (X11) e un account attivo con accesso ai repository di software RHEL. Se si utilizza la versione senza GUI, ignorare l'installazione di pgAdmin e fare riferimento a questo articolo del supporto per le istruzioni alternative. Se non si dispone dell'accesso alle origini ufficiali del software RHEL, è possibile configurare un repository open source gratuito dal team EPEL (questo sito non è fornito o controllato da PTC).
1. Per informazioni sulle versioni di PostgreSQL supportate, fare riferimento alla sezione Requisiti di sistema di ThingWorx di questo Help Center.
* 
Per i passi descritti in questa procedura viene utilizzata la versione di PostgreSQL x.x, dove x.x è la versione supportata.
2. Aggiungere il repository PostgreSQL a Yum ed eseguire l'installazione.
3. Installare pgAdmin, lo strumento di amministrazione di PostgreSQL:
$ sudo yum install pgadmin4
* 
Per installare pgAdmin tramite la riga di comando, fare riferimento alla pagina https://wiki.postgresql.org/wiki/Manual_Setup_at_the_Command_Line.
4. Inizializzare e avviare il database:
$ sudo /usr/pgsql-x.x/bin/postgresqlx.x-setup initdb
Impostare PostgreSQL come servizio da inizializzare all'avvio:
$ sudo chkconfig postgresql-x.x on
$ sudo service postgresql-x.x start
5. Impostare la password per l'utente PostgreSQL:
$ sudo passwd postgres
6. Immettere la password per l'utente PostgreSQL. Questa password viene utilizzata nei passi successivi.
* 
È consigliabile che la password sia difficile da indovinare, segreta e non comune, sia costituita da almeno 14 caratteri di lunghezza e includa una combinazione di lettere maiuscole e minuscole, numeri e caratteri speciali.
7. Impostare l'utente PostgreSQL in psql. Il valore di <unique PostgreSQL password> è il valore che è stato immesso nel passo precedente.
* 
Se il database PostgreSQL non si trova nello stesso server di ThingWorx, fare riferimento alla sezione Configurare il database PostgreSQL in un server diverso rispetto a ThingWorx e ignorare i due passi successivi. Nonostante in un ambiente di sviluppo il database PostgreSQL possa facoltativamente risiedere nello stesso server in cui si trova ThingWorx, in tutti gli ambienti di produzione deve essere separato.
$ sudo -u postgres psql -c "ALTER ROLE postgres WITH password '<unique PostgreSQL password>'"
8. Se si utilizza la riga di comando, aprire i seguenti file e modificarli come indicato. Ignorare questo passo se si utilizza pgAdmin.
/var/lib/pgsql/x.x/data/postgresql.conf/postgresql.conf: eliminare il commento di listen addresses e port. Le impostazioni di default di localhost e 5432 sono in genere sufficienti.
/var/lib/pgsql/x.x/data/pg_hba.conf: impostare Method su md5
9. Configurare pgAdmin. Ignorare questo passo se non si utilizza pgAdmin.
$ sudo pgadmin3
Nella GUI di pgAdmin fare clic su file->Open postgresql.conf
Aprire /var/lib/pgsql/x.x/data/postgresql.conf
Selezionare la casella accanto a listen addresses e port. Le impostazioni di default di localhost e 5432 sono in genere sufficienti.
Salvare e chiudere.
Fare clic su file->Open pg_hba.conf
Aprire /var/lib/pgsql/x.x/data/pg_hba.conf
Fare doppio clic sulla riga 'all' del database con l'indirizzo 127.0.0.1/32
Impostare Method su md5.
Fare clic su OK.
Salvare e uscire.
Chiudere pgAdmin.
10. Riavviare il servizio PostgreSQL:
$ sudo service postgresql-x.x restart
11. Impostare pgAdmin per la connessione al database:
$ sudo pgadmin3
12. Fare clic sull'icona a forma di spina per aggiungere una connessione a un server nell'angolo superiore sinistro e completare le opzioni come descritto di seguito.
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. Fare clic su OK.
14. Creare un nuovo ruolo utente come descritto di seguito.
* 
Se non si utilizza pgAdmin, è possibile utilizzare il comando seguente:
sudo -u postgres psql -c "CREATE USER twadmin WITH PASSWORD '<unique postgres password>';"
a. Fare clic con il pulsante destro del mouse su PostgreSQLx.x(localhost:5432).
b. Selezionare New Object>New Login Role. Nella scheda Properties immettere un nome nel campo Role name.
c. Nella scheda Definition, nel campo Password, immettere una password univoca (viene chiesto di immetterla due volte).
* 
È consigliabile che la password sia difficile da indovinare, segreta e non comune, sia costituita da almeno 14 caratteri di lunghezza e includa una combinazione di lettere maiuscole e minuscole, numeri e caratteri speciali. La password deve essere immessa nuovamente nei passi successivi.
d. Fare clic su OK.
Configurare il database PostgreSQL in un server diverso rispetto a ThingWorx
* 
Questa sezione è facoltativa per gli ambienti di sviluppo, ma deve essere implementata in tutti gli ambienti di produzione.
Per default, il server PostgreSQL viene installato in uno stato bloccato. Il server ascolta solo le connessioni dal computer locale. Per fare in modo che ThingWorx comunichi con il server PostgreSQL, è necessario apportare alcune modifiche di configurazione in modo che PostgreSQL riesca ad ascoltare le connessioni da altri utenti (utente thingworx, l'utente di default è twadmin) e/o da altri computer (ThingWorx installato in un altro server).
Per eseguire questi passi, è necessario sapere dove risiede la directory di dati di PostgreSQL. In Linux, la posizione della cartella dei dati o perfino i file di configurazione possono cambiare in base alla modalità di distribuzione e installazione (download o installazione dal gestore del package). In queste istruzioni, la posizione viene indicata come <PGDATA>.
Modificare il file pg_hba.conf e aggiungere le righe riportate di seguito in base alla configurazione desiderata.
Se si desidera consentire a tutti gli indirizzi IPv4 di connettersi:
host all all 0.0.0.0/0 md5
Se si desidera consentire solo a un indirizzo IPv4 specifico di connettersi (sostituire <ipAddress> con l'indirizzo IP del computer che effettua la connessione):
host all all <ipAddress>/32 md5
Se si desidera consentire a tutti gli indirizzi IPv6 di connettersi:
host all all ::0/0 md5
Se si desidera consentire solo a un indirizzo IPv6 specifico di connettersi (sostituire <ipv6Address> con l'indirizzo appropriato):
host all all <ipv6Address>/128 md5
Qualsiasi altra combinazione è possibile utilizzando righe di consenso aggiuntive (singoli IP o intervalli di IP) o maschere di sottorete appropriate ai computer che richiedono accesso al database PostgreSQL.
Qualsiasi modifica a questo file richiede il riavvio del servizio di database.
* 
Per informazioni aggiuntive sulla configurazione del file pg_hba.conf, vedere la documentazione di PostgreSQL.
Abilitazione di PostgreSQL per l'ascolto di tutte le connessioni
Nelle installazioni Linux di PostgreSQL è necessario un ulteriore passo per configurare il server PostgreSQL per l'ascolto delle connessioni.
1. Nel file postgresql.conf, eliminare il commento e aggiornare la riga listen_addresses:
Uncomment the listen_addresses line and change localhost to '*'
# Listen on all addresses. Requires restart.
listen_addresses = '*'
2. Riavviare il server PostgreSQL.
Configurare ed eseguire lo script del database PostgreSQL
Per impostare lo spazio tabelle e il database PostgreSQL, è necessario configurare ed eseguire lo script thingworxPostgresDBSetup.
1. Creare la cartella ThingworxPostgresqlStorage nell'unità in cui si trova la cartella ThingworxStorage (per default, nella directory radice). Tenere presente quanto riportato di seguito.
Se si crea la cartella con il comando -d<databasename>, non è necessario utilizzare l'utente PostgreSQL.
È necessario specificare l'opzione -l a un percorso esistente, ad esempio -l D:\ThingworxPostgresqlStorage. Lo script non crea la cartella automaticamente.
La cartella deve avere i diritti di proprietà e di accesso appropriati. È consigliabile che appartenga allo stesso utente che esegue il servizio PostgreSQL e che a tale utente sia assegnato controllo completo. Questo utente è in genere NETWORK_SERVICE, ma può differire a seconda dell'ambiente.

$ sudo mkdir /ThingworxPostgresqlStorage
$ sudo chown postgres:postgres /ThingworxPostgresqlStorage
$ sudo chmod 755 /ThingworxPostgresqlStorage
2. Ottenere lo script thingworxPostgresDBSetup dal package di download del software ThingWorx. Questo script si trova nella cartella install. I download di ThingWorx sono disponibili nella pagina PTC Software Download.
3. Se necessario, configurare lo script. Fare riferimento alle opzioni nella tabella riportata di seguito.
* 
Questo esempio utilizza il download x.x.x.x dal sito di PTC. Se necessario, modificare il nome del file nella versione che si sta utilizzando.

$ sudo unzip MED-61111-CD-08x_ThingWorx-Platform-Postgres-x-x-x.zip
$ cd install
Opzioni dello script thingworxPostgresDBSetup
Opzione
Parametro
Default
Descrizione
Esempio
t o -T
tablespace
thingworx
Nome dello spazio tabelle
-t thingworx
-p o -P
port
5432
Numero di porta di PostgreSQL.
-p 5432
-d o -D
database
thingworx
Nome del database PostgreSQL da creare
-d thingworx
-h o -H
host
localhost
Nome dell'host
-h localhost
-l o -L
tablespace_location
/ThingworxPostgresqlStorage
Obbligatorio. Posizione nel file system in cui sono archiviati i file che rappresentano oggetti di database.
-l o -L
-a o -A
adminusername
postgres
Nome dell'amministratore
-a postgres
-u o -U
thingworxusername
twadmin
Nome utente dotato dei permessi di scrittura nel database.
-u twadmin
4. Per impostare lo spazio tabelle e il database con un'installazione di PostgreSQL di default che dispone di un database PostgreSQL e di un nome utente PostgreSQL, immettere il codice seguente:
$ sudo sh thingworxPostgresDBSetup.sh -a postgres -u <user role name> -l /ThingworxPostgresqlStorage
5. Eseguire lo script.
Configurare ed eseguire lo script dello schema del provider di modelli/dati
Per impostare lo schema del provider di modelli/dati PostgreSQL, è necessario configurare ed eseguire lo script thingworxPostgresSchemaSetup. Questo script installa lo schema pubblico nel database nell'istanza PostgreSQL installata nell'host locale.
1. Ottenere e aprire il file thingworxPostgresSchemaSetup dal package di download del software ThingWorx. Questo script si trova nella cartella install.
2. Se necessario, configurare lo script. Fare riferimento alle opzioni nella tabella riportata di seguito.
* 
Lo script può essere eseguito con i parametri di default come:
$ sudo sh thingworxPostgresSchemaSetup.sh
Opzioni dello script thingworxPostgresSchemaSetup
Opzione
Parametro
Default
Descrizione
Esempio
-h o -H
host
localhost
IP o nome host del database.
-h localhost
-p o -P
port
5432
Numero di porta di PostgreSQL.
-p 5432
-d o -D
database
thingworx
Nome del database da utilizzare.
-d thingworx
-s o -S
schema
pubblico
Nome dello schema da utilizzare.
-s mySchema
-u o -U
username
twadmin
Nome utente per aggiornare lo schema del database.
-u twadmin
-o o -O
opzione
tutti
Sono disponibili le tre opzioni elencate di seguito.
all: imposta gli schemi del provider di modelli e dati nel database specificato.
model: imposta lo schema del provider di modelli nel database specificato.
data: imposta lo schema del provider di dati nel database specificato.
-o data
3. Eseguire lo script.
* 
Il nome utente deve corrispondere al nome utente PostgreSQL creato in precedenza.
Configurare platform-settings.json
1. Creare la cartella ThingworxPlatform nella radice dell'unità in cui è stato installato Tomcat o come variabile di sistema. Tenere presente quanto riportato di seguito.
Per specificare la posizione in cui ThingWorx memorizza le proprie impostazioni, è possibile impostare la variabile di ambiente THINGWORX_PLATFORM_SETTINGS sulla posizione desiderata. Assicurarsi che la cartella a cui fa riferimento THINGWORX_PLATFORM_SETTINGS esista e che sia accessibile in scrittura per l'utente Tomcat. Questa variabile di ambiente deve essere configurata insieme alle variabili di ambiente di sistema.
Il server ThingWorx non viene avviato se non ha accesso in lettura e scrittura a questa cartella.
2. Posizionare il file platform-settings.json nella cartella ThingworxPlatform. Questo file è disponibile nel download del software.

$ sudo cp platform-settings.json /ThingworxPlatform/
3. Aprire il file platform-settings.json e configurarlo in base alle esigenze. Fare riferimento alle opzioni di configurazione in Dettagli di configurazione di platform-settings.json.
* 
Se il server PostgreSQL non è lo stesso del server ThingWorx e si verificano problemi con l'installazione di ThingWorx, esaminare i log di Tomcat e il file platform-settings.json. L'installazione di default presuppone che entrambi i server si trovino nello stesso computer.
Crittografare la password di PostgreSQL
Crittografare la password eseguendo i passi descritti in Crittografia delle password.
(Facoltativo) Installazione del package client di PostgreSQL e dell'utente PostgreSQL
Per inviare comandi PostgreSQL dal computer client al server PostgreSQL, attenersi alla procedura descritta di seguito utilizzando un utente PostgreSQL. Il package postgresql-client-x.x può essere installato sul computer client. Per le istruzioni su come installarlo, fare riferimento alla documentazione relativa alle distribuzioni. Questo package include alcuni strumenti di amministrazione quali psql.
Installare ThingWorx