Category Archives: Linux
Installare Lighttpd con supporto SSL e PHP5 su Ubuntu 10.04 Lucid Lynx
Questo articolo è un aggiornamento al mio vecchio articolo Installare Lighttpd con MySQL e PHP5 su Debian Lenny.
In questo how-to tratteremo dell’installazione su Ubuntu 10.04 e dell’attivazione del supporto SSL con redirect automatico da HTTP a HTTPS.
Installazione di Lighttpd e PHP5
Per installare il server e abilitare il supporto a PHP5 bastano solo 3 comandi:
sudo apt-get install lighttpd php5-cgi sudo lighty-enable-mod fastcgi sudo lighty-enable-mod fastcgi-php sudo /etc/init.d/lighttpd restart
Apriamo la porta 80 su iptables (perché lo state usando, vero?!?):
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
Abilitare HTTPS
Creiamo il certificato, con scadenza 365 giorni, nella cartella /etc/lighttpd
cd /etc/lighttpd sudo openssl req -new -x509 -keyout server.pem -out lighttpd.pem -days 365 -nodes
Rispondiamo a tutte le domande e poi cambiamo i permessi del certificato.
sudo chmod 400 server.pem
Adesso modifichiamo il file di configurazione /etc/lighttpd/lighttpd.conf
sudo vim /etc/lighttpd/lighttpd.conf
Aggiungendo queste due righe:
ssl.engine = "enable" ssl.pemfile = "/etc/lighttpd/server.pem"
Riavviamo Lighttpd:
sudo /etc/init.d/lighttpd restart
Ed infine istruiamo iptables a lasciar passare il traffico sulla relativa porta:
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Attivare il redirect automatico da HTTP a HTTPS
Per redirezionare automaticamente tutto il traffico da HTTP (porta 80) a HTTPS (porta 443) è sufficiente aggiungere queste righe al file di configurazione di Lighttpd
$SERVER["socket"] == ":80" {
$HTTP["host"] =~ "(.*)" {
url.redirect = ( "^/(.*)" => "https://%1/$1" )
}
}
e decommentare il modulo mod_redirect, eliminando il simbolo cancelletto, dalla lista server.modules.
Riavviamo Lighttpd:
sudo /etc/init.d/lighttpd restart
Montare una partizione in automatico all’avvio usando fstab
Il sistema operativo GNU/Linux gestisce le informazioni sulle partizioni da montare automaticamente all’avvio o usando il comando:
sudo mount -a
nel file di configurazione /etc/fstab
fstab è un semplice file di testo, suddiviso in colonne, in cui ci sono su ogni rigo le informazioni relative ad una partizione o un disco:
#nome device punto mount filesystem opzioni dump-freq pass-num /dev/hda6 swap swap defaults 0 0
Le colonne hanno i seguenti significati:
- nome device è il nome della partizione o del disco da montare (Ubuntu le identifica anche con l’UUID)
- punto di mount è il punto del filesystem in cui la partizione deve essere montata
- filesystem è il tipo di filesystem con cui è formattata la partizione (per windows FAT32 o NTFS)
- opzioni rappresenta un insieme di opzioni tra cui quella che inidica al sistema di montare la partizione automaticamente all’avvio
- dump-freq attiva il backup usando il comando
dump(obsoleta) - pass-freq attiva e modifica l’ordine di controllo delle partizioni usando
fsck. La partizione root deve avere valore 1, perché deve essere controllata per prima, le altre valore 2 oppure valore 0 per disattivare il controllo.
L’opzione per il mount automatico è auto, ma si può usare anche l’opzione defaults che comprende altre opzioni (tra cui partizione in sola lettura) oltre auto.
Modificare fstab da terminale
- Identifichiamo l’UUID della partizione contenente Windows (negli esempi userò /dev/sda1):
blkid /dev/sda1
che restituisce
/dev/sda1: UUID="041E62501E623AB6" TYPE="ntfs"
- Creiamo la cartella in cui verrà montata la partizione:
sudo mkdir /media/windows
- Apriamo fstab con gedit:
sudo gedit /etc/fstab
- Inseriamo questa riga alla fine del file:
UUID=041E62501E623AB6 /media/windows ntfs defaults 0 0
Salviamo il file e al prossimo riavvio avremo la partizione montata automaticamente, per montarla immediatamente basta digitare in un terminale:
sudo mount -a
Modificare fstab in maniera grafica
- Installiamo Pysdm dal gestore pacchetti o digitando in un terminale:
sudo apt-get install pysdm
- Apriamo Pysdm con permessi di amministratore usando:
sudo pysdm
- Clicchiamo sulla freccia accanto a SDA per vedere le partizioni e selezioniamo quella che vogliamo mettere in fstab (nel nostro caso SDA1).
- A questo punto ci chiederà se vogliamo configurare la partizione e premiamo OK e la partizione sarà configurata automaticamente.
- Clicchiamo su Assistant per modificare le opzioni (sola lettura, UTF-8 ecc) e poi su Applica
Sistemare il bug di Guake ‘TERM environment variable not set’
La nuova versione di Ubuntu presenta un fastidioso bug in Guake che non ne permette il corretto funzionamento, sopratutto con alcuni comandi.
In attesa del bug fixing è possibile ovviare impostando manualmente la variabile TERM a XTERM.
Apriamo il file di configurazione della bash:
vim .bashrc
Aggiungiamo alla fine del file le seguenti righe:
TERM=xterm export TERM
Ricarichiamo le impostazioni personalizzate della bash
Riavviamo Guake finalmente funzionante
Usare l’openmoko come antenna gps esterna (condividere gpsd sulla rete usb)
Può tornare utile utilizzare l’openmoko come antenna gps esterna o, in maniera più complessa, far leggere i dati gps forniti dal demone di gestione del gps dell’openmoko, fso-gpsd, a tutti i computer connessi alla stessa rete dell’openmoko.
Gpsd può rimanere in ascolto per fornire i dati via rete e siccome l’openmoko si collega alla rete tramite un pc, possiamo usarlo come antenna esterna. In questo modo è possibile, ad esempio, utilizzare tangoGPS sul proprio pc usano l’openmoko come un (costoso!) ricevitore gps semplicemente impostando nel campo “Server gpsd” l’ip dell’openmoko (grazie a Matthias Apitz per il felice suggerimento) .
In SHR fso-gpsd è configurato in modo da rimanere in ascolto solo su localhost, impedendo di fatto ad altri client di rete di accedere alle informazioni. Per modificare questo comportamento è sufficiente modificare una riga nel file /etc/init.d/fso-gpsd, cambiando:
-S localhost:gpsd
in
-S 0.0.0.0:gpsd
In questo modo tutti i computer della rete, e l’openmoko stesso, potranno accedere a gpsd anche *contemporaneamente* (cosa che non si può fare via bluetooth ad esempio) semplicemente sfruttando l’indirizzo di rete dell’openmoko e la porta su cui è in ascolto gpsd: solitamente 192.168.0.202:2947.
Pycp: usare cp con una progress bar
Per quanti usano ancora il comando del terminale cp per copiare i file risuslterà comodo installare pycp, un wrapper di cp scritto in python che implementa una progress bar tetstuale per ogni singolo file trasferito.
E’ molto comondo nel caso di trasferimento di grosse cartelle, in cui il cursore rimane immobile (sembra quasi bloccato) fino a trasferimento completato. Con pycp è possibile vedere, oltre alla progress bar, anche la velocità di trasferimento e l’ETA (estimated time of arrival) di ogni singolo file!
Per installarlo è necessario scaricare ed installare prima il modulo python-progressbar:
$: wget http://pypi.python.org/packages/source/p/progressbar/progressbar-2.2.tar.gz
$: tar xvf progressbar-2.2.tar.gz
$: cd tar xvf progressbar-2.2.tar.gz
$: sudo python setup.py install
A questo punto scarichiamo ed installiamo pycp:
$: wget http://yannick-lm.dyndns.org/soft/pycp/pycp-3.2.tar.gz
$: tar xvf pycp-3.2.tar.gz
$: cd tar xvf pycp-3.2.tar.gz
$: sudo python setup.py install
Per evitare di ricordarsi di digitare pycp al posto di cp è possibile creare un alias per la nostra shell, editando il file ~/.bashrc:
$: vim .bashrc
Inserendo la riga:
alias cp=’pycp’
Carichiamo le modifiche:
$: source .bashrc
In questo modo al comando cp verrà automaticamente sostituito pycp.
[How-to] Installare Lighttpd con MySQL e PHP5 su Debian Lenny

Lighttpd (pronuncia lighty) è un web-server , rilasciato sotto licenza BSD modificata, progettato per un uso ottimizzato delle risorse. Scritto da Jan Kneschke nel 2003, per distrarsi dal suo lavoro di tesi, è un potente web server che fa della scalabilità, dell’uso parsimonioso di risorse e dell’aderenza agli standard i suo cavalli di battaglia. E’ consigliato per macchine obsolete o per server con carichi di lavoro massicci, tra gli utilizzatori più famosi figurano Wikipedia ed OpenStreetMap.
Per installare Lighttpd con supporto MySQL e PHP5 su una macchina con Debian 5.0 Lenny, è sufficiente installare i seguenti pacchetti:
#: sudo apt-get install mysql-server mysql-client lighttpd php5-cgi php5-mysql
Durante l’installazione il sistema chiederà di inserire due volte la password di root, per cui non sarà necessario configurarla successivamente.
Puntando il browser su localhost, si ottiene la pagina di benvenuto di lighttpd in cui è descritta anche la configurazione del server:
Ricapitolando:
- la document root è /var/www (come per apache)
- il file di configurazione è /etc/lighttpd/lighttpd.conf
- il programma cercherà i moduli cgi in /usr/lib/cgi-bin e il loro utilizzo deve essere abilitato con l’appropiata direttiva
- i file di log sono salvati in /var/log/lighttpd e la loro rotazione può essere cambiata modificando il file /etc/logrotate.d/lighttpd
Abilitare il fastcgi per i file php
Per abilitare il fastcgi per i file php, per installare ad esempio un forum o un blog in php, è necessario editare due file.
In /etc/php5/cgi/php.ini, decommentare la riga
; cgi.fix_pathinfo = 0
Eliminando il punto e virgola e modificando la variabile zero in uno
cgi.fix_pathinfo = 1
In questo modo il percorso che indica il PHP-CGI viene impostata in maniera fissa piuttosto che essere ricavata da SCRIPT_FILENAME.
Nel file /etc/lighttpd/lighttpd.conf aggiungere la riga:
"mod_fastcgi",
dopo la riga
"mod_accesslog",
e in fondo al file aggiungere il percorso del PHP-CGI (per le personalizzazioni e altri moduli si faccia riferimento alla documentazione ufficiale)
fastcgi.server = ( ".php" => ("localhost" => ( "bin-path" => "/usr/bin/php5-cgi",
"socket" => "/tmp/php.socket")))
Riavviare Lighttpd
#: /etc/init.d/lighttpd restart
Spostarsi nella DocumentRoot di Lighttpd e creare il file info.php in questo modo:
#: cd /var/www#: vi info.php
Premere il tasto i e aggiungere nel file la seguente riga:
<?php phpinfo(); ?>
Salvare e chiudere premendo Esc :wq.
Puntare il browser su localhost/info.php per controllare che tutto funzioni.
Sono tornato!
Pythonizzare gedit
In attesa di imparare (e pythonizzare) per bene Vim, scrivo i miei script in Python con Gedit, l’editor di testi standard di Gnome, che se adattatto alla scrittura di codice Python attraverso alcuni utili plugin (i plugin di Gedit sono scritti in Python!) può diventare davvero un ottimo IDE.
Plugin standard
Per installare il pacchetto dei plugin standard è sufficiente installare il pacchetto gedit-plugins da synaptic oppure da terminale digitando:
$: sudo apt-get install gedit-plugins
Tra i molteplici plugin standard installati, i più interessanti sono:
- Commento codice
- Console Python
- Terminale incorporato
- Traccia gli spazi
Per abilitarli basta avviare Gedit e dal menù selezionare Modifica–>Preferenze–>Plugin e poi spuntare la casella del plugin relativo.
Plugin aggiuntivi
Esistono alcuni plugin aggiuntivi molto utili, i più interessanti sono:
- Auto completition per l’autocompletamento del codice
- Class Browser per navigare tra le classi
Per installare il primo è necessario prelevare il plugin da questo indirizzo e poi copiare i file nella cartella ~/.gnome2/gedit/plugins, volendo usare il terminale
$: wget http://elias.hiex.at/gedit-plugins/auto_completion.gedit-plugin$: wget http://elias.hiex.at/gedit-plugins/auto_completion.py
$: mv auto_completion.* ~/.gnome2/gedit/plugins
Per installare il plugin Class Browser invece, disponibile a questo indirizzo, è necessario installare prima il pacchetto exuberant-ctags e solo successivamente scaricare il pacchetto contenente i file e copiarlo nella cartella ~/.gnome2/gedit/plugins
$: sudo apt-get install exuberant-ctags$: wget http://www.stambouliote.de/download/gedit_classbrowser-0.2.1.tar.gz
$:
tar zxvfgedit_classbrowser-0.2.1.tar.gz$: cd gedit_classbrowser-0.2.1
$: mv * ~/.gnome2/gedit/plugins
Per abilitare i due plugin è sufficiente avviare Gedit e dal menù selezionare Modifica–>Preferenze–>Plugin e poi spuntare le due relative caselle.
Per visualizzare i plugin è necessario avere la barra inferiore e la barra laterale attiva, digitando rispettivamente CTRL+F9 e F9, ed ecco come si presenta il mio Gedit:
Montare partizioni remote con pyNeighborhood
Gli utenti Gnome che, come me, sono passati a Xfce sentiranno la mancanza di un tool grafico che permetta il mount delle partizioni remote di Windows.
Si potrebbe confezionare un bash script che, utilizzando il comando mount.smbfs, monti le partizioni remote ogni volta che ne abbiamo bisogno,però se si cambia spesso rete oppure la rete è molto complessa (come quella mostrata dall’immagine presa dal sito del programma) lo script andrebbe riadattato oppure andrebbe modificato in modo da scegliere quali partizioni remote montare (usando smbclient -L).
Mentre aspettiamo che le funzionalità di mount remote vengano implementate in Thunar, possiamo utilizzare un programmino scritto in Python: pyNeighborhood.
Il programma è presente nei repository di Xubuntu per cui per installarlo basta digitare da un terminale:
$: sudo apt-get install pyneighborhood mc
Per qualche oscuro motivo è necessario installare, anche se non è tra le dipendeze necessarie, il file-manager midnight commander (pacchetto mc) per far fuzionare correttamente pyNeigborhood.
L’installazione crea anche l’icona nella categoria rete, però avviando il programma dal menù non è possibile montare nessuna partizione sia perché pyNeigborhood non ha i privilegi necessari ad eseguire il mount sia perché è necessario creare prima la cartella di mount.
Per ovviare è necessario:
- modificare la voce di menù, con un terminale e i privilegi da amministratore apriamo il file /usr/share/applications/pyNeighborhood.desktop
$: sudo mousepad /usr/share/applications/pyNeighborhood.desktop
- modifichiamo la stringa Exec=pyNeighborhood in Exec=gksu pyNeighborhood, in questo modo il programma verrà avviato con i permessi necessari al suo funzionamento
creare la cartella in cui effettuare il mount (di default /mnt/Network):
$: sudo mkdir /mnt/Network
Come usare pyNeighborhood
Al primo avvio del programma è necessario scansionare i gruppi di lavoro, per farlo basta fare clic con il pulsante destro sull’icona Groups e selezionare la voce Scan using msbrowse, alla fine della scansione cliccare sul gruppo desiderato e avviare una nuova scansione per rilevare i dispositivi appartenenti al gruppo.
Cliccare su uno dei dispositivi della lista e avviare la scansione per rilevare le partizioni condivise, fare clic con il destro sulla partizione da montare e selezionare mount.
That’s all!




