Skip to content
davide edited this page Feb 28, 2015 · 23 revisions

Welcome to the Thermo wiki!

Mentre "provo" un'installazione, trascrivo sul wiki http://www.raspibo.org/wiki/index.php/Thermo

Table of Contents

Operazioni preliminari

1. Configurazione/preparazione Raspberry Pi

sudo raspi-config
sudo aptitude update
sudo aptitude dist-upgrade

2. Installazione pacchetti/programmi necessari

2.1. Clono i repository dei programmi utili

mkdir git
cd git
git clone https://github.com/raspibo/ThermoRed.git
git clone https://github.com/raspibo/ThermoRed.wiki.git
git clone https://github.com/raspibo/CentRed.git
git clone https://github.com/raspibo/CentRed.wiki.git
git clone https://github.com/andymccurdy/redis-py.git

2.2. Installazione programmi utili

sudo aptitude install checkinstall
cd redis-py/
sudo checkinstall python3 setup.py install

2.3. Installazione web server

sudo aptitude install nginx fcgiwrap
2.3.1. Configurazione web server

Riferimenti:

sudo cp /usr/share/doc/fcgiwrap/examples/nginx.conf /etc/nginx/fcgiwrap.conf

Prima di modificare il file copiato in precedenza (fcgiwrap.conf), meglio reiniziare a riconfigurare il server.

sudo rm /etc/nginx/sites-enabled/default
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/thermo

Modifico /etc/nginx/sites-available/thermo, per ora mi sono limitato a modificare:

  • root /var/www;
e aggiungere:
  • # fast cgi support
    include /etc/nginx/fcgiwrap.conf;
Modifico /etc/nginx/fcgiwrap.conf, per ora mi sono limitato a modificare:
  • root /var/www;
sudo mkdir -p /var/www/cgi-bin
sudo ln -s /etc/nginx/sites-available/thermo /etc/nginx/sites-enabled/
sudo invoke-rc.d nginx restart

3. Prima di continuare

Clono "me stesso"

cd ~/git
git clone https://github.com/raspibo/Thermo.wiki.git
git clone https://github.com/raspibo/Thermo.git

4. Inizio copie ThermoRed

Utilizzo "midnight commander" come root: sudo mc (durante la copia riassegnero` tutti i permessi a root e aggiungero il bit di eseguibile agli script in cgi-bin). Copiero` solamente i files ncessari (ovviamente), in sospeso mi rimane l'eseguibile principale "startred.py", sara` da modificare e probabilmente sara` meglio spostarlo, ma per ora lascio com'e`.

Preparo anche il file ".htaccess":

sudo su
echo -n "thermo" >> /var/www/.htpassw
echo -n ":" >> /var/www/.htpasswdd
openssl passwd >> /var/www/.htpasswd

Aggiungo il javascript per il grafico delle temperature (http://dygraphs.com):

sudo su
cd /var/www/
apt-get install aria2
aria2c http://dygraphs.com/1.1.0/dygraph-combined.js

4.1. Faccio un test

Da un terminale mi collego in tunnel ssh (perche` "thermo" si trova fisicamente in un'altro luogo, in un'altra rete):

ssh -L 8080:thermo:80 <USERNAME>@<NO-IP.REMOTE.HOST> -o ServerAliveInterval=60
.. e ovviamente, nel browser digito "localhost:8080".

4.2. Correzione errori

Modifico /etc/nginx/sites-available/thermo, aggiunto autenticazione:

 # Auth
 auth_basic "mysiteauth";
 auth_basic_user_file /var/www/.htpasswd;

e riavvio:

sudo invoke-rc.d nginx restart

4.3. Errori script

Ok. Siamo al bivio.

Correggere gli script per il funzionamento con i files di configurazione (lettura/scrittura), oppure "svoltiamo" utilizzando un database (ovviamente sto` pensando a "redis", gia` usato in "centred") ?

  1. Nella prima ipotesi, dovrebbe essere tutto semplice, ma rimarrebbe (forse) una struttura un po` rigida e difficilmente modificabile (?)
  2. Nella seconda ipotesi, si dovrebbero semplificare tante cose, ma e` tutto, tutto, tutto .. da riscrivere (si salva poco)
4.3.1. Redis
sudo su
apt-get install redis-server

5. CGI Python Script

Ho cominciato a scrivere un po` di software.

Come prima cosa ho cercato di fare e manipolare via web un file "/var/www/conf/thermo.json" dove inserire i parametri per l'accesso al database Redis (predisponendolo per aggiunte future), al file ho assegnato user/group "www-data", cosi` che sia scrivibile da 'cgi-web-scripts', poi saranno da rivedere tutti gli attributi e i diritti di tutti i files (alla fine, prima cerchiamo di avere qualcosa di funzionante).

Il contenuto del file "thermo.json":

[
    {
        "name": "redis", 
        "value": [
            {
                "name": "hostname", 
                "value": "localhost"
            }, 
            {
                "name": "port", 
                "value": "6379"
            }, 
            {
                "name": "db", 
                "value": "0"
            }, 
            {
                "name": "password", 
                "value": ""
            }
        ]
    }
]

Il resto dei parametri di configurazione sara` inserito all'interno del database di Redis.