Print this page
Domenica, 23 Agosto 2015 14:27

Traslocare Gnujiko

Rate this item
(0 votes)

Qualche tempo fa avevo descritto come fare uno script per avviare mysql e apache solo per il tempo che serve ad utilizzare un sito in locale, ed avevo accennato a Gnujiko un sistema di gestione delle fatture molto efficiente, facile e gratis (a parte una donazione obbligatoria e una-tantum di 10 euro per avere accesso agli aggiornamenti). In pratica si tratta di un programma basato sul web, e la sua installazione non è molto diversa da quella di un CMS come Joomla.

Avevo detto che avrei scritto come fare l'installazione, ma in effetti è perfettamente inutile, dato che esiste apposita guida sul sito del programma, e che  sostituendo la parola "site" con un'altra, ad esempio "fatture", è possibile usare la guida che già avevo fatto a suo tempo.

Oggi ho dovuto formattare il pc su cui Gnujiko era installato, per cui mi sono avventurato nel "trasloco" del programma, con tutte le impostazioni, informazioni ecc. Di fatto è la stessa serie di operazioni che si fanno (già fatte) per il trasloco di un sito Joomla da remoto a locale, perciò è stato tutto abbastanza semplice. Avevo già accennato come fare, appoggiandosi ad una guida esterna.

Ora farò io stesso una guida apposita per salvare e ripristinare questo Gnujiko sullo stesso o su un altro sistema, basato su Linux (ma per Windows vale più o meno lo stesso). Pronti?

Piccolo indice
- Salvataggio della configurazione esistente
- Ripristino
- Configurazione apache
- Configurazione mysql
- Script di lancio

Salvataggio della configurazione esistente

Supponiamo che il programma sia stato installato nella cartella /var/www/fatture, così come il sito Joomla della precedente guida era in /var/www/site. Darò per scontato anche che quella guida sia stata vista, quindi si è già installata la macchina LAMP e si saprà come installarla di nuovo.

Il primo passo da fare è salvare quanto abbiamo fatto finora: avremo inserito clienti, fornitori, caricato fatture.... quindi va copiato il contenuto della cartella /var/www/fatture da qualche parte.

Poi occorre esportare il database. Si entra in localhost/phpmyadmin, si seleziona il database relativo a Gnujiko e si fa clic su "Esporta" nella barra degli strumenti. Selezioniamo il metodo personalizzato, quindi nella scheda "output" scegliamo di applicare una compressione gzip per il file. Chiaramente vanno selezionate tutte le tabelle del database. Nelle "opzioni di creazione dell'oggetto" spuntiamo "Aggiungi l'istruzione di create database" e "Aggiungi l'istruzione di drop table" più sotto ed esportiamo. Verrà chiesto di salvare un file, che verrà messo (di solito) nella cartella "Scaricati" della home utente. Anche questo file va copiato altrove. Si può anche pensare di copiare la cartella con tutta l'installazione di mysql per utilizzarla magari per intero, ad esempio in una partizione separata per avere sempre a disposizione il database, magari anche per essere usato da windows. In questo caso il comando è:

cp -Rprv /var/lib/mysql somewhere

A questo punto se abbiamo un file di configurazione sito già fatto sotto /etc/sites-available/ copiamo anche questo file, altrimenti si può creare da zero come vedremo più avanti.

Ripristino

Bene dopo aver installato la nuova LAMP nel nuovo sistema, vediamo come rimettere tutto a posto.

Nel mio specifico ho voluto creare una partizione apposta per il programma, così poi da averlo salvo per il futuro, una piccola partizione da 5 Gb in ext4 (ma poteva essere anche ntfs) dove andare a mettere la cartella coi file del sito e magari anche i database. 

Nella partizione, che ho chiamato sempre "fatture" e montato sotto /mnt/fatture, creo una cartella dal nome inequivocabile.... ;).

Va quindi creato il mountpoint

 ~ $ sudo mkdir /mnt/fatture 

ed indicato nel file fstab come montare la partizione

LABEL=fatture /mnt/fatture ext4 nosuid,nodev,nofail,noauto,rw 0 0

e quindi la montiamo

sudo mount /mnt/fatture

Quindi copiamo il contenuto messo da parte della cartella /var/www/fatture in /mnt/fatture/fatture, e diamo i permessi e la proprietà al gruppo www-data:

~ $ sudo chown -R -v www-data /mnt/fatture/fatture

facciamo una cosa simile anche per il database

 ~ $ sudo cp -Rprv somewhere /mnt/fatture/
chown -R mysql:mysql /mnt/fatture/mysql

Da browser andiamo su localhost/phpmyadmin e dopo aver acceduto come root creiamo uno user con tutti i privilegi, avente nome e password tali e quali a quello della precedente installazione (visibile nel file config.php nella cartella di installazione del programma). Eseguendo nuovamente il login con questo user andiamo ad importare il database. Se stiamo usando la stessa versione di mysql (cosa probabile se prima dell'esportazione si sono fatti gli aggiornamenti) non ci saranno sorprese.

Configurazione Apache

Ora manca da dire ad apache che il nostro sito sta lì dove lo abbiamo messo.

Creiamo il file /etc/apache2/sites-available/fatture.conf

~ $ sudo pico /etc/apache2/sites-available/fatture.conf <br /><br/>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName fatture.local
DocumentRoot /mnt/fatture/fatture
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

ed aggiungiamolo ai siti autorizzati con

~ $ sudo a2ensite fatture

quindi andiamo a dare il nome host al file /etc/hosts mettendo come prima riga

127.0.0.1       localhost fatture.local

Fatto? non proprio. Occorre ancora una piccola modifica per dire ad Apache che i siti possono stare anche altrove.

In particolare basta modificare il file /etc/apache2/apache2.conf aggiungendo alla fine della sezione delle Directory

<Directory /mnt/fatture/fatture>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

e riavviare il server:

~ $ sudo service apache2 restart

Configurazione mysql

Quindi sistemiamo mysql:

~ $ sudo apt-get install apparmor
sudo service mysql stop

occorre poi modificare un paio di file. Il primo è /etc/mysql/mysql.conf.d/mysqld.cnf, modificando UNA sola riga: datadir= /var/lib/mysql in

datadir=/mnt/fatture/mysql

Il secondo è /etc/apparmor.d/usr.sbin.mysqld: le righe

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

diventano

/mnt/fatture/mysql/ r,
/mnt/fatture/mysql/** rwk,

ed applichiamo questo profilo apparmor con

sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld

In questo modo il database sarà sempre aggiornato nella partizione esterna ed ad una successiva reinstallazione basterà solo rimodificare i file qui sopra e tutto andrà liscio. Devo inoltre provare a vedere se anche da windows, installando una macchina apache+mysequel+php si può accedere alla stessa partizione e portare avanti l'uso di gnujiko da entrambi i sistemi.

Script di lancio programma

Benissimo. Ora non resta che utilizzare lo script che avevo messo a punto in precedenza, con una piccola modifica. Lo script in questione fa in modo che i servizi necessari a gnujiko siano attivi solo quando il programma è attivo. questo evita di consumare risorse inutili, se il solo processo ad usarle nel pc è lui.

Anzitutto togliamo l'avvio automatico dei servizi apache e mysql:

Per Apache da terminale

~ $ sudo update-rc.d -f apache2 remove

Per Mysql occorre modificare un file andando a commentare anteponendo un cancelletto # davanti alle righe relative a "start on":

 ~ $ gksudo gedit /etc/init/mysql.conf

#start on (net-device-up
#and local-filesystems
#and runlevel [2345])

Salvare e chiudere.

Quindi usare lo sript già visto, aggiungendo prima dell'avvio dei servizi l'opzione per il mount della partizione e dopo lo stop dei servizi l'unmont

sudo mount /mnt/fatture

Lo script finale (fatture.sh)si presenta così:

#!/bin/sh
#montaggio partizione ed avvio servizi
sudo mount /mnt/fatture
sudo service apache2 start
sudo service mysql start
#lancia browser come utente
sudo --user=user firefox fatture.local &
#trova il pid per nome
sleep 30
pid=$(ps -ae | awk '$NF~"firefox" {print $1}')
echo pid $pid
#Redirect stdout and stderr of the ps command to /dev/null
ps -p$pid 2>&1 > /dev/null
#Grab the status of the ps command
status=$?
#A value of 0 means that it was found running
if [ "$status" = "0" ]
then
  while [ "$status" = "0" ]
  do
  sleep 30
  ps -p$pid 2>&1 > /dev/null
  status=$?
  done
#A value of non-0 means that it was NOT found running
else
echo Process with pid $pid is not running
fi
#stop servizi e unmount partizione
sudo service apache2 stop
sudo /etc/init.d/mysql stop
sudo service mysql stop
sudo umount /mnt/fatture

A questo punto basta creare un lanciatore da desktop cliccando su un'area libera col tasto destro--> " crea nuovo lanciatore qui"  dargli un nome e mettere come comando

gksudo -k -u root 'sh fatture.sh'

si può anche cambiare l'icona.

Ecco fatto, ora Gnujiko è stato restituito all'uso senza colpo ferire. Per quanto riguarda lo spostamento del database di mysql sulla partzione esterna...stay tuned ;)

 

Read 3855 times Last modified on Lunedì, 20 Marzo 2017 10:12