FEMP stack · 12 min read · Jan 26, 2026
Installa Nginx, MariaDB e PHP (stack FEMP) su FreeBSD 11
In questo tutorial, descriverò il processo di installazione e configurazione dello stack FEMP su FreeBSD 11.x. Lo stack software FEMP è un acronimo che sta per un gruppo di programmi che di solito vengono installati nei sistemi operativi Unix/Linux e utilizzati principalmente per il deployment di applicazioni web dinamiche. In questo caso, l’acronimo FEMP si riferisce al sistema operativo simile a Unix FreeBSD, su cui sono installate queste applicazioni:
- Nginx server web, che è un server web in rapida crescita e popolare, utilizzato principalmente per servire contenuti HTML, ma può anche fornire bilanciamento del carico, alta disponibilità o reverse-proxy per un server web o per altri servizi di rete.
- PHP interprete del linguaggio di programmazione dinamico, utilizzato nel backend per manipolare i dati dei database e creare contenuti web dinamici che possono essere inclusi in HTML semplice. Gli script PHP vengono eseguiti solo lato server, mai lato client (nei browser).
- Mariadb\MySQL RDBMS dove i dati vengono memorizzati nel backend, mentre l’elaborazione dinamica è gestita da PHP. In questo tutorial, installeremo e utilizzeremo il sistema di gestione di database relazionali MariaDB, un fork della comunità di MySQL, a favore del database MySQL, che ora è di proprietà e sviluppato da Oracle.
REQUIREMENTS:
- Un’installazione minima di FreeBSD 11.x.
- Un indirizzo IP statico configurato per un’interfaccia di rete.
- Un account regolare configurato con privilegi di root o accesso diretto al sistema tramite account root.
- Preferibilmente, un nome di dominio registrato pubblicamente configurato con i record DNS minimi (record A e CNAME).
Passo 1 – Installa il Database MariaDB
Nel primo passo, installeremo il sistema di database MariaDB, che è il componente FEMP che verrà utilizzato per memorizzare e gestire i dati dinamici del sito web. MariaDB/MySQL è uno dei database relazionali open source più utilizzati al mondo in combinazione con il server web Nginx o Apache. Entrambi i server sono ampiamente utilizzati per creare e sviluppare applicazioni web complesse o siti web dinamici. MariaDB può essere installato su FreeBSD direttamente dai binari forniti dai repository PORTS. Tuttavia, una semplice ricerca utilizzando il comando ls nella sezione dei database di FreeBSD Ports rivela più versioni di MariaDB, come mostrato nell’output del comando seguente. Inoltre, eseguendo il comando del Package Manager pkg si visualizzano gli stessi risultati.
ls -al /usr/ports/databases/ | grep mariadbpkg search mariadb
In questa guida, installeremo l’ultima versione di MariaDB database e client utilizzando il comando pkg come illustrato nell’estratto sottostante.
pkg install mariadb102-server mariadb102-clientDopo che MariaDB ha terminato l’installazione nel sistema, emettere il seguente comando per abilitare il server MySQL a livello di sistema. Inoltre, assicurati di avviare il demone MariaDB come mostrato di seguito.
sysrc mysql_enable="YES"service mysql-server startSuccessivamente, dovremo mettere in sicurezza il database MariaDB eseguendo lo script mysql_secure_installation. Durante l’esecuzione dello script, ci verrà posta una serie di domande. Lo scopo di queste domande è fornire un livello di sicurezza per il motore MySQL, come impostare una password root per l’utente root di MySQL, rimuovere l’utente anonimo, disabilitare il login remoto per l’utente root e eliminare il database di test. Dopo aver scelto una password forte per l’utente root di MySQL, rispondere con sì a tutte le domande, come illustrato nel campione dello script sottostante. Non confondere l’utente root del database MariaDB con l’utente root del sistema. Anche se questi account hanno lo stesso nome, root, non sono equivalenti e vengono utilizzati per scopi diversi, uno per l’amministrazione del sistema e l’altro per l’amministrazione del database.
/usr/local/bin/mysql_secure_installationNOTE: E' RACCOMANDATO ESEGUIRE TUTTE LE PARTI DI QUESTO SCRIPT PER TUTTI I SERVER MariaDB IN USO IN PRODUZIONE! PER FAVORE LEGGI OGNI PASSO ATTENTAMENTE! Per accedere a MariaDB per metterlo in sicurezza, avremo bisogno della password attualeper l'utente root. Se hai appena installato MariaDB, enon hai ancora impostato la password root, la password sarà vuota,quindi dovresti semplicemente premere invio qui. Inserisci la password attuale per root (premi invio per nessuna):OK, password utilizzata con successo, procedendo... Impostare la password root garantisce che nessuno possa accedere all'utente root di MariaDBsenza la corretta autorizzazione.Impostare la password root? [Y/n]y
Nuova password:Reinserisci la nuova password:Password aggiornata con successo!Ricaricamento delle tabelle dei privilegi.. ... Successo!Per impostazione predefinita, un'installazione di MariaDB ha un utente anonimo, che consente a chiunquedi accedere a MariaDB senza dover avere un account utente creato perloro. Questo è destinato solo per testare, e per rendere l'installazionepiù fluida. Dovresti rimuoverli prima di passare a unenvironment di produzione.Rimuovere gli utenti anonimi? [Y/n]y
... Successo!Normalmente, l'utente root dovrebbe essere autorizzato a connettersi solo da 'localhost'. Questoassicura che qualcuno non possa indovinare la password root dalla rete.Disabilitare il login remoto per root? [Y/n]y
... Successo!Per impostazione predefinita, MariaDB viene fornito con un database chiamato 'test' a cui chiunque puòaccedere. Questo è anche destinato solo per testare, e dovrebbe essere rimossoprima di passare a un ambiente di produzione.Rimuovere il database di test e l'accesso ad esso? [Y/n]y
- Eliminazione del database di test... ... Successo! - Rimozione dei privilegi sul database di test... ... Successo!Ricaricare le tabelle dei privilegi garantirà che tutte le modifiche apportate finoraentrino in vigore immediatamente.Ricaricare le tabelle dei privilegi ora? [Y/n]y**
... Successo!Pulizia...Tutto fatto! Se hai completato tutti i passaggi sopra, la tua installazione di MariaDBdovrebbe ora essere sicura.Grazie per aver utilizzato MariaDB!Infine, dopo aver terminato di mettere in sicurezza il database MariaDB, verifica se ti è consentito eseguire il login locale al database dall’account root eseguendo il seguente comando. Una volta connesso al prompt del database, digita semplicemente quit o exit per lasciare la console del database e tornare al prompt della console dell’utente di sistema come mostrato nello screenshot sottostante.
mysql -u root -p*MariaDB> quit***
Eseguendo il comando sockstat in FreeBSD si rivela rapidamente il fatto che MariaDB è aperto a connessioni di rete esterne e può essere accessibile da qualsiasi rete tramite la porta 3306/TCP.
sockstat -4 -6
Per disabilitare completamente le connessioni di rete remote a MariaDB, è necessario forzare il socket di rete mysql a legarsi solo all’interfaccia loopback aggiungendo la seguente riga al file /etc/rc.conf con il comando sottostante.
sysrc mysql_args="--bind-address=127.0.0.1"Successivamente, riavvia il demone MariaDB per applicare le modifiche ed esegui nuovamente il comando sockstat per visualizzare il socket di rete per il servizio mysql. Questa volta, il servizio MariaDB dovrebbe ascoltare le connessioni di rete solo sul socket localhost:3306.
service mysql-server restartsockstat -4 -6|grep mysql
Se stai sviluppando un’applicazione web remota che ha bisogno di accedere al database su questa macchina, ripristina le modifiche apportate finora al socket MySQL rimuovendo o commentando la riga mysql_args=”–bind-address=127.0.0.1” dal file /etc/rc.conf e riavviando il database per riflettere le modifiche. In questo caso, dovresti prendere in considerazione altre alternative per limitare o vietare l’accesso remoto a MySQL, come eseguire un firewall localmente e filtrare gli indirizzi IP dei client che necessitano di login remoto o creare utenti MySQL con i corretti indirizzi IP concessi per accedere al server.
Passo 2 – Installa il Server Web Nginx
Il prossimo demone importante che installeremo in FreeBSD per il nostro stack FEMP è il server web, rappresentato dal servizio Nginx. Il processo di installazione del server web Nginx in FreeBSD è piuttosto semplice. Il server web Nginx può essere installato dai binari forniti dai Ports di FreeBSD 11.x. Una semplice ricerca attraverso i repository dei Ports nella sezione www può mostrare un elenco delle versioni precompilate disponibili per il software Nginx, come mostrato nell’estratto del comando sottostante.
ls /usr/ports/www/ | grep nginxEseguendo il comando di gestione dei pacchetti si possono visualizzare gli stessi risultati come mostrato nell’immagine sottostante.
pkg search –o nginx
Per installare la versione più comune di Nginx in FreeBSD, esegui il comando sottostante. Durante l’installazione del pacchetto binario, il gestore dei pacchetti ti chiederà se sei d’accordo con il download e l’installazione del pacchetto Nginx. Di solito, dovresti digitare la parola sì o y nel prompt per avviare il processo di installazione. Per evitare il prompt, aggiungi il flag –y mentre emetti il comando: pkg –y install nginx.
pkg install nginx
Dopo che il software del server web Nginx è stato installato sul tuo sistema, dovresti abilitare e avviare il servizio emettendo i comandi sottostanti.
sysrc nginx_enable="yes"service nginx startPuoi eseguire il comando sockstat per controllare se il servizio Nginx è avviato sul tuo sistema e su quali socket di rete si lega. Normalmente, dovrebbe legarsi per impostazione predefinita sul socket TCP :80. Puoi utilizzare il filtro della riga di comando grep per visualizzare solo i socket che corrispondono al server *nginx.
sockstat -4 -6 | grep nginxPer visitare la pagina web predefinita di Nginx, apri un browser su un computer nella tua rete e naviga all’indirizzo IP del tuo server tramite il protocollo HTTP. Nel caso in cui tu abbia registrato un nome di dominio o utilizzi un server DNS locale presso la tua sede, puoi scrivere il nome di dominio completamente qualificato della tua macchina o il nome di dominio nel campo URI del browser. Un messaggio di titolo che dice “Benvenuto in nginx!” insieme a alcune righe HTML dovrebbe essere visualizzato nel tuo browser, come mostrato nello screenshot seguente.

La posizione in cui i file web sono memorizzati per Nginx in FreeBSD 11.x è la directory /usr/local/www/nginx/. Questa directory è un collegamento simbolico alla directory nginx-dist. Per distribuire un sito web, copia i file html o php in questa directory. Per cambiare la directory webroot predefinita di Nginx, apri il file di configurazione di Nginx dalla directory /usr/local/etc/nginx/ e aggiorna la riga della dichiarazione root come mostrato nell’esempio sottostante.
nano /usr/local/etc/nginx/nginx.confQuesto sarà il nuovo percorso webroot per Nginx:
*root /usr/local/www/new_html_directory;*
Passo 3 – Installa il Linguaggio di Programmazione PHP
Per impostazione predefinita, il server web Nginx non può analizzare direttamente gli script PHP, Nginx deve passare il codice PHP attraverso il gateway FastCGI al demone PHP-FPM, che interpreta ed esegue gli script PHP. Per installare il demone PHP-FPM in FreeBSD, cerca i pacchetti binari PHP precompilati disponibili emettendo i comandi sottostanti.
ls /usr/ports/lang/ | grep phppkg search –o phpDalla moltitudine di versioni PHP disponibili nei repository di FreeBSD Ports, scegli di installare l’ultima versione dell’interprete PHP, attualmente la versione PHP 7.1, emettendo il seguente comando.
pkg install php71Per installare alcune estensioni PHP extra, che potrebbero essere necessarie per distribuire applicazioni web complesse, emetti il comando sottostante. Un elenco delle estensioni PHP ufficialmente supportate può essere trovato visitando il seguente link: http://php.net/manual/en/extensions.alphabetical.php
Se stai pianificando di costruire un sito web basato su un sistema di gestione dei contenuti, rivedi la documentazione del CMS per scoprire i requisiti per il tuo sistema, specialmente quali moduli o estensioni PHP sono necessari.
php71-mcrypt mod_php71 php71-mbstring php71-curl php71-zlib php71-gd php71-jsonPoiché stiamo eseguendo un server di database nella nostra configurazione, dovremmo anche installare l’estensione del driver del database PHP, che viene utilizzata dall’interprete PHP per connettersi al database MariaDB.
pkg install php71-mysqliSuccessivamente, aggiorna l’utente e il gruppo PHP-FPM per corrispondere all’utente di runtime Nginx modificando il file di configurazione PHP-FPM. Cambia le variabili delle righe utente e gruppo in www come mostrato nell’estratto sottostante.
cp /usr/local/etc/php-fpm.d/www.conf{,.backup}nano /usr/local/etc/php-fpm.d/www.confCambia le seguenti righe per apparire come sotto.
user = www
group = www**
Per impostazione predefinita, il demone Nginx viene eseguito con i privilegi dell’utente di sistema ‘nobody‘. Cambia l’utente di runtime di Nginx per corrispondere all’utente di runtime di PHP-FPM, modificando il file /usr/local/etc/nginx/nginx.conf e aggiornando la seguente riga:
user www;
Per impostazione predefinita, il demone PHP-FPM in FreeBSD apre un socket di rete sulla porta TCP localhost:9000 in stato di ascolto. Per visualizzare questo socket puoi utilizzare il comando sockstat come mostrato nell’esempio sottostante.
sockstat -4 -6| grep php-fpm
Affinché il server web Nginx possa scambiare script PHP con il gateway PHP FastCGI sul socket di rete 127.0.0.1:9000, apri il file di configurazione di Nginx e aggiorna il blocco PHP-FPM come mostrato nel campione sottostante.
Esempio di gateway PHP FastCGI per Nginx:
location ~ \.php$ {
root /usr/local/www/nginx;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
Dopo aver apportato tutte le modifiche sopra, crea un file di configurazione per PHP basato sul file di produzione predefinito emettendo il seguente comando. Puoi modificare le impostazioni di runtime di PHP modificando le variabili presenti nel file php.ini.
ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.iniInfine, per applicare tutte le modifiche apportate finora, abilita il demone PHP-FPM a livello di sistema e riavvia i servizi PHP-FPM e Nginx emettendo i comandi sottostanti.
sysrc php_fpm_enable=yesservice php-fpm restartTesta le configurazioni di nginx per errori di sintassi:
ginx –t service nginx restart
Per ottenere le informazioni PHP attuali disponibili per il tuo stack FEMP in FreeBSD, crea un file phpinfo.php nella directory di root del documento del tuo server emettendo il seguente comando.
echo "" | tee /usr/local/www/nginx/phpinfo.phpQuindi, apri un browser e naviga alla pagina phpinfo.php visitando il nome di dominio o l’indirizzo IP pubblico del tuo server seguito dal file /phpinfo.php, come illustrato nello screenshot sottostante.

Questo è tutto! Hai installato e configurato con successo lo stack FEMP in FreeBSD 11. L’ambiente è ora pronto e completamente funzionante per iniziare a distribuire applicazioni web dinamiche presso la tua sede.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.