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 ;)