COMPUTER

Stampa
Creato Lunedì, 20 Settembre 2010 Ultima modifica il Venerdì, 18 Ottobre 2013

Installazione Apache+MySQL+PHP+PhpMyAdmin su Freebsd e PC-BSD

 

Questa miniguida si rivolge ad un'installazione in locale, ad esempio per poter effettuare delle prove di gestione di siti WEB dinamici. Non ha quindi la pretesa di considerare gli aspetti della sicurezza tipici di un'installazione di un server WEB. Comunque, a parte l'aspetto della sicurezza da affrontare con le configurazioni, i passi fondamentali per l'installazione sono sempre questi.

Poichè non è possibile usare il comodo pacchetto XAMPP (esistente per Win, Mac e Linux e molto comodo per i nostri usi) bisognerà installare i 3 componenti separatamente. Naturalmente qualcuno si è lamentato di questo fatto e che nessuno si sia preoccupato di inserirlo nei ports. La risposta è che non ce n'è bisogno perche è facile installare le componenti separatamente. E' una tipica risposta mondo *BSD. A dire la verità per PC-BSD è disponibile un pacchetto denominato AMP – Inmate. Tuttavia non è un normale pacchetto .pbi ma in altro formato, da installare all'interno delle Jail gestite da Warden. Insomma, una cosa da affrontare solo per chi ha una certa esperienza.

Anche installare i singoli componenti non è semplicissimo, soprattutto per le configurazioni e le guide in giro sulla rete propongono di tutto e di più. Questa l'ho trovata sintetica ma efficace. Qui propongo una mia personale via per installare il tutto. Toglietevi dalla testa di installarli con il pkg_add. Rischiate di creare pasticci.  Bisogna compilare. Quindi andare nella directory /usr/ports. Stesso problema con PC-BSD che pur presenta all'atto dell'installazione la scelta d'installare Apache e MySQL (non PHP), mentre ha il solo Apache come pacchetto .pbi

La strada consigliata è da terminale come root:

 

- installare Apache2x dando cd /usr/ports/www/apache22 e poi il solito make config install clean;

- installare PHP dando cd /usr/ports/lang/php5 e poi il solito make config install clean. Attenzione a spuntare l'opzione modulo Apache perchè è fondamentale;

- installare Php5-extensions (o l'ultima versione che si trova nei ports) dando cd /usr/ports/lang/php5-extensions e poi il solito make config install clean.

  Modificare, alla fine dell'installazione, il file di configurazione di Apache httpd.conf (directory /usr/local/etc/apache22) come previsto nella guida segnalata prima. E' un punto delicato, comunque le cose importanti presenti devono essere:

a) nella sezione LoadModule la presenza di una riga “LoadModule php5_module libexec/apache22/libphp5.so” (significa che il modulo per gli script PHP è presente);

b) subito dopo questa sezione l'aggiunta di due righe con:

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

c) nella sezione DirectoryIndex, l'aggiunta di “index.php”

 

Per lanciare il server Apache è meglio dare il comando /usr/local/etc/rc.d/apache22 onestart (stop e onerestart sono le altre 2 opzioni utili) e non quello segnalato sulla  guida ufficiale.  Per convincersene, guardare questo Forum. Se, durante l'avvio, pur partendo il server vi dice qualcosa sull'impossibilità di trattare il nome di dominio, dovete aggiungere nel file httpd.conf una riga con ServerName localhost (sezione ServerName).

Fate inoltre una copia del file php.ini-production (o analogo) nella directory /usr/local/etc/ così: cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Ora, per vedere se tutto funziona, aprite il browser e scrivete nella barra indirizzi localhost. Se vi appare una scritta "it works", significa che il server Apache funziona. Per vedere se funziona anche lo scripting di PHP, aprite un file di testo e inserite:

<?php

echo "OK";

?>

salvate con il nome prova.php e inseritelo nella directory /usr/local/www/apache22/data. Ricordate: questa è la directory dove dovrete piazzare le vostre pagine PHP. Ora, riscrivendo sul browser localhost/prova (oppure localhost/prova.php), dovreste vedere solo la scritta OK. Se è così, allora è fatta e passiamo a installare MySQL. Attenzione, se usate PC-BSD forse potete saltare questo passo. Per controllare se una versione MySQL è installata date il comando pkg_info e scorrete in ordine alfabetico. Se trovate mySQL server e client allora è già installato, sennò dovete andare su /usr/ports/database/mysql55-server (potrebbe esserci una versione successiva alla 55 allora installate quella). Da lì il solito make install clean. Mysql-server installerà anche il client.

Su MySQL dovreste lavorare sulla sicurezza. Qui non mi dilungo, supponendo che state in ambiente locale e su computer sicuri e non avete database di particolare importanza da proteggere! I comandi da usare in tal caso sono: /usr/local/etc/rc.d/mysql-server start(avvia MySQL)

/usr/local/bin/mysql_install_db (installa il database per i permessi, ecc.)

 

Ora non resta che testare se possiamo connetterci attraverso uno script PHP al database sito in MySQL. Per farlo potete scrivere un altro file di testo da mettere nella directory /data di apache, come quello di prima. Solo che il testo sarà:

 

<?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 e chiudo la connessione

echo 'OK. Risultato prova di collegamento al database testing di MySQL con scripting PHP: entrambi risultano funzionanti!';

mysql_close($link);

?>

Salvate e chiamatelo connect.php e inseritelo nella directory /data. Ora nel browser scrivete l'indirizzo localhost/connect (oppure localhost/connect.php). Se tutto funziona, magicamente vedrete la scritta che dà l'OK della connessione. Se è così significa che da ora in poi potrete accedere ad un database MySQL con pagine PHP; ovviamente si suppone che sappiate cosa farne di tutto questo.

ATTENZIONE!: Può darsi che lo script di prova per la connessione fallisca con un messaggio più o meno simile:

Fatal error: Call to undefined function: mysql_connect() in /usr/local/www/data/connect.php on line 3

Ciò significa che bisogna verificare se in /usr/local/etc/php/extension.ini(che è un semplice file di testo) ci sia una riga uguale a: extension=mysql.so

 

Se non c'è bisogna installare il modulo da /usr/ports/databases/php5-mysql sempre con il comando make install clean. Alla fine dovreste avere la riga aggiunta nel file citato in automatico. Fate ripartire Apache e riprovate.

Per far partire Apache e MySQL in automatico all'avvio del computer aggiungere al file /etc/rc.conf due righe:

apache22_enable="YES"

mysql_enable="YES"

Attenzione:se notate strani messaggi (tipo: “Invalid argument: Failed to enable the 'httpready' Accept Filter...”) lanciando il server Apache o dando il comando /usr/local/sbin/httpd(con il server ovviamente non in funzione), è probabile che dobbiate inserire anche una riga apache22_http_accept_enable="YES"al file /etc/rc.conf e inserire questa direttiva nel file /usr/local/etc/apache22/httpd.conf

 

<IfDefine !NOHTTPACCEPT>

 AcceptFilter http httpready

 AcceptFilter https dataready

 </IfDefine>

  

Nel caso seguiate la strada (non sbagliata) di rendere più sicura la connessione cambiando la password e l'utente d'accesso di MySQL (ricordarsi che l'utente root non è l'utente root del sistema ma vale solo per MySQL), nello script precedente dovrete inserire il nome dell'utente scelto al posto di "root" e inserire l'eventuale password al posto dei due apici "" ma sempre dentro due virgolette. Se poi il computer dove si trova il database è diverso da "localhost", dovrete inserire l'IP del computer sempre tra tra virgolette.

Per correttezza segnalo una guida molto completa soprattutto per chi volesse cimentarsi nell'installazione con Apache server versione 2 e successive

A questo punto possiamo installare il PhpMyAdmin che ci permette di gestire i databases MySQL (crearli, vederli, modificarli, ecc.). L'installazione di PhpMyAdmin, che si gestisce attraverso un browser richiamandolo in genere all'indirizzo “localhost/phpmyadmin”, non è difficile in sé ma può comportare malfunzionamenti dovuti alle configurazioni non proprio agevoli da fare. Per installarlo, andare nella directory /usr/ports/databases/phpmyadmin e dare il solito comando make config install clean. Poi seguire questo WIKI che dà un'idea delle cose da configurare. Fate attenzione: la guida segnalata in precedenza su caffetine.org va seguita solo in parte, perchè un pò datata. In particolare, usate la procedura della creazione di una sub-directory config (con permessi assegnati 777) e poi accedete dal browser alla configurazione con <nomehost>/phpmyadmin/setup (esempio: localhost/phpmyadmin/setup). Cliccate per aggiungere un server e poi per la configurazione si presuppone che abbiate un minimo di conoscenza della gestione dei database MySql. Alla fine salvate, scegliete il server aggiunto che dovrebbe comparire nella lista e la lingua da usare e salvate di nuovo. Se tutto è a posto, sarete avvertiti che un file config.inc.php è stato creato nella directory config. Copiatelo nella directory principale di PhpMyAdmin, restringete i permessi a 444 del file e cancellate la directory config.

Comunque se qualcosa non funziona, non vi scoraggiate e cercate soluzioni sul Web (oppure scrivetemi che se sono in grado rispondo). Ricordarsi comunque che potrebbe essere necessario nel file config.inc.php avere le due righe:

 

$cfg['UploadDir'] = '/tmp';

$cfg['SaveDir'] = '/tmp';

 

Dove la directory /tmp è aperta alla lettura e scrittura per gli utenti.

 

Inoltre nel file “httpd.confdi Apache avere le righe nella sezione <Directory>:

<Directory "/usr/local/www/phpMyAdmin"> (ovviamente la directory può cambiare)

Order allow,deny

Allowfont-family: Verdana,sans-serif; from all

</Directory>

 

e questa nella sezione <IfModule mod_alias.c>:

Alias /phpmyadmin "/usr/local/www/phpMyAdmin"

 

Per aiutare riporto un file config.inc.php d'esempio:

<?php

/* Servers configuration */
$i = 0;

/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['recent'] = 'pma_recent';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['MaxTableUiprefs'] = 200;
$cfg['Servers'][$i]['controluser'] = 'pma';

/* End of servers configuration */

$cfg['blowfish_secret'] = '4f9586ee0efa53.72722816';
$cfg['DefaultLang'] = 'it';
$cfg['ServerDefault'] = 1;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
?>

Nell'esempio, notare l'Allow no password settato a true se volete in locale lasciare sprotetto l'accesso a PhpMyAdmin.

Attenzione: è molto probabile che dopo l'installazione PhpMyAdmin fornisca dei warning relativi a delle funzioni disabilitate. Infatti, per rendere completa l'installazione, è opportuno creare un user "pma" e un database "phpmyadmin" su MySql. L'utente deve essere creato prima a livello di sistema (con il comando adduser) e poi aggiunto nella tabella user del database mysql. Controllate comunque se esista già un utente _pma (con l'underscore) installato di default durante la compilazione da FreeBSD. In tal caso modificherete solo il nome dell'utente in _pma nella tabella user e nel file config.inc.phpIl database va invece creato importando il file create_tables.sql presente nella directory /usr/local/www/phpMyAdmin/examples/. Solo così le righe presenti nell'esempio a partire da quella con $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin' e fino alla fine della configurazione del server avranno effetto. Ricordatevi di riavviare il server MySql dopo queste operazioni.

Un'alternativa più semplice ma molto meno completa è installare il comodo tool KmySqlAdminche gira sotto KDE. Con PC-BSD potete usare il solito pacchetto .pbi. Con FreeBSD lo installate nel solito modo nella directory /usr/ports/databases/kmysqladmin.

Se è tutto a posto (cioè vi funziona MySQL e Apache) non c'è nulla da configurare. Si chiede la connessione, si inseriscono nome user e password e ci si connette. Il resto attiene alla gestione dei database con MySQL.

 

 


 

 

 

Installazione Apache+MySQL+PHP su Freebsd e PC-BSD

 

Questa miniguida si rivolge ad un'installazione locale, tipica per poter effettuare delle prove di gestione di siti WEB dinamici. Non ha quindi la pretesa di considerare gli aspetti della sicurezza tipici di un'installazione di un server WEB. Naturlamente è rivolta a utenti non tanto esperti e

Poichè non è possibile usare il comodo pacchetto, almeno per i nostri usi, XAMPP (esistente per Win, Mac e Linux) bisognerà installare i 3 componenti separatamente. Naturalmente qualcuno si è lamentato del fatto che sui ports non risulta il porting di questo pacchetto. La risposta è che non ce n'è bisogno perche è facile installare le componenti separatamente. Tipica risposta mondo FreeBSD. In realtà non è affatto facile, ad un livello medio, installare i componenti e le guide in giro sulla rete propongono di tutto e di più. Toglietevi dalla testa di installarli con il pkg_add. Rischiate di creare pasticci. Bisogna compilare. Quindi andare nella directory /usr/ports.

Personalmente la strada che seguo è da terminale come root:

- installare Php52-extensions (o l'ultima che si trova nei ports) dando cd /usr/ports/lang/php52-extensions e poi il solito make install clean. Attenzione a commentare l'opzione modulo Apache perchè è fondamentale. Il problema è che vi installerà Apache versione 1.3 e non la 2.x Non so che farci, tanto per testare in locale dovrebbe andare bene lo stesso. Fare altrimenti (installare apache 2.x) rischia di complicare parecchio le cose e non è detto che inserendo le righe di commento al file httpd.conf che si crea per caricare i moduli php come sta scritto nelle guide funzioni, anzi. Così invece si automatizza un pò. Infatti verrà installato direttamente anche il server Apache. Per lanciarlo, basta dare il comando /usr/local/sbin/apachectl start

(come detto nella guida ufficiale, stop e restart sono le altre 2 opzioni utili)

Ora, per vedere se tutto funziona, aprite il browser e scrivete nella barra indirizzi localhost. Se vi appare una scritta "it works", significa che il server Apache funziona. Per vedere se funziona anche lo scripting di PHP, aprite un file di testo e inserite:

<?

echo "OK";

?>

salvate con il nome prova.php e inseritelo nella directory /usr/local/www/data. Ricordate: questa è la directory (in apache versione 1.3) dove dovete piazzare le vostre pagine PHP. Ora, riscrivendo sul browser localhost/prova, dovreste vedere solo la scritta OK. Se è così è fatta e passiamo a installare MySQL. Attenzione, se usate PC-BSD forse potete saltare questo passo. Per controllare se una versione MySQL è installata date il comando pkg_info e scorrete in ordine alfabetico. Se trovate mySQL server e client allora è già installato, sennò dovete andare su /usr/ports/database/mysql55-server (potrebbe esserci una versione successiva alla 55 allora installate quella). Da lì il solito make install clean. Mysql-server installerà anche il client.

Su MySQL dovreste lavorare di sicurezza. Qui non mi dilungo, supponendo che usiate in locale e su computer sicuri e non avete database di particolare importanza per la sicurezza! I comandi da usare in tal caso sono: /usr/local/etc/rc.d/mysql-server start (avvia MySQL)

/usr/local/bin/mysql_install_db (installa il database per i permessi, ecc.)

 

Ora non resta che testare se è possibile, con una pagina PHP connetersi al database. Per farlo potete scrivere un altro file di testo da mettere nella directory /data di apache, come quello di prima. Solo che il testo sarà:

<?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. Questa risulta come prova di collegamento al database testing di MySQL con scripting PHP: entrambi risultano funzionanti!';

mysql_close($link);

?>

Salvate e chiamatelo connect.php e inseritelo nella directory /data. Ora nel browser scrivete l'indirizzo localhost/connect. Se tutto funziona, magicamente vedrete la scritta che dà l'OK della connessione. Se è così significa che da ora in poi potrete accedere ad un database MySQL con pagine PHP, si suppone che sappiate cosa farne.

Per far partire all'avvio Apache e MySQL in automatico aggiungere al file /etc/rc.conf due righe:

apache_enable="YES"

mysql_enable="YES"

Nel caso seguiate la strada (non sbagliata) di rendere più sicura la connessione cambiando la password e l'utente d'accesso di MySQL (ricordarsi che l'utente root non è l'utente root del sistema ma vale solo per MySQL) nello script precedente dovrete inserire il nome dell'utente scelto al posto di "root" e inserire l'eventuale password al posto dei due apici "" ma sempre dentro due virgolette. Se poi il computer dove si trova il database è diverso da "localhost", dovrete inserire l'IP del computer sempre tra tra virgolette.

 

e un /span

Powered by paolo di stefano&Fresh Joomla Templates 2012®
Download Joomla Templates