venerdì 13 aprile 2012

Il mio server internet personale parte 8 : Backup


"Salvami dalla rottura di un disco, sono il tuo lavoro e non voglio smarrirmi su una penna usb o nel disordine del tuo hd esterno."
Potrei mettere una copia del mio lavoro sul server google docs o sul server ubuntu one, ma dopo un po mi scordo sicuro.Forse potrei  istruire il mio server internet personale per farlo con una cadenza costante :), forse è più affidabile ... vediamo come.

all'inizio volevo montare una nuvola come un file system, ma non è stato possibile con google docs o ubuntu one, dopo di che ho cambiato la filosofia :)

Al momento urge fare una copia di sicurezza del lavoro, soprattutto dei sorgenti dei programmi scritti e conservati nel server svn.
Ho risolto usando ubuntu 1, vediamo come :
innanzi tutto ho acceduto in modalità grafica alla macchina, per farlo ho usato tightvncserver
dalla classica shell del server ho dato
apt-get install tightvncserver
quindi l'ho lanciato
tightvncserver
e mi ha chiesto di immettere la password.
a questo punto ho usato il comando
netstat
per controllare con certezza quale è la porta tcp su cui sta ascoltando e mi sono collegato dal mio pc su cui la tastiera funziona con un client tightvnc :).
ho installato ubuntu one e l'ho configurato con il mio account.
Ubuntu one ha creato una cartella Ubuntu One nella mia home e la terrà sincronizzata.
dentro questa cartella ho creato una cartella svn, e sono tornato alla shell.
da root come sempre ho creato un file cron.sh con il seguente contenuto e l'ho chiamato cron.sh:

#!/bin/bash
NOW=$(date +"%Y-%m-%d")
FILE="backup.$NOW.tar.bz2"
tar -cjvf /home/utente/Ubuntu\ One/svn/$FILE /var/svn/repository
chown utente:utente /home/utente/Ubuntu\ One/svn/$FILE

la prima riga dice che è uno script
la seconda crea una variabile che contiene la data odierna espressa come anno-mese-giorno
la terza specifica che il nome del file deve contenere la data
la quarta fa partire una compressione della cartella che contiene i repository svn dei miei progetti
e siccome è una operazione che fa root, risistema i permessi del file appena creato, così è pronto per il sync.

ultimo passaggio, dobbiamo ancora dire quando fare in automatico questo backup. per questo usiamo crontab e digitiamo
crontab -e
io scelgo di usare nano per editare il file e metto questa riga :)

 0 2 * * * /root/cron.sh

che fa partite lo script sopra tutti i giorni alle 2 di notte.
sostituendo l'ultimo asterisco con una cifra da 0 a 6 era possibile farlo settimanalmente.

e spiegato così sembra che ci vogliono 5 minuti per farlo :(

Nota bene nessuno dei metodi sotto avevano portato a risultati positivi !!

Questi sono stati i tentativi che sono andati male, li lascio per chi volesse leggere :)

Innanzi tutto se non ce l'ho già mi iscrivo ad ubuntu one e mi creo un account
ovviamente è gratuito se vi bastano 5 gb https://one.ubuntu.com/
abbiamo quindi il nostro account  e la nostra password, passiamo all'installazione del software necesario.
Su linux è possibile montare in una cartella una cartella webdav. Non sono parolacce, montare significa che possiamo dire che nella cartella /mnt/ubuntuone verrà collegato il contenuto della cartella che abbiamo sul server di ubuntu, così da poterci leggere e scrivere come se fosse in locale, il server di ubuntu usa una tecnologia chiamata webdav :). passiamo ai comandi.

da una ricerca approfondita esce fuori che ubuntu one non usa webdav come qualcuno suggeriva, quindi, se vogliamo montare il file system per accedervi dobbiamo cambiare piattaforma, proviamo google docs :
 A  questo punto il discorso sembra essere in discesa, perchè troviamo una semplice guida che proviamo a seguire... innanzi tutto andiamo qui: http://code.google.com/p/gdocsfs/
prendiamo il percorso per scaricare i file necessari che al momento in cui scrivo è http://gdocsfs.googlecode.com/files/gdocsfs-0.0.1.zip
e cominciamo a lavorare :)
a me piace lamerare e lavorare come root :)
sudo su
diamo password
cd /root
wget http://gdocsfs.googlecode.com/files/gdocsfs-0.0.1.zip
potrebbe salvarlo con un nome strano, nel caso rinominiamo lasciando solo  gdocsfs-0.0.1.zip
mv cosastranagdocsfs-0.0.1.zip gdocsfs-0.0.1.zip

unzip gdocsfs-x.y.z.zip
cd gdocsfs
ora dobbiamo scegliere dove installarlo... un buon linuxiano farebbe un ambiente
per il backup, un utente appostito o un gruppo con privilegi specifici ben
congegnato in maniera tale da preservare la sicurezza, ma noi siamo alle prime armi
e non vogliamo lanciare i missili, abbiamo bisogno di un modo semplice per fare il
backup quindi continuiamo a lamerare con il nostro utente root. sudo ./install /root/
nano -w /root/gdocsfs/conf/gdocsfs.proprerties
aggiungiamo utente e password
e non funziona neppure questo, evidentemente il progetto deve essere vecchio
perchè non si collega e cerca una connessione ssl.
abbiamo già perso 2 giornate, ma non ci fermiamo, e soprattutto non le perderete voi a fare le ricerche.

proviamo adesso con https://launchpad.net/google-docs-fs
procediamo quindi con aggiungere il repository mantenuto da questo italiano di nome Invernizzi :)
nano -w /etc/apt/sources.list
aggiungiamo 2 righe
deb http://ppa.launchpad.net/invernizzi/google-docs-fs/ubuntu VERSIONE_TUA_DI_UBUNTU main deb-src http://ppa.launchpad.net/invernizzi/google-docs-fs/ubuntu VERSIONE_TUA_DI_UBUNTU main
ricordate di cambiare VERSIONE_TUA_DI_UBUNTU con il nome della vostra
atp-get update
apt-get install google-docs-fs
ed abbiamo finito
lanciamo
gmount /mnt/gdocs nomeutente@gmail.com
mi chiede la password e non funziona :(


lunedì 9 aprile 2012

Il mio server internet personale parte 7 : Streaming video ed audio

Il software libero offre tantissime possibilità di sviluppare servizi. Stavo pensando che mi piacerebbe avere a disposizione la mia collezione di musica e video a portata di mano, un po come avere uno youtube personale da qualunque postazione internet e sui miei apparati android.
Dopo un po di ricerche ho trovato il progetto Subsonic e sembra svolgere abbastanza bene le cose che stavo cercando.
Subsonic permette di avere un proprio server web di contenuti con tanto di lettori multimediali alla "youtube", skin d personalizzazione ed autorizzazione per l'accesso, permette di caricare file audio e video  e preparare playlist, creare dei podcast, insomma, fa un bel po di cose simpatiche.
Unico inconveniente è che richiede una donazione dopo un po per continuare ad usare alcune funzioni, ma sono sicuro che troveremo il modo di contribuire al progetto anche senza donare per forza.
passiamo alla fase di installazione :
ovviamente partiamo da una connessione ssh al nostro server personale, una volta acceduto facciamo
sudo bash
andiamo nella nostra cartella di lavoro
cd /root
e scarichiamo il pacchetto necessario :
wget http://downloads.sourceforge.net/project/subsonic/subsonic/4.1/subsonic-4.1.deb
potete trovare l'ultima versione qui :
http://www.subsonic.org/pages/download.jsp
Installiamo prima i pacchetti necessari
apt-get install openjdk-6-jre lame flac faad vorbis-tools ffmpeg ed installiamo quindi subsonic
dpkg -i subsonic-*.deb

A questo punto il server partirà in automatico e si metterà in ascolto sulla porta 4040 per default
il file di configurazione è in /etc/default/subsonic

se volete potete cambiare il numero della porta, anche se a mio avviso va bene così
avendo a disposizione un altra porta a cui accedere, andiamo a settare il router adsl per abilitare il port forwarding anche sulla porta 4040 tcp.

.
ora accedete con il browser all'indirizzo  http://tuoserverinternet:4040


All'interno di subsonic 
1) impostiamo la password di admin
2) creiamo un utente
3) specifichiamo le directory da usare per i file multimediali
ed il gioco è fatto :)

una volta acceduto con l'utente creato andate nel menù "more" e caricate un file video o audio così lo avrete a disposizione.
Una cosa simpatica è che il lettore flash vi fa scegliere a che qualità volete riprodurre un video, in tal modo potete vedere in streaming video occupando diversi tipi di banda.
Per i file multimediali è presente un link per il download.

Nel mio caso ho un pc in rete con una partizione windows xp ed ho il backup dei miei film in un disco esterno usb da 2 tera con una cartella film condivisa per poterla vedere dalla nintendo wii per la riproduzione sulla tv.
Con subsonic posso utilizzare come sorgente questo disco esterno senza scollegarlo da quel pc, è sufficente :
installare un pacchetto per la gestione del file system di rete microzoz
apt-get install smbfs
creare una cartella per l'uopo
mkdir /mnt/filmsmb
quindi montare la cartella di rete :
mount -t cifs //pc-fisso/film -o username=administrator,password=myPassword /mnt/filmsmb
quindi andare nei settaggi di subsonic ed aggiungere il percorso /mnt/filmsmb.

possiamo fare lo stesso per i nostri mp3 :)

Android ed Ios :
Sono presenti dei client per Android ed IPhone che si chiamano subsonic e si collegano a questo tipo di server. Ovviamente io ho provato la versione android.

venerdì 6 aprile 2012

Eclipse e Subversion come funziona ?



Eclipse è uno splendido strumento di programmazione, ma un programmatore è un pò come lo scrittore di un libro, ha i suoi raptus di programmazione e vuole scrivere codice dal letto, dalla scrivania o addirittura consultarlo sul tablet mentre è concentrato comodamente sul bagno.
Insomma il lampo di genio non va mai sprecato, quindi se abbiamo il nostro server internet con tanto di subversion, possiamo prendere le nostre installazioni di eclipse ( non lavoriamo sempre e solo da 1 pc ) e:
dal menù "Help" scelgo la voce : Install new software
aggiungo
http://download.eclipse.org/technology/subversive/1.0/update-site/ 
 seleziono tutto e procedo, mi viene chiesto di riavviare eclipse, una volta riavviato mi viene proposto un elenco di moduli svn, scelgo l'svn kit che mi sta più simpatico (la versione + recente) e procedo.

Vecchio modo:
http://subclipse.tigris.org/update_1.4.x 
 ( se volete sapere quale è l'ultima versione disponibile andate qui http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA
, che è la pagina download del sito )
spunto javahl adapter , subeclipse e subeclipse client adapter
vado avanti.... al termine mi viene chiesto di riavviare eclipse ed io accetto di buon grado.
Una volta installato il plugin eclipse facciamo dal menù
new project
scegliamo dall'elenco
select a wizard svn checkout projects from svn 
bottone NEXT 
check su create a new repository location 
diamo il nostro url che per gli esempi precedenti sarà http://tecnocchio.dnsd.info/svn/esempio
selezioniamo la cartella e premiamo sul bottone FINISH 
partirà un processo che copia tutti i file del progetto sulla vostra macchina per permettervi di lavorarci sopra :).

Per agire su un file del progetto anche senza sapere i comandi SVN basta fare su un file del progetto nel package explorer :
bottone destro TEAM->e scegliere un operazione ad esempio.E' possibile mostrare lo storico delle modifiche o aggionare le proprie modifiche o....
Ovviamente Eclipse è disponibile per linux !
Scaricabile presso http://eclipse.org/ buon coding ;)!

Il mio server internet personale parte 6: subversion

"Subversion exists to be universally recognized and adopted as an open-source, centralized version control system characterized by its reliability as a safe haven for valuable data; the simplicity of its model and usage; and its ability to support the needs of a wide variety of users and projects, from individuals to large-scale enterprise operations."

Che  tradotto in parole povere Subversion è un software che permette la gestione delle varie fasi della programmazione tenendo il codice prodotto al sicuro da errori di versioni o modifiche contemporanee.
Facendo un esempio se io ed un amico lavoriamo allo stesso progetto software potremmo modificare per errore lo stesso documento/codice, cosicchè uno dei due potrebbe perdere il lavoro svolto, oppure potremmo accorgerci di dover tornare in dietro di qualche giorno per rimediare ad un errore...
Bene subversion permette questo e molto altro, potete leggere altro qui : http://subversion.apache.org/

Subversion è programma che serve oggetti ed accetta oggetti vediamo come installarlo e configurarlo:

intanto ci appoggiamo al nostro caro apache che altrimenti si annoia a servire solo pagine web, permettendoci in futuro di accedere al nostro progetto anche con un semplice browser.

sudo bash
apt-get install subversion libapache2-svn

Il modulo dovrebbe essere già caricato ma possiamo controllarlo con:

a2enmod dav_svn

passiamo alla configurazione: primo passo, istruiamo il modulo di apache in merito alla cartella che utilizzeremo

nano -w /etc/apache2/mods-available/dav_svn.conf




andiamo a togliere il commento dalle seguenti linee

<Location /svn>
  DAV svn
  SVNParentPath /var/svn/repository
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
    Require valid-user
</Location>

creiamo un utentenel mio caso "utente" ed assegnamo una password :

htpasswd -c /etc/apache2/dav_svn.passwd utente

New password:
Re-type new password:
Adding password for user utente


ora creiamo la cartella principale dove conservare i progetti e ne modifichiamo i permessi

mkdir /var/svn
mkdir /var/svn/repository
chown www-data:www-data -R /var/svn/repository
chmod 770 -R /var/svn/repository

cambiamo utente in maniera da creare direttamente il progetto con i diritti giusti
su www-data

svnadmin create /var/svn/repository/esempio

importiamo quindi il nostro progetto iniziale, nel mio caso c'e' solo un file nella cartella

svn import /home/asta/progetto1 file:///var/svn/repository/esempio/esempiov1 -m"initial import"


Aggiungo       /home/utenteme/progetto1/main.c

Commit della Revisione 1 eseguito.

exit

torniamo root e riavviamo apache2

/etc/init.d/apache2 restart


testiamo il nostro server svn

lynx http://192.168.1.47/svn/esempio/

A cosa sarà servito tutto ciò ?

scopriamolo nel prossimo articolo, eclipse incontra svn: