# Installazione

- Requisiti minimi
- Configurazione dell'ambiente operativo
- Installazione AIOCP
  - Installazione automatica
  - Installazione manuale
    - Modifica file di configurazione
    - Installazione del database
  - Post installazione
- Configurazione AIOCP
- Accesso e Sicurezza

## Requisiti minimi

Prima di procedere all'installazione di AIOCP è necessario verificare i requisiti minimi del sistema:

- Un web server come Apache (http://httpd.apache.org/) o Microsoft® IIS (http://www.microsoft.com).
- MySQL 3.23.xx (http://www.mysql.com) - indispensabile
- PHP 4.2.x (http://www.php.net) - indispensabile
- Le seguenti librerie sono già integrate nel PHP 4.3.x, così che andranno installate manualmente solo per le versioni PHP più vecchie.
  - PHP Zlib library (http://www.gzip.org/zlib) - necessaria per i backup
  - PHP GD Library 2.0.1 (http://www.boutell.com/gd) - necessaria per le immagini ed i grafici in true color
    (si può anche usare la versione 1.8.x rinunciando al supporto true color)
    Questa libreria andrà installata con:
    - FreeType Lybrary 2.0.1(http://www.freetype.org) - necessaria per i pulsanti form grafici
    - libpng 1.2.2 - supporto immagini PNG
    - jpegsrc.v6b - supporto immagini JPEG
- Zend OptimizerTM 2.1.0 per eseguire i file codificati (non richiesto per la versione non codificata).
- Almeno 30MB per i file ed almeno 20MB per il database MySQL

Per l'installazione e la configurazione del server web e delle librerie richieste consultate i rispettivi manuali.

## Configurazione dell'ambiente operativo

Per il corretto funzionamento di AIOCP è necessario configurare il PHP in modo che supporti i sistemi e le librerie sopra indicate, è necessario inoltre che alcuni parametri di PHP siano impostati come segue:
su php.ini

- safe_mode = Off
- register_globals = On
- session.save_handler = user
- arg_separator.output = "&amp;"
- session.use_trans_sid = 0

oppure su modulo Apache (/etc/httpd/conf/httpd.conf):

    <IfModule mod_php4.c>
    	AddIcon /icons/php4.gif .php3 .php4 .php .phtml
    	php_admin_flag safe_mode off
    	php_admin_flag register_globals on
    	php_value arg_separator.output "&amp;"
    	php_value session.save_handler user
    	php_value session.use_trans_sid 0
    </IfModule>

Per la configurazione degli aspetti generali del PHP o per diverse modalità di configurazione, fate riferimento alla guida ed alle annotazioni ufficiali sul sito www.php.net.
Sarà inoltre necessario controllare le quote disco degli utenti che dovranno essere sufficienti a gestire i file ed il database.
NOTA: Se si verifica l'errore CGI Timeout Error sul server IIS durante l'installazione, dovrete aumentare il valore della variabile CGI Script Timeout (Administrative Tools -> Internet Information Services -> cliccate con il pulsante destro del mouse su Web Sites icon -> Properties -> Home Directory -> Configuration -> Process Options -> cambiate il valore di CGI script timeout a 1200 seconds).

## Installazione AIOCP

Verificate che l'ambiente operativo sia correttamente installato e configurato così come descritto nei paragrafi precedenti.
Copiate tutto il contenuto della cartella AIOCP nella web root del vostro server o in una sottocartella.
Se utilizzate un FTP per trasferire la versione encoded di AIOCP, assicuratevi di impostare il trasferimento dei file PHP in modalità binaria (BINARY) prima di inviare i file al server.
A questo punto è possibile procedere in due modi:

### Installazione automatica

Attraverso questo processo è possibile installare automaticamente il database e configurare i parametri di sistema principali.
Modificate i permessi delle seguenti file e directory in modo tale che siano scrivibili dal software (chmod 777 su sistemi unix-like):

- install/
- shared/config/cp_db_config.php
- shared/config/cp_paths.php
- admin/phpMyAdmin/config.inc.php

Questi file potranno essere reimpostati su sola lettura al termine dell'installazione.
Nel caso che il programma di installazione non riuscisse a modificare questi file, sarà sempre possibile modificarli manualmente come descritto nel paragrafo successivo.
Usando un comune web browser (programma di navigazione internet come Microsoft® Internet Explorer o Netscape®) collegatevi al vostro sito all'indirizzo in cui si trova il programma di installazione di AIOCP: http://<miosito>/install/install.php
Se l'ambiente operativo è correttamente configurato dovreste vedere il modulo di installazione di AIOCP.
Nota che:
Data la criticità di questo componente, il programma di installazione si presenta solo ed esclusivamente in lingua inglese.
Il processo di installazione eliminerà qualsiasi dato delle precedenti installazioni di AIOCP, se ci si trova in questo caso sarà quindi opportuno fare delle copie (backup) dei dati.
A causa delle dimensioni di alcune tabelle il processo di installazione potrebbe durare a lungo (anche decine di minuti), sarà quindi necessario essere pazienti e non interrompere il processo di installazione fino al suo completamento.
Per procedere all'installazione sarà necessario compilare opportunamente il modulo e premere il pulsante INSTALL.
Di seguito l'elenco dei campi richiesti nel modulo di installazione:

- db host: nome dell'host del database MySQL (solitamente localhost)
- db user: nome dell'utente del database MySQL (solitamente è root)
- db password: password utente per l'accesso al database MySQL
- db name: nome del database (solitamente AIOCP). Sarà necessario cambiargli il nome solo nel caso in cui nello stesso sistema esistano altre copie di AIOCP.
- tables prefix: prefisso da aggiungere al nome delle tabelle (solitamente aiocp_)
- host URL: il nome di dominio del vostro sito (ad es: http://www.miosito.com)
- relative URL: percorso a partire dalla root del webserver dove sono stati copiati i file di AIOCP (solitamente / oppure /<percorso ad AIOCP>/)
- AIOCP path: percorso reale completo della directory dove è stato installato AIOCP (ad esempio: /usr/local/apache/htdocs/AIOCP/ oppure c:/Inetpub/wwwroot/AIOCP/)
- mysql path: percorso reale completo della directory dove si trovano i dati del database MySQL (ad esempio /var/lib/mysql/ oppure c:/mysql/data/). Questo parametro è opzionale e serve unicamente per fare il backup dei file MySQL.

Se l'installazione è andata a buon fine il sistema sarà pronto per la sua prima esecuzione.
A questo punto possiamo rimuovere la cartella install dal server e ripristinare i permessi di sola lettura nei file di configurazione.
In caso contrario possiamo complementare o ripetere l'installazione usando la procedura manuale descritta di seguito.

### Installazione manuale

Per installare manualmente AIOCP occorre modificare i file di configurazione ed installare il database.

#### Modifica file di configurazione

I file e le costanti di configurazione essenziali per l'avvio di AIOCP sono:

- shared/config/cp_db_config.php
  - K_DATABASE_HOST (nome dell'host del database MySQL, solitamente localhost)
  - K_DATABASE_NAME (nome del database, solitamente AIOCP)
  - K_DATABASE_USER_NAME (nome dell'utente del database MySQL, solitamente è root)
  - K_DATABASE_USER_PASSWORD (password per l'accesso al database MySQL)
  - K_TABLE_PREFIX (prefisso da aggiungere al nome delle tabelle, solitamente aiocp_)
- shared/config/cp_paths.php
  - K_PATH_HOST (il nome di dominio del vostro sito ad es: http://www.miosito.com)
  - K_PATH_AIOCP (percorso a partire dalla root del webserver dove sono stati copiati i file di AIOCP, solitamente / oppure /<percorso ad AIOCP>/)
  - K_PATH_MAIN (percorso reale completo della directory dove è stato installato AIOCP, ad esempio: /usr/local/apache/htdocs/AIOCP/ oppure c:/Inetpub/wwwroot/AIOCP/)
  - K_PATH_MYSQL_DATA (percorso reale completo della directory dove si trovano i dati del database MySQL, ad esempio /var/lib/mysql/AIOCP/ oppure c:/mysql/data/. Questo parametro è opzionale e serve unicamente per fare il backup dei file MySQL.)
- admin/phpMyAdmin/config.inc.php
  - cfg['PmaAbsoluteUri'] (indirizzo internet completo dove si trova installato il programma phpMyAdmin, solitamente http://<miosito>/admin/phpMyAdmin/)
  - cfg['Servers'][$i]['host'] (nome dell'host del database MySQL, solitamente localhost)
  - cfg['Servers'][$i]['user'] (nome dell'utente del database MySQL, solitamente è root)
  - cfg['Servers'][$i]['password'] (password utente per l'accesso al database MySQL)

#### Installazione del database

All'interno della cartella install sono contenuti i file SQL che contengono lo schema ed i dati del database che andranno utilizzati nel corretto ordine:

- aiocp_db_structure.sql - contiene la struttura del database
- aiocp_db_data.sql - contiene i dati del database

Se si desidera cambiare il prefisso delle tabelle sarà necessario usare un editor di testi che abbia una funzione cerca e sostituisci e operare le seguenti sostituzioni:

- Nel file aiocp_db_structure.sql sostituire CREATE TABLE aiocp_ con CREATE TABLE vostroprefisso
- Nel file aiocp_db_structure.sql sostituire DROP TABLE IF EXISTS aiocp_ con DROP TABLE IF EXISTS vostroprefisso
- Nel file aiocp_db_data.sql sostituire INSERT INTO aiocp_ con INSERT INTO vostroprefisso

Per eseguire i file SQL potete usare i comandi MySQL dalla shell del server:

    mysql
    mysql> CREATE DATABASE AIOCP;
    shell> mysql AIOCP < aiocp_db_structure.sql
    shell> mysql AIOCP < aiocp_db_data.sql

Nell'esempio precedente si è supposto che il nome del database fosse AIOCP.
In alternativa (se avete già configurato il file admin/phpMyAdmin/config.inc.php) potete usare l'utility http://<miosito>/admin/phpMyAdmin/index.php con la quale potete creare il database ed eseguire i file SQL attraverso l'apposito comando.

### Post installazione

Una volta terminato il processo di installazione occorre:

- eliminare la cartella install che non è più necessaria e rappresenta un pericolo per la sicurezza dell'attuale installazione
- impostare a sola lettura (chmod -R 644 su sistemi unix-like) i permessi dei file nelle cartelle:
  - admin/config/
  - shared/config/
  - public/config/
- impostare opportunamente i permessi per quelle cartelle che dovranno essere accessibili in scrittura dal software AIOCP (chmod -R 777):
  - admin/backup
  - admin/log
  - attachments
  - banners
  - cache
  - download
  - images/avatars
  - images/awards
  - images/company
  - images/flags
  - images/icons
  - images/icons_client
  - images/levels
  - images/menu
  - images/products
  - images/products_categories
  - images/reviews
  - images/smiles
  - images/userphoto
  - pagefiles
  - public/log
  - shared/log
  - sounds
- impostare nel dettaglio i file di configurazione come indicato nel paragrafo successivo

## Configurazione AIOCP

Terminata l'installazione, AIOCP dovrebbe essere in grado di sfruttare tutte le sue funzioni ad eccezion fatta per l'invio delle email per le quali è necessario configurare correttamente il file:

- shared/config/cp_email_config.php

Si sconsiglia di NON modificare gli altri file di configurazione presenti nel sistema a meno che non si sappia esattamente cosa si sta facendo:

- shared/config/cp_config.php - configurazione generale del sistema
- shared/config/cp_colors.php - tabella con codici colori
- shared/config/cp_db_config.php - configurazione database
- shared/config/cp_ecommerce.php - configurazioni per il commercio elettronico (valuta, ...)
- shared/config/cp_extension.inc - estensione dei file usata dal sistema (.php)
- shared/config/cp_general_constants.php - costanti di uso generale
- shared/config/cp_paths.php - percosi file e directory all'interno del sistema
- admin/config/cp_config.php - configurazione generale pannello di amministrazione
- admin/config/cp_auth.php - impostazione livello di accesso ai moduli di amministrazione
- public/config/cp_config.php - configurazione generale sito pubblico

Per la configurazione dei moduli di pagamento e di trasporto per il commercio elettronico, consultate la documentazione presente nelle cartelle:

- shared/payment/ - moduli di pagamento
- shared/shipping/ - moduli di trasporto

## Accesso e Sicurezza

Una volta terminate le fasi di installazione e configurazione sopra descritte potete accedere al sistema collegandovi col browser all'indirizzo http://<miosito>/admin/code/index.php ed usando i seguenti dati:

- nome: admin
- password: 1234

Al fine di proteggere il vostro sito e garantirvi un'accesso esclusivo, ricordatevi di cambiare la password tramite il modulo Utenti -> Modifica. Sempre tramite questo modulo potete anche inserire i vostri dati e le vostre preferenze.
Per avere un maggior livello di sicurezza si consiglia vivamente di proteggere l'intera cartella admin con un sistema di autenticazione utente web-based.
Uno dei modi più semplici e sicuri per proteggere una cartella su un server Apache è usare l'autenticazione Htaccess. Per maggiori informazioni consultate http://httpd.apache.org/docs/howto/htaccess.html.
Se usate un diverso web server consultate la relativa documentazione.