Installazione

Le istruzioni per l’installazione si riferiscono alla messa online di FreeSIS su una macchina Debian GNU/Linux. Gran parte della procedura è comunque valida per ogni sistema UNIX Like.

Requisiti

Python >= 2.5
Django >= 1.3
jQuery >= 1.6
MySQL >= 5.1

Preparazione

L’applicazione può essere messa online usando Apache + mod_wsgi + MySQL:

# apt-get install libapache2-mod-wsgi mysql-server libmysqlclient-dev

Generalmente è consigliabile non lanciare i worker wsgi come utente root. Sarà dunque necessario creare un nuovo utente che qui, arbitrariamente, chiamiamo django:

# adduser django

Di seguito, nella documentazione, i comandi da terminale da lanciare come root saranno preceduti dal simbolo # mentre i comandi da lanciare come utente django saranno preceduti dal simbolo $.

Virtual environment

Virtualenv permette di isolare applicazioni Python che risiedono su un server in comune e che necessitano di diverse librerie e di diverse versioni delle librerie stesse.

Questa documentazione suggerisce dunque la messa online di FreeSIS con l’ausilio di virtualenv.

Prima di tutto occorre installare i tools necesari:

# apt-get install python-setuptools python-dev libjpeg8-dev zlib1g-dev
# easy_install pip
# pip install virtualenv

E’ possibile a questo punto creare l’ambiente virtuale per FreeSIS lanciando il seguente comando all’interno dello home directory di django:

$ virtualenv --no-site-packages freesis

Nel comando precedente, freesis è il nome della directory che conterrà il virtualenv, ed è completamente arbitrario. Nel caso sia necessario installare più istanze di FreeSIS dovranno essere creati più virtualenv (esempio: freesis_ipsia, freesis_itis). Ovviamente occorre poi effettuare i passi successivi sostituendo alla directory freesis quella effettivamente creata.

Repository

L’installazione di FreeSIS avviene usando il repository mercurial messo a disposizione.

Per clonare il repository è necessario in primo luogo installare mercurial sulla macchina server:

# pip install mercurial

E’ possibile a questo punto, come utente django, ottenere i sorgenti di FreeSIS clonando il repository all’interno dell’ambiente virtuale:

$ cd ~/freesis/
$ hg clone https://bitbucket.org/frankban/freesis src

Dipendenze

All’interno dell’ambiente virtuale è necessario installare tutte le librerie Python dalle quali FreeSIS dipende:

$ cd ~/freesis/
$ source bin/activate
$ pip install -r src/requirements/1_base.pip
$ pip install -r src/requirements/2_extapps.pip
$ pip install -r src/requirements/3_apps.pip

Database

All’interno della shell mysql creare il database per FreeSIS e l’utente mysql che sarà usato per la connessione:

CREATE DATABASE freesis CHARACTER SET utf8;
CREATE USER 'freesis'@'localhost' IDENTIFIED BY 'MYPASSWORD';
GRANT ALL PRIVILEGES ON freesis.* TO 'freesis'@'localhost' WITH GRANT OPTION;

Occorre ora gestire il file di configurazione di FreeSIS:

$ cp ~/freesis/src/myproject/settings_production.py ~/freesis/src/myproject/settings.py

Editare il file inserendo i parametri corretti per la connessione a MySQL.

E’ possibile a questo punto creare la struttura del database FreeSIS:

$ cd ~/freesis/
$ source bin/activate
$ python src/myproject/manage.py syncdb

L’ultimo comando creerà le tabelle e permetterà anche di fornire le credenziali per l’utente amministratore dell’applicazione.

E’ necessario anche collezionare i file statici in un unico posto, in modo che vengano serviti facilmente dal media server (in questo caso è sempre Apache):

$ python src/myproject/manage.py collectstatic

Non rimane altro che configurare il web server.

Web server

Il framework Django supporta una grande varietà di application server e di web server. In questa guida prenderemo in esame l’accoppiata Apache + mod_wsgi.

All’interno del progetto è disponibile un esempio di configurazione di Apache che è possibile utilizzare:

# cp /home/django/freesis/src/apache.example /etc/apache2/sites-available/freesis

A questo punto modificare il file /etc/apache2/sites-available/freesis sostituendo le occorrenze di mysite.it con il dominio reale del sito.

Ricordarsi di cambiare anche la path dello script WSGI e le varie path ai file statici nel caso si sia creato un virtualenv con un nome diverso da freesis.

Ora è solo necessario abilitare il sito e riavviare apache:

# a2ensite freesis
# /etc/init.d/apache2 reload