Man Tecnico:Startup: Tecnologie, configurazione server ed installazione
L'applicativo viene rilasciato in ambiente XAMP ed è sviluppato in PHP utilizzando Forms Framework (FF).
Per il corretto funzionamento dell'applicativo è necessario assicurarsi che nelle configurazioni delle componenti server siano definiti:
- MySQL
- sql-mode -> eliminare NO_ZERO_DATE e STRICT_ALL_TABLES
- Apache
- Moduli da abilitare
- mod_rewrite (Allow override)
- Consigliati
- Directory indexing (index.php)
- Disabilitare Directory Listing
- PHP
- Estensioni da abilitare
- php-mysqli
- php7.2-xml
- php-mbstring
- php-curl
- php7.2-zip
- Configurazioni
- upload_max_size >= 10Mb (non obbligatoria ma utile per l'upload degli allegati)
- post_max_size >= 10Mb (non obbligatoria ma utile per l'upload degli allegati)
- memory_limit >= 512Mb (non obbligatoria ma utile per l'esecuzione di estrazioni complesse)
- Definizione di save_session_path per il corretto salvataggio delle sessioni (in ambiente Linux non definito di default, se non definito non permette la creazione di sessioni e genera un problema sul login)
Per l'installazione dell'applicativo è sufficiente
- creare il DB dell'applicativo dal file .sql in /sql_db_dump (è consigliato creare un utente MySQL specifico per l'applicativo come buona norma di sicurezza). La password viene cifrata dall'applicativo utilizzando la funzione PASSWORD() di MySQL: è però possibile variare il metodo editando il file "/conf/modules/security/config.php" aggiungendo "define("MOD_SEC_PASS_FUNC", "MD5);";
- copiare i file dell'applicativo in una directory (/budget) nella root del server;
- Sarà presente un file .htaccess per implementare il design pattern "front controller", da configurare con il nome della directory dell'applicativo nel caso in cui si ritenga opportuno cambiarne il nome da "budget".
- creare il file di configurazione dell'enviroment sul quale viene effettuato il rilascio (configurazione);
- creare la password per l'utente admin ("update cm_mod_security_users set password = '<password generata e criptata con codifica "password")>' where username = 'admin'");
- popolare la tabella "anno_budget" con almeno un anno di budget
- popolare la tabella
cm_mod_security_users_fieldscollegando una matricola fittizia all'utente admin (ES. "INSERT INTOcm_mod_security_users_fields(ID,ID_users,field,value) VALUES (1, 1, 'matricola', '9999');"); - popolare le tabelle per creare almeno un piano CdR (e una dimensione gerarchica tipo_piano) con un CdR radice (ed una tipologia CdR) e un CdC associato, al quale far afferire il dipendente collegato alla matricola. Vengono riportate le seguenti query a titolo esemplificativo:
"INSERT INTO tipo_cdr (ID, descrizione, abbreviazione) VALUES(1, 'Direzione', 'DIR');
INSERT INTO tipo_piano_cdr (ID, descrizione, priorita) VALUES(1, 'Gerarchico', 1);
INSERT INTO tipo_cdr_padre (ID, ID_tipo_cdr, ID_tipo_cdr_padre) VALUES (1, 1, 1);
INSERT INTO piano_cdr (ID, data_definizione, data_introduzione, ID_tipo_piano_cdr) VALUES(1, '2021-01-01', '2021-01-01', 1);
INSERT INTO anagrafica_cdc (ID, codice, descrizione, abbreviazione, data_introduzione, data_termine) VALUES(1, '00001', 'Costi generali di Direzione Generale', 'CGDG', '2021-01-01', NULL);
INSERT INTO anagrafica_cdr (ID, codice, descrizione, abbreviazione, ID_tipo_cdr, data_introduzione, data_termine) VALUES(1, 'dir01', 'Direzione Generale', 'DirGen', 1, '2021-01-01', NULL);
INSERT INTO cdc (ID, ID_anagrafica_cdc, ID_cdr) VALUES(1, 1, 1);
INSERT INTO cdr (ID, ID_anagrafica_cdr, ID_piano_cdr, ID_padre) VALUES(1, 1, 1, 0);
INSERT INTO cdc_personale (ID, matricola_personale, codice_cdc, percentuale, data_inizio, data_fine) VALUES(1, '9999', '00001', 100, '2021-01-01', NULL);
INSERT INTO personale (ID, matricola, cognome, nome) VALUES(1, '9999', 'Bianchi', 'Marco'); "