Corso tecnico BASE
Certificazione sistemistica
PRIMA PARTE
Lodi
24-25-26 maggio 2016 (prima sessione)
21-22-23 giugno 2016 (seconda sessione)
a cura di Daniele Cinquanta
Certificazione sistemistica
Corso tecnico BASE
indice
Infrastruttura
●
Livelli logici
●
Connessioni TCP
●
Esempi
Applicativi HR/AGO
●
Database di startup
●
Driver di connessione al Database
●
Puntamento al Database
●
Licenza applicativa
Database Server
●
MS SQL Server
–
Installazione
–
Configurazione
–
Gestione Database
●
PostgreSQL
–
Installazione
–
Configurazione
–
Gestione Database
Application Server
●
Java
●
Tomcat
Web Server
●
IIS – Windows
●
Apache Httpd – Linux
Corso tecnico
BASE
infrastruttura – livelli logici
LAN
DMZ
CLIENT
WEB SERVER
CLIENT
WEB SERVER
1° livello logico
2° livello logico
INTERNET
3° livello logico
3
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
infrastruttura – connessioni tcp
LAN
DMZ
CLIENT
CLIENT
http
80
WEB SERVER
http/s
80/443
http/s
80/443
WEB SERVER
http/s
80/443
apj
8009
APPLICATION SERVER
mssql
1433
apj
8009
WEB SERVER
postgres
5432
INTERNET
DATABASE SERVER
4
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
infrastruttura – esempi
1
WEB SERVER
DMZ
ajp
WEB
APPLICATION
DATABASE
SERVER
2
3
WEB SERVER
WEB SERVER
DMZ
ajp
ajp
APPLICATION SERVER
TOMCAT 1
TOMCAT 2
sql
WEB SERVER
ajp
WEB SERVER
DMZ
ajp
ajp
ajp
APPLICATION
SERVER 01
APPLICATION
SERVER 02
TOMCAT 1
TOMCAT 2
sql
sql
TOMCAT 1
DATABASE
SERVER
DATABASE
SERVER
5
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
applicativi – database di startup
Va installato
database di startup
di PagheProject
database di startup
di PresenzeProject
si
PagheW
no
PagheJ
database di startup
di PresenzeWeb
si
no
PresenzeJ
si
no
PresenzeW
si




db vuoto
dbadm di HRP/MIP
riavvio di tomcat
dbadm PagheWEB
no
database vuoto come
da istruzioni di AGO
si
Solo AGO
e MIP
no
Altri moduli HR
si
database di startup
di un modulo HR
Database di startup (prima installazione)
In fase di prima installazione è spesso necessario dover ripristinare il backup di un database di startup.
PagheWEB e AGO ad oggi non necessitano di una base dati predefinita, quindi è sufficiente disporre di un database
vuoto.
Per determinare quale database utilizzare in fase di installazione si può seguire lo schema sopra riportato.
6
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
applicativi – driver di connessione al database
Modalità di connessione al database
Applicativo
Applicativo WEB
WEB
file
file DBConfig
DBConfig
WEB-INF/classes
WEB-INF/classes
Database
Database
driver
driver jdbc
jdbc
WEB-INF/lib
WEB-INF/lib
Driver JDBC
Il driver di connessione va aggiunto in ogni applicazione nella seguente directory:

Applicazione/WEB-INF/lib
È importante che nella directory WEB-INF/lib (di ogni applicativo web) non ci siano più driver per lo stesso database,
ad esempio sqljdbc.jar e sqljdbc4.jar, oppure postgresql-8.4-703.jdbc3.jar e postgresql-9.3-1102.jdbc41.jar.
Il driver va scaricato in base alle versioni del database a della java utilizzati:
●
●
●
Microsoft JDBC: https://www.microsoft.com/it-it/download/details.aspx?id=11774
PostgreSQL JDBC: https://jdbc.postgresql.org/download.html
Oracle JDBC: http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html
7
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
applicativi – puntamento al database
DBConfig

DBConfig MSSQL (2005 e successivi)
JDBCConnectionURL.1=jdbc:sqlserver://192.168.0.1:1433;DatabaseName=DBNAME
JDBCDriver.1=com.microsoft.sqlserver.jdbc.SQLServerDriver
UserName.1=username
Password.1=password
Instance.1=SERVLET
DefaultUserTimeout=3600

DBConfig POSTGRESQL
JDBCConnectionURL.1=jdbc:postgresql://192.168.0.1:5432/DBNAME
JDBCDriver.1=org.postgresql.Driver
UserName.1=username
Password.1=password
Instance.1=SERVLET
DefaultUserTimeout=3600

DBConfig ORACLE (verificare la compatibilità dei moduli con Oracle)
JDBCConnectionURL.1=jdbc:oracle:thin:@192.168.0.1:1521:ORACLE_SID
JDBCDriver.1=oracle.jdbc.driver.OracleDriver
UserName.1=username
Password.1=password
Instance.1=SERVLET
DefaultUserTimeout=3600
Username e Password vengono criptati durante il primo avvio dell’applicativo, gli altri parametri possono essere modificati
anche dopo questa modifica. Per modificare Username o Password successivamente alla modifica è sufficiente sostituire
l’intera riga (ad es.: ObfuscatedPassword.1=O9J0K%3FN%3B%2C%24 con Password.1=password)
8
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
applicativi – licenza
Ogni applicativo necessita della licenza
Il cliente può scaricare le licenze applicative da MyZucchetti (solo con l’utenza del cliente alla quale è stato registrato il
contratto).
La licenza viene generata automaticamente in base al contratto inserito nel sistema informatico, normalmente il processo
automatico viene completato il giorno successivo al caricamento del contratto.
Ad oggi ci sono quattro tipi di licenze:
●
HR (mip, paghew, workflow, cu770, presenze, ecc.)
●
AGO
●
F24
●
START
La licenza consiste in un file xml, it.zucchetti.infinity.license.xml, che va copiata nella cartella WEB-INF/cfg di ogni applicativo,
assicurandosi che sia la licenza corretta per il tipo di applicativo (HR, AGO, F24 o START).
Eseguire l'amministrazione del database con licenze non corrette (o con moduli diversi da quelli poi utilizzati) può dare origine
ad anomalie applicative.
ATTENZIONE
F24 (o AGOF24) se necessario amministra il database immediatamente al deploy (quando si avvia il tomcat).
9
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: installazione (1 di 10)
Si consiglia di installare MSSQL con la stessa lingua in uso su Windows, diversamente si potranno riscontrare problemi nella
visualizzazione del contratto di licenza che non permetteranno di proseguire con l'installazione.
Come alternativa si può installare ed attivare una diversa lingua nel sistema operativo; dopo l'installazione di MSSQL si può
reimpostare in Windows la lingua preferita.
Solo per il DVD di installazione fornito da
Zucchetti (in bundle) per cominciare
l'installazione è necessario lanciare il file
D:\SQL2012_ITA_64\hdrftsre\setup.exe,
dove D: è l'unità di lettura DVD.
Se dopo l'inserimento del DVD o il doppio
click sull'unità DVD compare il setup
automatico (autorun) chiuderlo e seguire
le istruzioni sopra indicate.
10
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: installazione (2 di 10)
11
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: installazione (3 di 10)
Solo per il DVD di installazione fornito da Zucchetti
(in bundle) il codice Product Key è già compilato.
12
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: installazione (4 di 10)
Se le impostazioni di rete non permetto la navigazione
si presenterà l'errore mostrato nell'immagine. Si potrà
comunque proseguire con l'installazione.
13
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: installazione (5 di 10)
Le funzionalità necessarie sono:

Servizi motore di database

Strumenti di gestione – Completa *
* possono essere installati su un'altra macchina
14
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: installazione (6 di 10)
15
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: installazione (7 di 10)
16
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: installazione (8 di 10)
La regola di confronto (collection) dev'essere
Latin1_General_CI_AS
(che normalmente è quello di default).
Scegliere la modalità di autenticazione mista per
permettere agli applicativi di accedere al database
tramite utenza sql dedicata.
Questa opzione può essere modificata anche dopo
l'installazione.
17
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: installazione (9 di 10)
I file database (.mdf), log (.ldf) e il database
temporaneo (tempdb) vengono normalmente
letti/scritti contemporaneamente: se si trovano su
dischi differenti le prestazioni saranno migliori.
18
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: installazione (10 di 10)
19
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: configurazione
Verificare che il protocollo TCP/IP dell'istanza appena
installata sia abilitato e che nelle proprietà sia settata
una porta TCP statica e non dinamica.
In base all'edizione installata l'impostazione di default potrebbe essere differente.
20
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: gestione db (1 di 5)
21
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: gestione db (2 di 5)
Per i database HR, la proprietà
read_committed_snapshot
dev'essere impostata a on (1).
VERIFICARE PROPIETA' read_committed_snapshot:
select name, is_read_committed_snapshot_on from
sys.databases where name not in ('master', 'tempdb', 'model',
'msdb');
SETTARE PROPIETA' read_committed_snapshot:
alter database HRZucchetti set read_committed_snapshot on
with rollback immediate;
go
22
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: gestione db (3 di 5)
23
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: gestione db (4 di 5)
← versione più recente
24
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – mssql: gestione db (5 di 5)

Full Backup giornaliero

Rebuild Index settimanale

Cancellazione tabelle temporanee (da eseguire con servizio Tomcat fermo)
DECLARE @tableName varchar(max);
DECLARE @SQLCommand varchar(max);
DECLARE cursorTmpTables CURSOR FOR
select name from sys.tables where name like 'cptmp[_]%' and create_date <= dateadd(hh, -48, getdate());
OPEN cursorTmpTables;
FETCH NEXT FROM cursorTmpTables INTO @tableName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQLCommand = 'DROP TABLE ' + @tableName;
EXEC(@SQLCommand);
FETCH NEXT FROM cursorTmpTables INTO @tableName;
END
CLOSE cursorTmpTables;
DEALLOCATE cursorTmpTables;
25
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
linux – selinux e firewall
Disabilitare SELinux (Security Enhanced Linux)
SELinux è un modulo del kernel di Linux che fornisce una serie di strumenti per attuare e monitorare politiche di sicurezza, incluso il Mandatory
Access Control (MAC) del Dipartimento della Difesa degli Stati Uniti, attraverso l'uso del framework LSM, Linux Security Modules.


Modificare il file /etc/selinux/config settando il parametro SELINUX con il valore disabled. Le modifiche
saranno effettive solo dopo il riavvio del server
Per disabilitare SELinux senza riavviare il server è necessario digitare il seguente comando:
setenforce 0
note: al riavvio del server vengono lette le impostazioni contenute nel file /etc/selinux/config
Disabilitare il firewall

RedHat 6 / CentOS 6
service iptables stop
chkconfig iptables off
service ip6tables stop
chkconfig ip6tables off

RedHat 7 / CentOS 7
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld (opzionale)
26
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – postgresql: installazione
Reperimento software

http://www.enterprisedb.com/products-services-training/pgdownload
Installazione su Intel/AMD

Rendere eseguibile il file di installazione
chmod +x postgresql-9.4.3-1-linux-x64.run

Eseguire il file di installazione
./postgresql-9.4.3-1-linux-x64.run

Seguire le istruzioni a video confermando le opzioni di default (se necessario modificare il percorso di
installazione, la porta o gli altri parametri), al termine non lanciare lo Stack Builder
Installazione su IBM Power

Utilizzare yum install postgresql.ppc64 postgreql-server.ppc64

Al termine dell'installazione inizializare il db con postgresql-setup initdb
NOTE

Controllare che il servizio parta automaticamente all'avvio del server con chkconfig (RedHat6/CentOS6) o con
systemctl (RedHat7/CentOS7)
27
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – postgresql: configurazione (1 di 2)
Tramite i file postgresql.conf e pg_hba.conf è possibile gestire, tra le altre cose, il modo con cui il servizio PostgreSQL rimane in
ascolto e le autorizzazioni/modalità di connessione. La posizione di questi file varia a seconda delle distribuzioni: in CentOS e
RedHat i due file sono posizionati nella data_directory (ad es.: /opt/PostgreSQL/9.4/data/).
Il file postgresql.conf tra i vari parametri che controlla gli indirizzi ip “ascoltati” da postgresql: il valore di default di listen_adress,
normalmente, è “localhost” ed è indicato con
listen_address = “localhost”
Questo significa che l’accesso a PostgreSQL è consentito di default solo al database server. Per consentire l’accesso da pc remoto
(o dall’application server) a PostgreSQL bisogna innanzitutto cambiare il valore “localhost”, è possibile utilizzare “*” per consentire
l’accesso a tutti:
listen_address = “*”
Una volta consentito l’ascolto su tutti gli indirizzi si utilizza il file pg_hba.conf per indicare a PostgresSQL quali users possono
accedere, a quali database e con quale modalità di autenticazione:
# TYPE DATABSE
USER
# local for domain socket only
local
all
postgres
# IPv4 connections
host
all
postgres
host
all
all
CIDR-ADDRESS
METHOD
ident
192.168.0.0/24
md5
md5
Nell’esempio l’utente postgres su local può accedere a tutti i database senza specificare password (metodo ident).
Mentre tutti gli users degli hosts della sottorete 192.168.0.0/24 possono accedere a tutti i database in postgresql (a patto
ovviamente che il database annoveri tra i suoi utenti l’user che accede) con metodo di cifratura md5 e pertanto con password.
28
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – postgresql: configurazione (2 di 2)
Configurazione parametri di memoria: postgresql.conf
shared_buffers = Consigliato il 25% della memoria totale
work_mem = Consigliato il 4% della memoria totale
max_connections = 100
escape_string_warning = On
standard_conforming_strings =
Off
Autovacuum = On (con relativi parametri a default)
maintenance_work_mem = Consigliato il 10% della memoria totale
synchronous_commit = On
wal_buffers = -1
checkpoint_segments = 16
effective_cache_size = Consigliato il 40% della memoria totale
default_statistics_target = 100
max_locks_per_transaction = 128
shared_preload_libraries = 'pg_stat_statements'
#----------------------------------------------------------------# Configurazione logs
#----------------------------------------------------------------log_destination = 'stderr'
logging_collector = on
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_age = 1d
log_rotation_size = 100MB
29
© 2016 – Zucchetti spa tutti i diritti riservati
Corso tecnico
BASE
database server – postgresql: gestione db
Creazione database






Diventare utente postgres
su postgres
Creare la directory per il tablespace
mkdir /opt/PostgreSQL/9.4/data/ts_zucchetti
Accedere al terminale di postgresql
psql -U postgres -W
Creare il tablespace
CREATE TABLESPACE tszucchetti OWNER postgres LOCATION
'/opt/PostgreSQL/9.3/data/tszucchetti/';
Creare il database
CREATE DATABASE zucchetti OWNER postgres TABLESPACE tszucchetti;
Uscire dal terminale di postgresql
\q
Ripristino database

pg_restore
pg_restore -U postgres -W -d zucchetti -v -Fc file.backup
Backup database

pg_dump
pg_dump -U postgres -W -v -Fc zucchetti > file.dump
30
© 2016 – Zucchetti spa tutti i diritti riservati