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