Installazione Apache+MySQL+PHP+PhpMyAdmin su Freebsd e GhostBSD

 

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.

 

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.  Attenzione perché ultimamente c'è parecchia confusione con i numeri delle versioni di Apache, PHP e MySQL (installabile al suo posto anche MariaDB). 

La strada consigliata è da terminale come root:

 

installare Apache2x (ultima versione consigliata la 2.4). Installare con pkg install apache24. In alternativa usare portmaster per installare tramite compilazione.

Inserire in /etc/rc.conf la riga apache24_enable=”YES”. Avviare il server da amministratore con service apache24 onestart. Se, durante l'avvio, pur partendo il server, vi dice qualcosa sull'impossibilità di trattare il nome di dominio, nel file /usr/local/etc/apache24/httpd.conf decommentare la riga con “ServerName” e mettere il nome del vostro server (ad esempio localhost). Se tutto è anadato liscio con il browser inserendo <nome server> (ad esempio localhost) dovrebbe uscire la frase “it works!”

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 apache2x_http_accept_enable="YES" al file /etc/rc.conf e inserire questa direttiva nel file /usr/local/etc/apache2x/httpd.conf

<IfDefine !NOHTTPACCEPT>

AcceptFilter http httpready

AcceptFilter https dataready

</IfDefine> 

Installare MySQL installate una versione a scelta di MySQL (ultima versione 8) usando pkg install mysql80-client mysql80-server

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! Comunque se volete andare più sicuri con il comando mysql_secure_installation dopo l’avvio del server potrete settare una password a vari livelli di sicurezza.

I comandi da usare per avviare MySQL sono: service mysql-server onestart (avvia MySQL mentre con onestop e onerestart si ferma e si riavvia). Per farlo partire in automatico al boot inserire la riga mysql_enable=”YES” nel file /etc/rc.conf.

Installare PHP. Prima controllare le versioni a disposizione ma consigliate quelle dalla 7.3 in poi, quindi ad esempio pkg install php80 php80-mysqli mod_php80.

installare le estensioni ad esempio pkg install php80-extensions e per sicurezza anche questi altri moduli: php73-mbstring e php73-gettext.

Dare il comando: sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Con questo copiate il file .ini di php. Bisogna poi abilitare in /etc/rc.conf PHP-FPM con php_fpm_enable=”YES” e avviarlo con sudo service php-fpm onestart.

Poi aprire un file di configurazione /usr/local/etc/apache24/modules.d/001_mod-php.conf con queste righe:

<IfModule dir_module>

DirectoryIndex index.php index.html

<FilesMatch "\.php$">

SetHandler application/x-httpd-php

</FilesMatch>

<FilesMatch "\.phps$">

SetHandler application/x-httpd-php-source

</FilesMatch>

</IfModule>

Quindi riavviare il server apache e per vedere se funziona lo scripting di PHP, aprite un file di testo e inserite:

<?php phpinfo(); ?>

salvate con il nome test.php e inseritelo nella directory /usr/local/www/apache2x/data. Ricordate: questa è la directory dove dovrete piazzare le vostre pagine PHP. Ora, riscrivendo sul browser localhost/test (oppure localhost/test.php), dovreste vedere delle pagine informative sulla versione di PHP e Apache installata nonché i parametri di configurazione presenti.

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, cercate con pkg search phpmyadmin la versione adatta alla vostra installazione di PHP (le versioni devono coincidere). Poi seguire questo WIKI che dà un'idea delle cose da configurare. E’ molto probabile che dovrete aggiungere dopo l’installazione di phpMyAdmin queste righe in fondo al file httpd.conf (proprio alla fine del file):

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

<Directory "/usr/local/www/phpMyAdmin/">

Options None

AllowOverride Limit

Require local

Require host localhost

</Directory>

 

Poi fate un restart di Apache. Date quindi da amministratore il comando:

cd /usr/local/www/phpMyAdmin && sudo cp config.sample.inc.php config.inc.php

Restringete i permessi del file a 444 dopo aver modificato la linea $cfg['blowfish_secret'] = aggiungendo una serie di caratteri alfanumerici. Ad esempio:

$cfg['blowfish_secret'] = 'Ey0r*h!5g#oNf5WvkosW)*H$jasn%$!1'

Ora basta andare sul browser inserire ad esempio un localhost/phpmyadmin e s’accede alla schermata iniziale del tool che richiede l’utente e la password del gestore del database.

Attenzione: se appare un warning relativo alla crittografia sha di mysqli allora dovrete andare come amministratore dentro MySql con il comando ‘mysql -u root -p’ e inserire questo comando:

alter user 'root'@'localhost' identified with mysql_native_password by 'pwd';

naturalmente ‘pwd’ va sostituito con la propria password. Poi es iesce dando ‘exit’.

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.

 

Attenzione: può darsi che PhpMyAdmin fornisca dei warning relativi a delle funzioni disabilitate. In tal caso 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.php. Il 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.

Infine, specie su FreeBSD, se PhpMyAdministrator dà messaggi di file not found, potrebbe essere necessario fare un link da /usr/local/www/<cartella di phpmyadministrator> verso /usr/local/www/apache22/data/