mercoledì 13 gennaio 2010

Sito dinamico su virtual host locale [03-03] - Fedora How-to


Attivazione del database
E' necessario a questo punto inizializzare un database, associarlo con il sito e creare l'amministratore di questo.

Nel caso di MySQL, è possibile consultare ottimi tutorial qui e qui,

Le istruzioni di seguito si basano su comandi da console, utili a capire le basi della gestione di MySQL da linea di comando; se invece volete usare un'interfaccia grafica, si possono usare, come detto nel post 01 di 03, mysql-administrator oppure phpMyAdmin, con le quali è possibile effettuare tutte le operazioni di seguito descritte (e molte di più!).
Torniamo alla gestione da linea di comando

Per far partire il servizio, in console root:
# service mysqld start

Per fermarlo:
# service mysqld stop

Per riavviarlo mentre è in esecuzione:
# service mysqld restart

Per far partire il servizio all'avvio (boot) del computer, così da evitare di doverlo attivare tutte le volte che lo si vuole usare (comando opzionale):
# chkconfig mysqld on

Per testare il funzionamento di MySQL, così da verificare se effettivamente è stato attivato e quali sono i processi cui è associato:
# pgrep mysqld

All'atto dell'installazione, MySQL crea automaticamente un amministratore di nome root ed un utente di nome mysql, entrambi senza password.
Anche se non è indispensabile ai fini della nostra installazione, è opportuno eliminare la possibilità di accedere al database in modo anonimo e insicuro.
Per far questo è necessario eliminare gli utenti presenti, amministratore escluso, attribuire una password all'amministratore, creare il database che ci interessa (MySQL può gestire più database), creare il nostro utente associandolo ad una password, e consentire all'utente l'accesso allo specifico database. Vediamo come.

Per prima cosa entriamo nel server MySQL come amministratore:
# mysql -u root

Il prompt si trasformerà in:
mysql>

Per eliminare gli utenti presenti (da fare solo alla prima inizializzazione del server MySQL, dove l'unico utente è quello creato di default dal sistema; se il server è già stato utilizzato e sono già stati creati altri utenti, questa operazione può danneggiare l'accesso a MySQL, quindi va fatta con criterio):
mysql> DELETE FROM mysql.user WHERE User = '';

Il punto e virgola al termine della frase è importante, perchè fa parte della sintassi di MySQL ed indica la fine del comando; '' rappresenta contenuto vuoto tra apici.

Aggiorniamo ora i privilegi, in modo da consentire a MySQL di riconoscere la modifica che abbiamo apportato:
mysql> FLUSH PRIVILEGES;

A questo punto impostiamo la password dell'amministratore; nell'esempio di seguito, la password è he43klc9 ed è contenuta tra apici; sostituitela con quella da voi scelta:
mysql> UPDATE mysql.user SET Password = 'he43klc9' WHERE User = 'root';

Quindi creiamo il database, che chiameremo joomladb, ed aggiorniamo il server.
mysql> CREATE DATABASE joomladb;
mysql> FLUSH PRIVILEGES;

Per vedere i database che sono stati creati
mysql> SHOW DATABASES;

Per rimuovere il database creato:
mysql> DROP DATABASE joomladb;
mysql> FLUSH PRIVILEGES;

Creiamo quindi il nostro utente (nell'esempio è pippo) e la sua password (nell'esempio è asdasd) ed associamolo al database creato (nell'esempio è joomladb) sul server localhost, aggiornando quindi MySQL:
mysql> GRANT ALL PRIVILEGES ON joomladb.* TO pippo@localhost IDENTIFIED BY ‘asdasd’ WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

Nel caso in cui venga creato più di un database e si voglia associare l'utente a tutti i database creati, il comando diventa:
mysql> GRANT ALL PRIVILEGES ON *.* TO pippo@localhost IDENTIFIED BY ‘asdasd’ WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

Per vedere gli utenti che possono loggarsi:
mysql> SELECT Host, User FROM mysql.user;

Per eliminare un utente
mysql> DELETE FROM mysql.user WHERE Host='localhost' AND User='pippo';
mysql> FLUSH PRIVILEGES

dove pippo è l'utente e localhost è il suo host corrispondente nella tabella.

Per uscire la MySQL digitare:
mysql> EXIT;

Per rientrare in MySQL digitare:
# mysql -u xxxxx -p

dove xxxxx è il vostro utente od amministratore.
L'opzione -p serve a far si che il server chieda la password di accesso che avrete impostato prima; qualora non l'aveste impostata, togliete l'opzione ( -p) prima di dare il comando.


Nel caso di postgreSQL, in console root, l'inizializzazione del database, come descritto qui e qui, sarà:
# service postgresql initdb

Avvio del database
# service postgresql start

In questo momento, l'unico utente riconosciuto (e loggabile) nel database è postgres. Per poter creare databases e ulteriori utenti loggabili è indispensabile loggarsi ed iniziare una sessione come utente postgres.
# su -l postgres

Una volta loggati, creiamo un altro super utente (notare il cambiamento del riferimento della bash)
-bash-4.0$ createuser --no-superuser --no-createdb --no-createrole --pwprompt nomeutente

Ci verrà richiesta l'impostazione della password e la sua ridigitazione per conferma.
A questo punto creiamo un database con lo stesso nome dell'utente appena creato. La sintassi sarà:
-bash-4.0$ createdb -W -E utf8 -O nomeutente nomeutente

Verrà chiesta per conferma la password appena impostata.
A questo punto editiamo il file di configurazione della security di postgreSQL
-bash-4.0$ nano /var/lib/pgsql/data/pg_hba.conf

scorriamo con la barra laterale fino al fondo del file ed editiamo le righe sostituendo rispettivamente alla linea local e dell'host IPv4 i valori di identificazione in:
local all all trust
host all all 127.0.0.1/32 md5

ottenendo un risultato di questo genere:


Al posto di trust può essere messo md5, per una maggiore sicurezza. Digitiamo quindi ^O per salvare il file, ^X per uscire da nano e tornare alla shell (^ corrisponde al tasto control).
Ovviamente, al posto di nano può essere usato il più complesso vi (per uscire da vi si usa il comando :wq)

Riavviamo il database digitando
-bash-4.0$ service postgresql reload

Nel caso in cui la bash dia degli errori (ad es. perchè l'utente non ha sufficienti privilegi per effettuare le operazioni richieste), apriamo una nuova scheda di bash, entriamo in console root con su + password e diamo lo stesso comando di reload

Altri settaggi potete trovarli nel link riportato.
Qui potete trovare un altro ottimo tutorial.

A questo punto chiudiamo la console e lanciamo la GUI pgAdmin III (in Menu Fedora --> Programmazione). Comparirà la schermata di accesso al database: su questa inseriamo i dati che abbiamo impostato: nome utente, nome database e password, inseriamo come host 127.0.0.1 ed il nostro db sarà pronto.


Usare il Sito Joomla!
Apriamo il browser e lanciamo http://127.0.0.1 e verifichiamo subito che il sito si attivi, e che tutte le impostazioni siano attive e funzionanti, compresa la compilazione automatica del file configuration.php.
Se l'impostazione automatica non venisse accettata (cioè fosse marcata in rosso), non proseguite, chiudete il browser, aprite la shell e, in console root, cambiate i permessi alla cartella dove si trova il sito con un comando ricorsivo del tipo

# chmod 777 -R /media/HD350GB/Serverspace

così tagliate la testa al toro. (NB ricordate di mettere il percorso corretto della vostra cartella)
NB questa operazione NON E' CORRETTA sotto il profilo della sicurezza, e e può servire solo se il vostro server locale non viene pubblicato, altrimenti sono guai.
L'operazione corretta consiste nel sostituire il proprietario della cartella (in questo momento voi) con apache.
Con

$ cat /etc/group

verifichiamo l'esistenza dell'utente 'apache'. Con

sudo chown -R apache:apache /media/HD350GB/Serverspace

assegniamo all'utente ed al gruppo apache in maniera ricorsiva tutte le cartelle contenute in Serverspace.
Se vogliamo smanettare direttamente in queste cartelle (con cognizione di causa) allora l'operazione più corretta è aggiungere il nostro utente al gruppo apache con

# gedit /etc/group

aggiungendo l'utente, separato con una virgola dagli altri membri al gruppo prescelto.
Se avete timore di sbagliare a digitare, questa operazione può essere fatta anche attraverso il menu amministrazione --> utenti e gruppi

A questo punto riavviate Apache

Quindi fate ripartire il browser e, se non sbagliate l'inserimento dei dati, tutto dovrebbe funzionare correttamente.
Inoltre, se avete applicato la procedura di entrambi i database, avrete la possibilità di scegliere tra MySQL e postgreSQL, entrambi funzionanti, come RDBMS di appoggio.
Se scegliete MySQL, utilizzate l'opzione mysql e non l'opzione mysqli, soprattutto per questioni di praticità, e verificate che nelle impostazioni avanzate sia settato il parametro jos_ .
A questo punto dovreste aver superato tutti gli ostacoli, inserite la vostra personalizzazione iniziale (nome del vostro sito, mail di riferimento, password dell'amministratore) e create il vostro sito Joomla!.

Buon sito a tutti ! :-)

P.S. Grazie a Mirella per l'aiuto e la pazienza nella revisione di questo tutorial.

( <-- torna al 02 di 03)

Nessun commento:

Posta un commento