SWPI LAMP
Ovvero, una completa meteo station con :
SWPi + Webserver Apache2 + MYSQL + PHP + FTP + WEBMIN!
Questo tutorial nasce dalla esigenza di avere una stazione meteo completa e capace di visualizzare
autonomamente i dati SENZA L’ESIGENZA DI AVERE NECESSARIAMENTE UN SITO SU INTERNET O UNO
SPAZIO WEB dotato di supporto php e mysql.
L’abbinamento meteo + RASPBERRY sopperisce in toto a questa richiesta, mettendo a disposizione una
completa struttura WEB pronta da essere pubblicata in INTERNET oppure visualizzata anche in locale.
Ho scritto questa miniguida, per aiutare chi come me ha passione sia per il computer che per il meteo e per
i dispositivi elettronici, spero di non aver commesso errori, se nel caso ve ne fossero mi scuso
anticipatamente.
Ringraziamento particolare a Tony Tarsi che ha speso tempo creando una ottimo software per Raspberry.
Le istruzioni vi guideranno passo passo alla realizzazione, è necessario solo un minimo di conoscenza
informatica, niente di particolarmente complicato.
Questa guida deve essere presa così come è, ognuno è responsabile di ciò che fa e declino ogni
responsabilità.
Retorica … lo so … ma necessaria a volte !!! ☺
ALLORA INIZIAMO SUBITO……….
Scricare l’immagine dopo esservi registrati al forum di www.vololiberomontecucco.it da qui:
https://www.dropbox.com/s/1b2xbllismd2hbw/swpi.rar
Scompattate dove voleteil file zippato fino ad ottenere l’immagine chiamata swpi_xxx (dove xxx è la
versione corrente pubblicata)
Scaricare il file win32diskimager-v0.7-binary.zip da http://sourceforge.net/projects/win32diskimager/
e scompattarlo .
Preparare una sd da 4 o 8 Gb inserirla nel lettore SD lanciare il file Win32DiskImager.exe in modalità
amministrativa (tasto DX esegui come amministratore) e si aprirà una schermata come questa:
Aprire la cartella e cercare il percorso della immagine scaricata ed estratta precedentemente: swpi_XXX
Selezionare sulla tendina “device” la lettera assegnata alla scheda SD.
Così:
Premere Write ed attendere il completamento della scrittura della immagine.
Scaricare il programma putty.exe da :
http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
Collegare al Raspberry la scheda SD poi la rete ed infine accendere il dispositivo.
La distribuzione Linux del PI partirà automaticamente ed anche l’SSH server in essa contenuto.
Lanciare Putty.exe appena scaricato e impostare l’indirizzo ip del PI e la porta 22
(per conoscere l’indirizzo ip del PI basta eseguire una scansione sulla rete locale con programmi tipo
Superscan.exe sulla porta 22 oppure consultare i dispositivi collegati al router o la tabella del DHCP del
server etc.)
Impostare Putty e premere ‘open’
Apparira la richesta di un certificato… accettarla .
Alla richesta di login inserire:
pi
Alla richiesta di password inserire :
raspberry
Se dovesse partire il conto alla rovescia per il programma SWPI premere immediatamente la combinazione
di tasti CTRL+C in modo da bloccarla.
Aggiorniamo immediatamente la versione di SWPI tramite il comando:
swpi-update
il programma si aggiornerà automaticamente.
Spostiamo la porta di amministrazione HTML di SWPI editando il il file SWPI.cfg con il comando
Sudo nano swpi.cfg
E modifichiamo la riga
config_web_server_port = 80
impostando per esempio:
config_web_server_port = 8999
in questo caso la porta 8999 verrà utilizzata per amministrare da browser il programma SWPI tramite:
http://indirizzo-ip-raspberry:8999
Assegniamo ora un indirizzo ip statico al PI con i seguenti comandi:
cd /etc/network
sudo nano interfaces
Rimpiazzare la riga :
iface eth0 inet dhcp
Con:
iface eth0 inet static
address 192.168.1.4
netmask 255.255.255.0
gateway 192.168.1.1
Ovviamente bisogna mettere gli indirizzo che si desidera ed un gateway coerente.
Salvare con CTRL+x
Modificare il DNS con questo comando
Sudo nano /etc/resolv.conf
Impostando così:
nameserver
8.8.8.8
Salvare con CTRL+x
Riavviare il raspberry con:
sudo nano reboot
attendere che il sistema venga ricaricato (qualche decina di secondi)
e rientrare lanciando di nuovo putty con il nuovo indirizzo ip.
INSTALLIAMO ORA TUTTO L’AMBIENTE LAMP
APACHE2 +MYSQL+PHP
I seguenti comandi aggiorneranno i packages, installeranno APACHE2, MYSQL ed infine il PHP con supporto
per MYSQL
Eseguire da terminale SSH
sudo apt-get update
sudo apt-get install apache2
sudo apt-get install mysql-server
sudo apt-get install php5
sudo apt-get install php5-mysql
Durante l’installazione di MYSQL verrà richiesto l’inserimento della password,
inserirla e prenderne nota.
Per permettere ad un client esterno di gestire mysql si deve fare in modo che un utente e la classe di
indirizzi o l'indirizzo del client sia abilitato a interagire con il server.
Editate il file /etc/mysql/my.cnf per modificare la chiave bind-address.
Solitamente si troverà una riga
bind-address = 127.0.0.1
questo significa che il servizio e` in ascolto solo per connessioni che avvengono in locale.
Si ha la possibilità di commentare questa riga e permettere a qualsiasi classe di indirizzi di accedere linea
oppure mettere ip dal quale sia possibile accedere. Si commenta la linea mettendo in prima posizione il
carattere #
bind-address = IP_Esterno
dove IP_Esterno e` quello tramite il quale l'host e` raggiungibile da
altri computer. Inoltre deve essere commentata la linea "skip network"
(se presente):
#skip network
E` poi necessario riavviare MySQL:
sudo /etc/init.d/mysql restart
Ora .. bisogna dire a Mysql che un determinato utente, su una determinata classe di indirizzi, e' abilitato ad
accedere.
Vediamo come:
entriamo in mysql
mysql -u root -p
per uscire
Quit
Allora entriamo ..
mysql -u root -p
il sistema chiedera' la password di mysql
ora creiamo un utente che da qualsiasi classe di indirizzi o segmento abbia la facolta' di accedere ad db di
mysql e pieni poteri di azione.
Creiamo l'utente:
mysql> CREATE USER 'nome_utente'@'%' IDENTIFIED BY 'setta_password';
se notate dopo 'nome_utente'@ c'e' '%'
bene in questo modo si dice che l'utente puo' provenire da qualsiasi dominio o classe di indirizzi.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'nome_utente'@'%' WITH GRANT OPTION;
abbiamo impostato la regola che l'utente creato ha "pieni poteri" su tutti i DB.
Vediamo ora i Database creati di default da MYSQL con il comando:
SHOW DATABASES;
Questa
istruzione
dice
al
nostro
DBMS
di
mostrare
Avendo appena installato MySQL dovreste avere solo 2 database:
Creiamo ora il database per SWPI con il comando:
CREATE DATABASE SWPIDB;
Utilizziamo il DB appena creato con:
USE SWPIDB;
Creiamo ora la tabella meteo con le colonne di servizio con:
(FATE UN COPIA ED INCOLLA DI TUTTO)
tutti
i
database
esistenti.
CREATE TABLE IF NOT EXISTS `METEO` (
`TIMESTAMP_LOCAL` datetime NOT NULL,
`TIMESTAMP_IDX` datetime default NULL,
`WINDIR_CODE` text,
`WIND_DIR` smallint(6) default NULL,
`WIND_AVE` double default NULL,
`WIND_GUST` double default NULL,
`TEMP` double default NULL,
`PRESSURE` double default NULL,
`HUM` double default NULL,
`RAIN` double default NULL,
`RAIN_RATE` double default NULL,
`TEMPINT` double default NULL,
`HUMINT` double default NULL,
`WIND_CHILL` double default NULL,
`TEMP_APPARENT` double default NULL,
`DEW_POINT` double default NULL,
`UV_INDEX` double default NULL,
`SOLAR_RAD` double default NULL,
`WIND_DAY_MIN` double default NULL,
`WIND_DAY_MAX` double default NULL,
`WIND_DAY_GUST_MIN` double default NULL,
`WIND_DAY_GUST_MAX` double default NULL,
`TEMP_OUT_DAY_MIN` double default NULL,
`TEMP_OUT_DAY_MAX` double default NULL,
`TEMP_IN_DAY_MIN` double default NULL,
`TEMP_IN_DAY_MAX` double default NULL,
`HUM_OUT_DAY_MIN` double default NULL,
`HUM_OUT_DAY_MAX` double default NULL,
`HUM_IN_DAY_MIN` double default NULL,
`HUM_IN_DAY_MAX` double default NULL,
`PRESSURE_DAY_MIN` double default NULL,
`PRESSURE_DAY_MAX` double default NULL,
`WIND_DIR_AVE` double default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Verifichiamo la corretta creazione con:
SHOW TABLES;
dovrebbe visualizzare una cosa di questo tipo:
+------------------+
-> | Tables_in_SWPIDB |
-> +------------------+
-> | METEO
|
-> +------------------+
-> 1 row in set (0.00 sec)
Digitare EXIT per uscire.
Installiamo ora WEBMIN un programma di utilità che permette di amministrare in remoto tramite browser
MYSQL , APACHE2, PHP, e tutta la distribuzione linux installata nel PI.
Eseguire nell’ordine i seguenti comandi:
sudo groupadd -f -g33 www-data
sudo apt-get update
sudo apt-get install apache2 php5 libapache2-mod-php5
sudo apt-get install mysql-server mysql-client php5-mysql
sudo apt-get install phpmyadmin
sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-ptyperl apt-show-versions python
Durante l’installazione verrà richiesta l’inserimento di nome utente e password per l’amministrazione e
qualche impostazione che potete lasciare di default.
Prendete nota del nome utente e la password che avete inserito e conservatele.
Procedere ancora con :
mkdir webmin
cd webmin
wget http://prdownloads.sourceforge.net/webadmin/webmin-1.580.tar.gz
gunzip webmin-1.580.tar.gz
tar xf webmin-1.580.tar
cd webmin-1.580
sudo ./setup.sh /usr/local/webmin
al termine potrete amministrare in remoto tramite:
http://indirizzo-ip-raspberry:10000
Installiamo ora il servizio FTP SERVER (VSFTPD) per consentire il trasferimento dei file da e verso il
Raspberry Pi.
Assumiamo la proprietà del web root:
sudo chown -R pi /var/www
Poi, installiamo vsftpd:
sudo apt-get install vsftpd
Configuriamo il servizio FTP con la modifica il file vsftpd.conf,
editiamolo con
sudo nano /etc/vsftpd.conf
Modifichiamo
anonymous_enable=YES
con
anonymous_enable=NO,
leviamo
il
commento
local_enable=YES e write_enable=YES, poi vai alla fine del file e aggiungiamo force_dot_files=YES.
Salviamo con CTRL+x eriavviamo VSFTPD
sudo service vsftpd restart
Fare il download del file server.zip che contiene tutti i template html e php da :
da
https://www.dropbox.com/s/y61r5eyvffumzkj/Server.zip?m
scompattarlo e fare l’upload del contenuto con un client ftp verso il raspberry nella cartella:
/var/www
Se non si conosce nessun client ftp scaricare questo:
http://sourceforge.net/projects/filezilla/files/FileZilla_Client/3.7.0.1/FileZilla_3.7.0.1_win32.zip/download
e connettersi configurandolo così:
I campi rossi sono quelli che servono ovviamente dovete usare i vostriparametri impostati
precedentemente.
Premendo il tasto destro sulla cartella www (\var\www) impostare i permessi in questa maniera:
Collegarsi ora alla interfaccia http di SWPI con:
http://indirizzo-ip-raspberry:8999
dove la porta 8999 è quella che abbiamo modificato inizialmente nella configurazione del file swpi.cfg.
apparira questo:
Inserite la password admin e premete ENTER.
Impostiamo i valori che ci interessa modificare (password - sensori – webcam – radio – etc.)
Per la configurazione SWPI vi rimando alla guida di Tony Tarsi pubblicata sul sito ufficiale.
Tenendo presente le esigenze impostiamo questi campi così:
Dove si vede l’indirizzo ip 192.168.1.240 deve essere sostituito con il vostro ip e la password con la vostra
password del raspberry.
Apriamo con un editor di testo il file config.php nella situato nella cartella \var\www con il comando
Sudo nano /var/www/config.php
Modifichiamolo così:
<?php
$server = "Vostro_ip"; indirizzo raspberry
$user = "User_sql"; creato durante l’installazione di MYSQL
$pwd = "pass_mysql"; creata durante l’installazione di MYSQL
$db = "SWPIDB"; creato in SQL
$swpipwd = "vostra_pass_impostata_in_SWPI"; vostra password inserita nella interfaccia html di
SWPI
Salviamo con CTRL+x
Riavviamo tutto con
Sudo reboot
Attendiamo il riavvio e se tutto è impostato bene collegandosi a :
http://ip-raspberry/swpi_dashboard.php
visualizzeremo:
Tutto Funziona.
Scarica

SWPI LAMP - Volo Libero Monte Cucco