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