Guida di installazione di WkHtmlToPdf su Ubuntu Trusty 64bit (14.04 LTS)

In questi giorni mi sono imbattuto in un problema con il tool WkHtmlToPdf, che veniva utilizzato dal noto ERP Odoo (anche conosciuto come OpenErp) per generare stampe di report e, più in generale, di documenti HTML in formato PDF. Andiamo quindi a vedere come installare correttamente WkHtmlToPdf su Ubuntu Trusty 64bit (14.04 LTS) ed in particolare come installare correttamente le librerie QT (patchate), che consento a WkHtmlToPdf correttamente. La guida che leggerete è stata adattata da questa originale presente su GIST, di cui io ho effettuato un fork che potete trovare qui.

Prima di tutto è fondamentale avere sulla macchina un completo accesso root. Per quanto riguarda Ubuntu quindi, apriamo il terminale (a meno che non siate già collegati sulla vostra macchina server), e digitiamo:

sudo su -

Inseriamo la password dell’utente root e diamo “Invio”. Quindi creamo una cartella di appoggio, e spostiamoci al suo interno:

cd && mkdir wkhtmltopdf-inst && cd wkhtmltopdf-inst

Andiamo quindi ad installare, a meno che non l’abbiamo già fatto, git:

apt-get install git-core

Installazione a cui segue l’installazione delle dipendenze di wkhtmltopdf:

apt-get install openssl build-essential xorg libssl-dev libxrender-dev

Quindi cloniamo il repository di wkhtmltopdf:

git clone git://github.com/antialize/wkhtmltopdf.git wkhtmltopdf

Installiamo quindi le dipendenze di qt per la versione 4.8.4:

apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libxcursor-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxrandr-dev libxrender-dev

Ed anche questa volta, cloniamo il repository ed effettuiamo il checkout della versione 4.8.4 di qt (eseguite i comandi “uno alla volta”):

git clone https://qt.gitorious.org/qt/antializes-qt.git wkhtmltopdf-qt
cd wkhtmltopdf-qt
git checkout 4.8.4
QTDIR=. ./bin/syncqt

Iniziamo ora con la configurazione preliminare alla compilazione delle librerie qt:

./configure -nomake "tools examples demos docs translations" -opensource -prefix ../wkqt

Quindi ora avviamo la compilazione delle librerie qt. Attenzione, questo processo può durare anche qualche ora su hardware non molto performanti, quindi armatevi di pazienza, sigarette, e tutto quello che può aiutarvi nel ammazzare l’attesa:

make -j3 && make install

Ora siamo pronti, finalmente, per compilare wkhtmltopdf con l’ausilio delle librerie qt appena compilate. Questo processo sarà molto più veloce del precedente:

cd ../wkhtmltopdf && ../wkqt/bin/qmake

Terminiamo il processo di compilazione con:

make && make install

L’installazione è terminata qui. Ora dovreste avere la versione di wkhtmltopdf funzionante e compatible con Odoo (OpenERP). Qualora riscontraste problemi, commentate!

Download ricorsivo via FTP da riga di comando

Capita spesso di dover effettuare il download dell’intera alberatura di una directory da un server (o da un hosting web) via ftp. L’operazione può diventare molto articolata, sopratutto se non si ha la possibilità di effettuare alcuna operazione di archiviazione (tar, zip…). La situazione poi peggiora se non si ha a disposizione un client ftp grafico. Ma vediamo come fare.

Il sistema a mio parere più semplice è utilizzare Wget.

Solitamente questo gestore di download è già installato in molte distribuzioni linux, eventualmente potete installarlo rapidamente (senza troppi problemi) tramite il vostro gestore di pacchetti. Per i più pigri però vi basterà digitare nella vostra shell:
su Ubuntu

apt-get install wget

su Fedora\Centos\RHEL

yum install wget

Adesso, magicamente, possiamo effettuare il download, di tutta una directory e della sua alberatura via FTP

wget -r --level=0 ftp://username:password@host/directory/da/scaricare/

Le opzioni -r e --level=x ci permettono, rispettivamente, di abilitare il download ricorsivo e di specificare la “profondità” a cui wget deve “scavare”.
Spiego meglio: se sotto la cartella da scaricare ci sono altri 4 livelli di alberatura (/dir1/dir2/dir3/dir4), possiamo specificare se andare a scaricare tutta l’alberatura (--level=0) o fermarci al secondo livello (--level=2).
Inutile spendere parole sulla parte username, password e “/directory/da/scaricare/“.

Eventualmente possiamo lanciare il comando in background, e in maniera che resti sempre in esecuzione fino alla sua fine, anche se viene terminata la sessione ssh corrente o viene effettuato il logout dall’utenza correte, effettuando anche il log dell’operazione. Il comando quindi si arrichisce del nohup:

nohup wget -r --level=0 ftp://username:password@host/directory/da/scaricare/ > ./file.log 2>&1 &

L’aggiunta di > ./file.log 2>&1 permette di reindirizzare lo standard output, STDOUT, verso un file a nostra scelta, e lo standard error, STDERR, verso lo standard output (che a sua volta è reindirizzato su un file). Ovviamente possiamo reindirizzare lo STDERR verso un file diverso, o verso “il nulla” (2>/dev/null).
La e commerciale alla fine del comando lancia il comando direttamente in background

Uptime Robot: Un monitor per siti web, e non solo

Oggi mi sono imbattuto per lavoro, in questo interessante servizio, totalmente gratuito, che permette di monitorare, ad intervalli prescelti (minimo 5 minuti), siti web.
Non solo. Permette anche il controllo di un server tramite un banale ping, il controllo della presenza di una keyword o meno, ed addirittura il monitoring di una particolare porta per un host.

Gli alert specificati, possono essere inviati tramite email, sms, ed addirittura tramite messaggio privato su twitter (comodo per chi ha uno smartphone, con l’app di twitter e le notifiche push).

L’account è totalmente gratuito, a quanto pare dal 2010 è cosi, e permette di monitorare un massimo di 50 servizi, tutti con statistiche separate, comodamente accessibili dalla propria dashboard.
Una volta iscritti, attenti che il controllo della mail è bloccante (nel senso che non vi consiglio di usare email fasulle), vi sarà subito permesso di aggiungere un monitor (vedi immagine sottostante). Da quel momento il monitor è attivo, per sempre, nell’intervallo prescelto.
aggiunta monitor su uptime robot

Nel monitoring HTTP, vi saranno fornite anche statistiche riguardo il tempo di risposta, il numero di downtime, e il tempo di uptime del sito. Il tutto è fruibile tramite un’interfaccia molto sobria, e molto intuitiva.

dashboard di uptime robot
statistiche per monitor http di uptime robot

Il servizio fornito è molto interessante, considerato l’utilizzo in ambito lavorativo che se ne può fare, e considerando anche il prezzo (zero euro).
Provatelo e fatemi sapere, l’indirizzo è uptimerobot.com

TCPDUMP: un coltellino svizzero per sistemisti

Circa cinque anni fa mi sono trovato nelle condizioni, per motivi molto diversi dal lavoro, di dover scovare alcune informazioni (l’ip di provenienza nello specifico) di un flusso di pacchetti anomali che arrivavano su un server che gestivo. La soluzione a tutto è un tool relativamente semplice da usare, ma estremamente potente se usato con intelligenza.
tcpdump non farà altro che rendervi più semplice l’analisi dei pacchetti che, per esempio, vi arrivano su una determinata interfaccia, facciamo conto eth0, indirizzati ad una porta specifica, facciamo 22, e non siano provenienti magari da voi stessi:

tcpdump -i eth0 port 22 and not src 10.10.0.1

il comando precedente cattura i pacchetti in arriva sull’interfaccia eth0, inirizzati alla porta 22 (solitamente quella di default per il protocollo ssh), e non provenienti dall’ip 10.10.0.1 (come potrebbe essere in una VPN).
Seguendo questa logica, e con un po’ di approfondimenti tramite la sua completissima informazione, tcpdump ci consente di creare log perfettamente ritagliati sulle nostre necessità.

Inutile dire che le applicazioni di questo tool sono molteplici, ma non è mia intenzione illustrarvi quali.