Introduzione

Nginx è un server HTTP e proxy inverso ad alte prestazioni open source responsabile della gestione del carico di alcuni dei più grandi siti su Internet. Può essere utilizzato come server Web autonomo, bilanciamento del carico, cache dei contenuti e proxy inverso per server HTTP e non HTTP.

Rispetto ad Apache, Nginx è in grado di gestire un numero molto elevato di connessioni simultanee e ha un ingombro di memoria inferiore per connessione.

Se desideri installare Wordpress con Nginx su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Installare Nginx

Per installare Nginx aprire il terminale e dare questi comandi:

sudo apt update
sudo apt install nginx

Se il firewall di Ubuntu è attivo dovete abilitare il traffico per Nginx:

sudo ufw allow 'Nginx HTTP'

A questo punto il server è pronto con le configurazioni di default.
Basta collegarsi al proprio indirizzo IP pubblico http://domain_or_ip oppure in localhost http://localhost.

Dovresti visualizzare la pagina di benvenuto di Nginx.

Comandi utili di Nginx

Vediamo alcuni comandi utili di Nginx per gestire il suo funzionamento di base da terminale.

Per riavviare Nginx:

sudo service nginx restart

Per fermare Nginx:

sudo service nginx stop

Per avviare Nginx:

sudo service nginx start

Installare MySQL

È possibile installare MySQL utilizzando il repository ufficiale di Ubuntu con APT.
Installare MySQL:

sudo apt install mysql-server

Installare PHP

Per installare PHP da terminale:

sudo apt install php-fpm php-mysql php-mbstring php-zip php-curl php-intl php-gd
sudo phpenmod mbstring

Per rendere l'installazione di PHP più sicura digitare il seguente comando:

sudo nano /etc/php/7.4/fpm/php.ini

Cercare questa riga ;cgi.fix_pathinfo, rimuovere il punto e virgola ; e inserire il parametro zero 0. Quindi:

cgi.fix_pathinfo=0

Riavviare PHP:

sudo systemctl restart php7.4-fpm

Configurare Nginx

Aprire il seguente file da FTP o da terminale con il vostro editor preferito, qui utilizziamo nano:

sudo nano /etc/nginx/sites-available/default

Possiamo eliminare tutto il contenuto del file tenendo premuto ctrl+k e successivamente incollare la seguente configurazione:

server {
	listen 80 default_server;
	root /var/www/html;
	index index.php index.html index.htm;
	server_name localhost;
	charset UTF-8;
	location / {
		try_files $uri/ /index.php?$args;
	}
	location ~ \.php$ {
		try_files $uri =404;
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		fastcgi_pass unix:/run/php/php7.4-fpm.sock;
		fastcgi_index index.php;
		include fastcgi.conf;
	}
	location ~* \.(js|css|png|jpg|jpeg|gif|ico|eot|otf|ttf|woff)$ {
		add_header Access-Control-Allow-Origin *;
		access_log off; log_not_found off; expires 30d;
	}
	location = /robots.txt { access_log off; log_not_found off; }
	location ~ /\. { deny all; access_log off; log_not_found off; }
}

Salvare e chiudere il file premendo CTRL+X, seguito da Y per salvare le modifiche e quindi ENTER se stai utilizzando nano.

Riavviare Nginx

sudo service nginx restart

Installare PhpMyAdmin

Per installare phpMyAdmin dare questi semplici comandi da terminale:

sudo apt update
sudo apt install phpmyadmin php-mbstring
ATTENZIONE
Durante la fase di installazione di phpMyAdmin vi verrà chiesto di selezionare Apache2 oppure Lighttpd, avendo installato Nginx non dobbiamo selezionare niente, andate su "Ok" per proseguire.

Procedere con le seguenti configurazioni durante l'installazione di phpMyAdmin:

  • Per la corretta configurazione di phpMyadmin è richiesto il database dbconfig-common quindi selezionare "Ok".
  • Inserire la password di amministratore per l'utente phpmyadmin.
  • Confermare la password.

Al termine dell'installazione, creare un link simbolico di phpMyAdmin per Nginx:

sudo ln -s /usr/share/phpmyadmin/ /var/www/html/

Riavviare Nginx:

sudo service nginx restart

È possibile adesso effettuare il login su phpmyadmin con l'utente phpmyadmin e la password impostata durante la fase d'installazione.

PhpMyAdmin di default non sarà in grado di utilizzare invece le credenziali di root.

Potreste riscontrare i seguenti errori:

#1698 - Access denied for user 'root'@'localhost'
mysqli_real_connect(): (HY000/1698): Access denied for user 'root'@'localhost'

La soluzione più semplice (e più sicura) è creare un nuovo utente e garantire i privilegi richiesti.

Modificare il metodo di autenticazione

A partire dalla versione 5.7 di MySQL, l'utente root di MySQL è impostato per l'autenticazione tramite il plug-in auth_socket per impostazione di default anziché con una password.

Per utilizzare una password per connettersi a MySQL come utente root è necessario modificare il metodo di autenticazione, da auth_socket a mysql_native_password.

Poiché non è stata impostata ancora nessuna password, è possibile connettersi al server MySQL utilizzando semplicemente il comando mysql oppure sudo mysql se si è loggati come utente normale. Successivamente sarà necessario utilizzare il comando mysql -u root -p da utente root, altrimenti sudo mysql -u root -p da utente normale.

Quindi se siete loggati come utente root, scrivere nel terminale:

mysql

Altrimenti se siete loggati come utente normale con privilegi sudo:

sudo mysql

Per verificare il metodo di autenticazione associato agli account di mysql:

SELECT user,authentication_string,plugin,host FROM mysql.user;

Dovresti ricevere un messaggio simile a questo:


+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *5852386AB32C5DAD5DDA4F5FED911A70DA342656 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Come potete vedere per l'utente root è impostato di default il metodo di autenticazione auth_socket.

Per utilizzare l'autenticazione con password per l'account root effettuare le seguenti modifiche:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'TUA_PASSWORD';
Attenzione:
Potresti ricevere un messaggio di output simile al seguente: Your password does not satisfy the current policy requirements. Leggi questo tutorial per risolvere il problema.

Effettuare un refresh delle tabelle:

FLUSH PRIVILEGES;

Adesso è possibile verificare il nuovo metodo di autenticazione associato all'utente root:

SELECT user,authentication_string,plugin,host FROM mysql.user;

Dovresti ricevere un messaggio simile a questo:


+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *E6A3377941E640ADEDCC8907E390B06B0C863862 | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *5852386AB32C5DAD5DDA4F5FED911A70DA342656 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Uscire dal prompt di MySQL:

exit;

Per effettuare nuovamente il login al server MySQL adesso sarà necessario inserire una password, quindi da terminale:

Se siete loggati come utente root, scrivere nel terminale:

mysql -u root -p

Altrimenti se siete loggati come utente normale con privilegi sudo:

sudo mysql -u root -p

In questo modo potrete accedere su PhpMyAdmin oppure ad altro software simile con l'utente root.

Opzione 2: Aggiungere i privilegi root per l' utente phpmyadmin

Esegui i seguenti comandi:

GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;

Adesso è possibile effettuare il login con l'utente phpmyadmin ed avere tutti i privilegi dell'utente root.

Opzione 3: Creare un nuovo utente

Adesso è possibile connettersi al database tramite PhpMyadmin utilizzando come nome utente "phpmyadmin" e la password inserita nei passaggi precedenti.

In alternativa è possibile creare un nuovo utente ed assegnare i privilegi necessari:

CREATE USER 'nuovo_utente'@'localhost' IDENTIFIED BY 'nuova_password';
Attenzione:
Potresti ricevere un messaggio di output simile al seguente: Your password does not satisfy the current policy requirements. Leggi questo tutorial per risolvere il problema.

Associare i privilegi di gestione all'utente appena creato:

GRANT ALL PRIVILEGES ON *.* TO 'nuovo_utente'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;

Creare un database per WordPress

Se sei loggato come utente root, scrivere nel terminale:

mysql -u root -p

Altrimenti se sei loggato come utente normale con privilegi sudo:

sudo mysql -u root -p
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Associare un nuovo utente al database wordpress con password e privilegi:

CREATE USER 'wordpressuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'tua_password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost';
Attenzione:
Potresti ricevere un messaggio di output simile al seguente: Your password does not satisfy the current policy requirements. Leggi questo tutorial per risolvere il problema.

Aggiornare i privilegi:

FLUSH PRIVILEGES;

Uscire da mysql:

exit;

Adesso potete collegarvi a phpMyAdmin aggiungendo /phpmyadmin al vostro indirizzo IP pubblico http://domain_or_ip/phpmyadmin oppure in localhost http://localhost/phpmyadmin.

Installare Wordpress

Dare i seguenti comandi da terminale per installare l'ultima versione disponibile di Wordpress:

cd /var/www/html
sudo wget https://wordpress.org/latest.zip
sudo apt-get install zip unzip
sudo unzip latest.zip
cd wordpress
sudo mv * /var/www/html
cd ..
sudo rm -rf wordpress
sudo chown -R www-data:www-data /var/www/

Adesso potete iniziare l'installazione di Wordpress inserendo i dati richiesti come l'indirizzo del database generalmente "localhost" username e password del database, nome del sito, nome utente e password che utilizzerete per l'utente Admin di Wordpress.

Conclusione

In questo tutorial abbiamo visto come installare Wordpress su Ubuntu 20.04 LTS Focal Fossa.

Consiglio l'installazione dei certificati di sicurezza SSL per servire Wordpress con l'HTTPS: Come installare Let's Encrypt per Nginx su Ubuntu 20.04 LTS.