Ricerca nel sito web

Come installare lo stack Nginx, MariaDB e PHP (FEMP) su FreeBSD


Questo tutorial ti guiderà su come installare e configurare FBEMP nell'ultima versione di FreeBSD 11.x. FBEMP è un acronimo che descrive la seguente raccolta di software:

FreeBSD 11.1 Distribuzione simile a Unix, server web Nginx, sistema di gestione di database relazionali MariaDB (un fork della comunità di MySQL) e linguaggio di programmazione dinamico PHP che funziona sul lato server.

Requisiti

  1. Installazione di FreeBSD 11.x
  2. 10 cose da fare dopo l'installazione di FreeBSD

Passaggio 1: installa il server Web Nginx su FreeBSD

1. Il primo servizio che installeremo per il nostro stack FBEMP in FreeBSD è il server web, rappresentato da Nginx software.

Il server web Nginx ha più pacchetti precompilati disponibili in FreeBSD 11.x PORTS. Per ottenere un elenco dei file binari Nginx dai repository Ports, immetti i seguenti comandi nel terminale del tuo server.

ls /usr/ports/www/ | grep nginx
pkg search -o nginx

2. In questa particolare configurazione, installeremo la versione del pacchetto principale di Nginx immettendo il comando seguente. La gestione dei pacchetti pkg ti chiederà se desideri procedere con l'installazione del pacchetto nginx. Rispondi sì (y nella riga di comando) per avviare il processo di installazione.

pkg install nginx

3. Dopo aver installato il pacchetto server web Nginx nel tuo sistema, esegui i seguenti comandi per abilitare il demone a livello di sistema e avviare il servizio nel tuo sistema.

sysrc nginx_enable="yes"
service nginx start

4. Successivamente, utilizzando il comando sockstat, verifica i socket di rete del servizio Nginx, se sono vincolanti sulla porta 80/TCP, emettendo il comando seguente comando. L'output del comando calzinistat verrà convogliato tramite l'utilità grep per ridurre i risultati restituiti solo alla stringa nginx.

sockstat -4 | grep nginx

5. Infine, apri un browser su un computer desktop nella tua rete e visita la pagina Web predefinita di Nginx tramite il protocollo HTTP. Scrivi l'FQDN della tua macchina o il nome del tuo dominio o l'indirizzo IP del tuo server nell'URL del browser archiviato per richiedere la pagina Web predefinita del server Web Nginx. Il messaggio "Benvenuto in nginx!" dovrebbe essere visualizzato nel tuo browser, come illustrato nello screenshot seguente.

http://yourdomain.com
http://your_server_IP
http://your_machine_FQDN

6. La directory weboot predefinita per i contenuti Web Nginx si trova nel percorso di sistema assoluto /usr/local/www/nginx/. In questa posizione dovresti creare, copiare o installare file di contenuto web, come file .html o .php, per il tuo sito web.

Per cambiare questa posizione, modifica il file di configurazione principale di nginx e cambia la direttiva root per riflettere il tuo nuovo percorso webroot.

nano /usr/local/etc/nginx/nginx.conf

Qui, cerca e aggiorna la seguente riga per riflettere il tuo nuovo percorso webroot:

root	/path/to/new/webroot;

Passaggio 2: installa PHP su FreeBSD

7. A differenza del server Apache HTTP, Nginx non ha la capacità di elaborare nativamente il codice PHP. In cambio, il server web Nginx passa le richieste PHP a un interprete PHP, come il demone php-fpm FastCGI, che ispeziona ed esegue il codice. Il codice risultante viene quindi restituito a Nginx, che riassembla il codice nel formato html richiesto e invia ulteriormente il codice al browser web del visitatore.

I repository di port FreeBSD 11.x offrono molteplici versioni binarie per il linguaggio di programmazione PHP, come PHP 5.6, PHP 7.0 e PHP 7.1< rilascia. Per visualizzare tutte le versioni PHP precompilate disponibili in FreeBSD 11.x, esegui i comandi seguenti.

pkg search -o php
ls /usr/ports/lang/ | grep php

8. Puoi scegliere di installare la versione di PHP che ritieni più adatta all'applicazione web eseguita nel tuo sistema. Tuttavia, in questa guida installeremo l’ultima versione di PHP.

Per installare la versione PHP 7.1 e alcuni importanti moduli PHP richiesti per diverse applicazioni web, esegui il seguente comando.

pkg install php71 php71-mysqli php71-mcrypt php71-zlib php71-gd php71-json mod_php71 php71-mbstring php71-curl

9. Dopo aver installato i pacchetti PHP nel tuo sistema, apri il file di configurazione PHP-FPM per Nginx e regola i valori dell'utente e del gruppo in modo che corrispondano al valore sul runtime Nginx utente, che è www. Innanzitutto, esegui un backup del file con il comando seguente.

cp /usr/local/etc/php-fpm.d/www.conf{,.backup}

Quindi, apri il file e aggiorna le seguenti righe come presentato nell'esempio seguente.

user = www
group = www

10. Inoltre, crea un file di configurazione PHP utilizzato per la produzione eseguendo il comando seguente. Su questo file è possibile apportare modifiche personalizzate che verranno applicate all'interprete PHP in fase di runtime.

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Ad esempio, modifica l'impostazione date.timezone per l'interprete PHP per aggiornare la posizione fisica del tuo computer come mostrato nell'esempio seguente. L'elenco dei fusi orari PHP può essere trovato qui: http://php.net/manual/en/timezones.php.

vi /usr/local/etc/php.ini

Aggiungi il seguente fuso orario (imposta il fuso orario in base al tuo Paese).

date.timezone = Europe/London

Puoi anche regolare altre variabili PHP, come la dimensione massima del file caricato, che può essere aumentata modificando i valori seguenti:

upload_max_filesize = 10M
post_max_size = 10M

11. Dopo aver effettuato le impostazioni personalizzate per PHP, abilita e avvia il demone PHP-FPM per applicare le nuove configurazioni emettendo i comandi seguenti.

sysrc php_fpm_enable=yes
service php-fpm start

12. Per impostazione predefinita, il demone PHP-FPM in FreeBSD si collega a un socket di rete locale sulla porta 9000/TCP. Per visualizzare i socket di rete PHP-FPM esegui il seguente comando.

sockstat -4 -6| grep php-fpm

13. Affinché il server web Nginx possa passare gli script PHP al server gateway FastCGI, che è in ascolto sul socket 127.0.0.1:9000, apri il file di configurazione principale di Nginx e aggiungi il seguente blocco di codice come illustrato nell'esempio seguente.

vi /usr/local/etc/nginx/nginx.conf

Blocco di codice 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;
        	}

14. Per visualizzare le informazioni PHP correnti per il tuo server, crea un file info.php nel percorso weboot Nginx emettendo il seguente comando.

echo "<?php phpinfo(); ?>" | tee /usr/local/www/nginx/info.php

15. Quindi, prova e riavvia il demone Nginx per applicare le impostazioni PHP FastCGI e visita la pagina info.php in un browser.

nginx -t # Test nginx configuration file for syntax errors
service nginx restart

Sostituisci di conseguenza l'indirizzo IP o il nome di dominio nei collegamenti seguenti. La pagina delle informazioni PHP dovrebbe visualizzare le informazioni come illustrato nello screenshot seguente.

http://yourdomain.com/info.php
http://server_IP-or-FQDN/info.php

Passaggio 3: installa MariaDB su FreeBSD

16. L'ultimo componente mancante dal tuo stack FEMP nel database. MariaDB/MySQL è uno dei software RDBMS open source più associati al server Web Nginx utilizzato per la distribuzione di siti Web dinamici.

In realtà, MariaDB/MySQL è uno dei database relazionali più utilizzati al mondo. Cercando tra i port di FreeBSD, puoi trovare più versioni di MariaDB/MySQL.

In questa guida installeremo il database MariaDB, che è un fork della comunità del database MySQL. Per cercare le versioni disponibili di MariaDB, immetti i seguenti comandi nel terminale.

ls -al /usr/ports/databases/ | grep mariadb
pkg search mariadb

17. Per installare la versione più recente del server database MariaDB eseguire il seguente comando. Dovresti anche installare il modulo driver del database relazionale PHP utilizzato dagli script PHP per la connessione a MySQL.

pkg install mariadb102-server php71-mysqli

18. Dopo aver installato il database, abilita il demone MySQL e avvia il servizio del database eseguendo i seguenti comandi.

sysrc mysql_enable="YES" 
service mysql-server start

19. Inoltre, assicurati di riavviare il demone PHP-FPM per caricare l'estensione del driver MySQL.

service php-fpm restart
20. On the next step, secure MariaDB database by launching mysql_secure_installation script. Use the below sample of the installation script in order to answer the questions. Basically, say yes (y) for all asked questions to secure the database and type a strong password for MySQL root user.
/usr/local/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

21. Per testare la connessione al database MariaDB dalla console, esegui il comando seguente.

mysql -u root -p -e "show status like ‘Connections’"

22. Per proteggere ulteriormente MariaDB, che per impostazione predefinita è in ascolto delle connessioni di rete in entrata sul socket 0.0.0.0:3306/TCP, emettere il comando seguente per forzare il servizio per vincolarsi all'interfaccia loopback e impedire completamente l'accesso remoto. Successivamente, riavvia il servizio MySQL per applicare la nuova configurazione.

sysrc mysql_args="--bind-address=127.0.0.1"
service mysql-server restart

Verifica se l'associazione localhost è stata applicata correttamente eseguendo il comando netstat come mostrato nell'esempio seguente.

netstat -an -p tcp

È tutto! Hai installato con successo il server web Nginx, il database relazionale MariaDB e il linguaggio di programmazione lato server PHP in FreeBSD. Ora puoi iniziare a creare pagine Web dinamiche per offrire contenuti Web ai tuoi visitatori.