Sistema LAMP

Siccome stasera mi è capitato di farlo vi posto una breve guida per costruire/configurare/testare il funzionamento di un sistema LAMP.
Preciso che la guida non è mia ma ho solo messo qualche aggiunta. in realtà è un copia incolla di guide trovate in rete da html.it e documentazione di ubuntu.
Identifichiamo i pacchetti necessari:
* apache2-mpm-prefork è il webserver,
* libapache2-mod-php5 è il modulo PHP5 per Apache 2,
* mysql-server è il server MySQL che installerà anche le librerie necessarie e il client MySQL,
* php5-mysql è l'interfaccia MySQL di PHP,
* php5-gd è un'estensione di PHP5 che consente di manipolare le immagini con le librerie GD.
I file di configurazione di Apache si trovano in /etc/apache2. Il file di configurazione di PHP è /etc/php5/apache2/php.ini. L'accesso a MySQL avviene tramite l'utente root, con password vuota. La DocumentRoot per default è la directory /var/www.
--------------------------------------------------------------------------------------------------------------------------
Apache dovrebbe già essere in esecuzione, per sicurezza riavviarlo:
sudo /etc/init.d/apache2 restart
Controllare che nella pagina di verifica (http://127.0.0.1/apache2-default oppure http://127.0.0.1/) venga visualizzata la scritta «It Works!», la quale appunto indica che apache funziona correttamente.
--------------------------------------------------------------------------------------------------------------------------
Per verificare il corretto funzionamento di PHP creare un file di prova nella nella propria DocumentRoot, che di Default è /var/www.
Con l'editor di testo preferito e con i privilegi di amministrazione creare il file /var/www/info.php e inserirci all'interno la seguente riga:
<?php phpinfo(); ?>
Salvare il file e recarsi all'indirizzo http://localhost/info.php.
--------------------------------------------------------------------------------------------------------------------------
MySQL viene installato con un utente fittizio root e un campo password vuoto. Potrebbe essere utile cambiare la password a MySQL, in tal caso digitare da terminale
sudo mysql
E successivamente digitare:
mysqladmin -u root -p
Con la propria passwordpersonale.
Nel caso vogliate entrare con un utente di altro nome digitate (all'interno di mysql come root) la stringa
CREATE USER nomeutente@localhost IDENTIFIED BY 'password'
dopo di ciò (usciti da mysql come root) potete entrare con il nuovo utente digitando
mysql -u diego -p
senza il "-p" se non avete messo la parte "IDENTIFIED BY 'password'", in tal caso l'utente non avrà password di accesso.
--------------------------------------------------------------------------------------------------------------------------
PHP funziona, MySQL funziona, ma i due strumenti riescono a collaborare? Per esserne certi, dobbiamo assicurarci che l'estensione PHP per MySQL (il pacchetto php-mysql o php5-mysql) sia correttamente caricata. Normalmente non ci sono problemi, il tutto viene gestito in automatico quando installiamo i pacchetti, ma la verifica da effettuare è relativamente semplice e ci può togliere un eventuale dubbio.
Creiamo uno script PHP che esegue semplicemente la connessione a MySQL e la selezione del database di test (un database inizialmente vuoto, accessibile a qualsiasi utente, utilizzabile appunto per i test, che andrebbe comunque eliminato se il server MySQL viene messo in produzione).
<?php
// Connessione a MySQL
$link = mysql_connect('localhost', 'root', '') or die('Connessione fallita: ' . mysql_error());
// Selezione database di test
mysql_select_db('test') or die('Selezione DB fallita: ' . mysql_error());
// E' tutto ok, chiudo la connessione
echo 'OK';
mysql_close($link);
?>
Il file va salvato con estensione .php all'interno della DocumentRoot di Apache, ad esempio con nome "testdb.php", e va richiamato da browser digitando l'indirizzo http://localhost/testdb.php. Se tutto va per il verso giusto, otterremo un rassicurante "OK" sul nostro monitor. In caso contrario, uno dei possibili errori potrebbe essere:
---------------------------------------------------------------------------------------------------------------------------
CONTRIBUTI AGGIUNTIVI (grazie a dannyb78)
configurare un mail server con exim
configurare un server ftp con vsftpd
FUNZIONE setlocale() su ubuntu 7.10 e accesso al vostro webserver mediante IP dinamico
ULTERIORI REFERIMENTI
Manuale ufficiale Mysql
Manuale ufficiale di PHP
Preciso che la guida non è mia ma ho solo messo qualche aggiunta. in realtà è un copia incolla di guide trovate in rete da html.it e documentazione di ubuntu.
Identifichiamo i pacchetti necessari:
* apache2-mpm-prefork è il webserver,
* libapache2-mod-php5 è il modulo PHP5 per Apache 2,
* mysql-server è il server MySQL che installerà anche le librerie necessarie e il client MySQL,
* php5-mysql è l'interfaccia MySQL di PHP,
* php5-gd è un'estensione di PHP5 che consente di manipolare le immagini con le librerie GD.
I file di configurazione di Apache si trovano in /etc/apache2. Il file di configurazione di PHP è /etc/php5/apache2/php.ini. L'accesso a MySQL avviene tramite l'utente root, con password vuota. La DocumentRoot per default è la directory /var/www.
--------------------------------------------------------------------------------------------------------------------------
Apache dovrebbe già essere in esecuzione, per sicurezza riavviarlo:
sudo /etc/init.d/apache2 restart
Controllare che nella pagina di verifica (http://127.0.0.1/apache2-default oppure http://127.0.0.1/) venga visualizzata la scritta «It Works!», la quale appunto indica che apache funziona correttamente.
--------------------------------------------------------------------------------------------------------------------------
Per verificare il corretto funzionamento di PHP creare un file di prova nella nella propria DocumentRoot, che di Default è /var/www.
Con l'editor di testo preferito e con i privilegi di amministrazione creare il file /var/www/info.php e inserirci all'interno la seguente riga:
<?php phpinfo(); ?>
Salvare il file e recarsi all'indirizzo http://localhost/info.php.
--------------------------------------------------------------------------------------------------------------------------
MySQL viene installato con un utente fittizio root e un campo password vuoto. Potrebbe essere utile cambiare la password a MySQL, in tal caso digitare da terminale
sudo mysql
E successivamente digitare:
mysqladmin -u root -p
Con la propria passwordpersonale.
Nel caso vogliate entrare con un utente di altro nome digitate (all'interno di mysql come root) la stringa
CREATE USER nomeutente@localhost IDENTIFIED BY 'password'
dopo di ciò (usciti da mysql come root) potete entrare con il nuovo utente digitando
mysql -u diego -p
senza il "-p" se non avete messo la parte "IDENTIFIED BY 'password'", in tal caso l'utente non avrà password di accesso.
--------------------------------------------------------------------------------------------------------------------------
PHP funziona, MySQL funziona, ma i due strumenti riescono a collaborare? Per esserne certi, dobbiamo assicurarci che l'estensione PHP per MySQL (il pacchetto php-mysql o php5-mysql) sia correttamente caricata. Normalmente non ci sono problemi, il tutto viene gestito in automatico quando installiamo i pacchetti, ma la verifica da effettuare è relativamente semplice e ci può togliere un eventuale dubbio.
Creiamo uno script PHP che esegue semplicemente la connessione a MySQL e la selezione del database di test (un database inizialmente vuoto, accessibile a qualsiasi utente, utilizzabile appunto per i test, che andrebbe comunque eliminato se il server MySQL viene messo in produzione).
<?php
// Connessione a MySQL
$link = mysql_connect('localhost', 'root', '') or die('Connessione fallita: ' . mysql_error());
// Selezione database di test
mysql_select_db('test') or die('Selezione DB fallita: ' . mysql_error());
// E' tutto ok, chiudo la connessione
echo 'OK';
mysql_close($link);
?>
Il file va salvato con estensione .php all'interno della DocumentRoot di Apache, ad esempio con nome "testdb.php", e va richiamato da browser digitando l'indirizzo http://localhost/testdb.php. Se tutto va per il verso giusto, otterremo un rassicurante "OK" sul nostro monitor. In caso contrario, uno dei possibili errori potrebbe essere:
---------------------------------------------------------------------------------------------------------------------------
CONTRIBUTI AGGIUNTIVI (grazie a dannyb78)
configurare un mail server con exim
configurare un server ftp con vsftpd
FUNZIONE setlocale() su ubuntu 7.10 e accesso al vostro webserver mediante IP dinamico
- Codice: Seleziona tutto
Inoltre riporto una particolarità riscontrata nei sistemi ubuntu per chi usa la funzione setlocale(), per localizzare funzioni tipo strftime().
1) poichè il vostro server non riconosce la stringa "it,IT" ma "it,IT.utf8" per far girare le pagine sul vostro server di prova ma renderle compatibili anche con il server che le andrà ad ospitare una volta pubblicate conviene usare questa stringa
setlocale(LC_TIME, "it_IT", "it", "it_IT.utf8");
2) opzionale: installare il proprio linguaggio:
if your server is an ubuntu (debian like)
you need to install the locales you want (default is english and your language) go to aptitude and install -language-pack-*-base it will resolve dependencies and will try to install a suggested package, remove it if you don't care and proceed.
infine un suggerimento per chi, come me, ha un webserver in casa per fare le prove ed ha necessità di lavorare da fuori o di collaborare con altre persone:
registratevi un dominio dinamico su http://www.dyndns.org, il servizio è gratuito. Scaricate anche il tool gratuito DynDNS updater e installatelo sul webserver. Questo vi consentirà di conoscere sempre l'ip (dinamico) del vostro pc di casa e di potervi accedere con facilità.
ULTERIORI REFERIMENTI
Manuale ufficiale Mysql
Manuale ufficiale di PHP