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 mariadb
pkg search mariadb

Versioni di MariaDB disponibili per FreeBSD 11

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-client

Dopo 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 start

Successivamente, 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 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_installation
NOTE: 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 attuale
per l'utente root.  Se hai appena installato MariaDB, e
non 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 MariaDB
senza 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 chiunque
di accedere a MariaDB senza dover avere un account utente creato per
loro.  Questo è destinato solo per testare, e per rendere l'installazione
più fluida.  Dovresti rimuoverli prima di passare a un
environment di produzione.
Rimuovere gli utenti anonimi? [Y/n] y
 ... Successo!
Normalmente, l'utente root dovrebbe essere autorizzato a connettersi solo da 'localhost'.  Questo
assicura 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 rimosso
prima 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 finora
entrino 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 MariaDB
dovrebbe 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*

**Test di accesso al database MariaDB

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

Controlla il socket e la porta di MariaDB

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 restart
sockstat -4 -6|grep mysql

MariaDB è legato all'interfaccia localhost

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 nginx

Eseguendo il comando di gestione dei pacchetti si possono visualizzare gli stessi risultati come mostrato nell’immagine sottostante.

pkg search –o nginx

Elenco delle versioni di Nginx su FreeBSD

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

Installa Nginx su FreeBSD

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 start

Puoi 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 nginx

Per 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.

Pagina di benvenuto di Nginx

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.conf

Questo sarà il nuovo percorso webroot per Nginx:

*root       /usr/local/www/new_html_directory;*

Cambia la directory root web di Nginx

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 php
pkg search –o php

Dalla 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 php71

Per 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-json

Poiché 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-mysqli

Successivamente, 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.conf

Cambia le seguenti righe per apparire come sotto.

user = www  
group = www

**Cambia utente PHP

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;

Utente 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

Controlla il socket 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;  
               }

Configurazione PHP di Nginx

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.ini

Infine, 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=yes
service php-fpm restart

Testa le configurazioni di nginx per errori di sintassi:

ginx –t   
service nginx restart

Testa la sintassi di nginx e riavvia nginx

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.php

Quindi, 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.

Output di PHPinfo

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.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.