Questo tutorial ti mostrerà come installare phpMyAdmin con Nginx, MariaDB e PHP7.2 (LEMP) su Ubuntu 18.04. phpMyAdmin è uno strumento di gestione di database basato sul Web gratuito e open source scritto in PHP. Fornisce un'interfaccia web grafica per consentire agli utenti di gestire database MySQL o MariaDB. Imparerai anche come abilitare l'autenticazione a due fattori su phpMyAdmin.
Prerequisiti
Per seguire questo tutorial, devi avere un sistema operativo Ubuntu 18.04 in esecuzione sul tuo computer locale o su un server remoto. Se stai cercando un VPS (Virtual Private Server), puoi fare clic su questo link speciale per ottenere $ 100 di credito gratuito su DigitalOcean. (Solo per nuovi utenti). Se sei già un utente DigitalOcean, puoi fare clic su questo link speciale per ottenere $ 50 di credito gratuito su Vultr (solo per i nuovi utenti).
Si presume che tu abbia già installato lo stack LEMP su Ubuntu 18.04. In caso contrario, dai un'occhiata al seguente tutorial.
- Come installare lo stack LEMP (Nginx, MariaDB, PHP7.2) su Ubuntu 18.04
Detto questo, iniziamo con l'installazione di phpMyAdmin.
Fase 1:scarica e installa phpMyAdmin
phpMyAdmin è incluso nel repository del software Ubuntu 18.04, quindi possiamo installarlo facilmente con il seguente comando.
sudo apt update sudo apt install phpmyadmin
Durante l'installazione, ti verrà chiesto di selezionare un server web da configurare. Nginx non è nell'elenco, quindi premi il tasto Tab e premi OK per saltare questo passaggio.
Quindi, seleziona Sì per creare un nuovo database e lascia che dbconfig-common
per configurarlo.
Questo creerà anche un nuovo utente del database chiamato phpmyadmin
. Assegna una password a questo utente.
Una volta fatto, un nuovo database chiamato phpmyadmin
viene creato e l'utente del database phpmyadmin
dispone dei privilegi necessari per gestire questo database. Se sei curioso come me, puoi accedere a MariaDB e controllare quali privilegi phpmyadmin
utente è stato concesso.
È possibile utilizzare il seguente comando per accedere al server MariaDB.
sudo mysql -u root
Quindi controlla i privilegi.
show grants for [email protected];
Uscita:
Come puoi vedere, utente phpmyadmin
ha tutti i privilegi sul database phpmyadmin
. Ora puoi uscire eseguendo:
exit;
Passaggio 2:crea un blocco server Nginx
Per poter accedere all'interfaccia web di phpMyAdmin, dobbiamo creare un blocco server Nginx eseguendo il comando seguente.
sudo nano /etc/nginx/conf.d/phpmyadmin.conf
Lo configureremo in modo da poter accedere a phpMyAdmin tramite un sottodominio. Incolla il seguente testo nel file. Sostituisci pma.example.com
con il tuo attuale sottodominio e non dimenticare di creare un record A per esso.
server { listen 80; listen [::]:80; server_name pma.example.com; root /usr/share/phpmyadmin/; index index.php index.html index.htm index.nginx-debian.html; access_log /var/log/nginx/phpmyadmin_access.log; error_log /var/log/nginx/phpmyadmin_error.log; location / { try_files $uri $uri/ /index.php; } location ~ ^/(doc|sql|setup)/ { deny all; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } location ~ /\.ht { deny all; } }
I tuoi file phpMyAdmin sono in /usr/share/phpmyadmin/
directory. Salva e chiudi il file. Quindi testa le configurazioni di Nginx.
sudo nginx -t
Se il test ha esito positivo, ricarica Nginx per rendere effettive le modifiche.
sudo systemctl reload nginx
Ora dovresti essere in grado di accedere all'interfaccia web di phpMyAdmin tramite
pma.example.com
Nota che phpMyAdmin non funzionerà nelle versioni recenti di Firefox. Puoi utilizzare Google Chrome per visitare l'interfaccia web di phpMyAdmin. Prima di inserire le credenziali utente nel form di login, abilitiamo HTTPS.
Passaggio 3:installazione del certificato TLS
Per proteggere l'interfaccia web di phpMyadmin, possiamo installare un certificato Let's Encrypt TLS gratuito. Installa il client Let's Encrypt dal repository del software Ubuntu 18.04 come di seguito:
sudo apt install certbot python3-certbot-nginx
Python3-certbot-nginx
è il plugin Nginx per Certbot. Ora esegui il comando seguente per ottenere e installare il certificato TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email your-email-address
Spiegazione:
- –nginx :usa l'autenticatore e il programma di installazione Nginx
- –accetto :Accetto i termini di servizio di Let's Encrypt
- –reindirizzamento :aggiungi reindirizzamento 301.
- –hsts :aggiungi l'intestazione Strict-Transport-Security a ogni risposta HTTP.
- –staple-ocsp :Abilita la pinzatura OCSP.
- –indispensabile :aggiunge l'estensione OCSP Must Staple al certificato.
- -d flag è seguito da un elenco di nomi di dominio, separati da virgola. Puoi aggiungere fino a 100 nomi di dominio.
- –e-mail :Email utilizzata per la registrazione e il contatto di recupero.
Ti verrà chiesto se desideri ricevere e-mail da EFF (Electronic Frontier Foundation). Dopo aver scelto Y o N, il tuo certificato TLS verrà automaticamente ottenuto e configurato per te, come indicato dal messaggio sottostante.
Verifica il tuo certificato TLS
Vai su ssllabs.com per testare il certificato e la configurazione TLS. Dovresti ottenere A+ perché HSTS è abilitato.
Risoluzione dei problemi di accesso
Se accedi con l'account root di MariaDB, potresti visualizzare il seguente errore.
#1698 - Access denied for user 'root '@'localhost'
e
mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'
Se accedi con l'utente phpmyadmin
, non vedrai l'errore precedente. Tuttavia, l'utente phpmyadmin
può essere utilizzato solo per amministrare phpmyadmin
Banca dati. La causa dell'errore è che per impostazione predefinita l'utente root di MariDB è autenticato tramite il plugin unix_socket, invece di usare mysql_native_password
collegare. Per aggirare questo problema, possiamo creare un altro utente amministratore e concedere tutti i privilegi al nuovo utente amministratore.
Accedi al server MariaDB dalla riga di comando.
sudo mariadb -u root
Crea un utente amministratore con autenticazione tramite password.
create user [email protected] identified by 'your-chosen-password';
Concedi tutti i privilegi su tutti i database.
grant all privileges on *.* to [email protected] with grant option;
Elimina i privilegi ed esci;
flush privileges; exit;
Ora puoi accedere a phpMyAmin con l'account amministratore e gestire tutti i database.
Utilizzo di una porta diversa
L'uso di una porta diversa invece della porta predefinita 443 può essere vantaggioso perché puoi chiudere quella porta quando non stai utilizzando phpMyAdmin per prevenire attività di hacking, oppure puoi specificare quali indirizzi IP possono accedere a quella porta. È molto semplice da configurare. Basta aprire il file di blocco del server.
sudo nano /etc/nginx/conf.d/phpmyadmin.conf
Trova le due righe seguenti:
listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot
Cambia 443 in una porta diversa, ad esempio 8443.
listen [::]:8443 ssl ipv6only=on; # managed by Certbot listen 8443 ssl; # managed by Certbot
Puoi anche aggiungere http2 a loro come di seguito per abilitare il protocollo HTTP/2.
listen [::]:8443 ssl http2 ipv6only=on; # managed by Certbot listen 8443 ssl http2; # managed by Certbot
Salva e chiudi il file. Quindi testa le configurazioni di Nginx.
sudo nginx -t
Se il test ha esito positivo, ricarica Nginx per rendere effettive le modifiche.
sudo systemctl reload nginx
Ora puoi accedere a phpMyAdmin tramite:
https://pma.example.com:8443
Installa l'ultima versione stabile di phpMyAdmin
Il repository Ubuntu 18.04 viene fornito con PHP7.2 e phpMyAdmin 4.6.6. Puoi controllare la tua versione di phpMyAdmin nella barra del titolo del browser.
Tuttavia, PHP7.2 è supportato da phpMyAdmin dalla versione 4.7.4. Quando usi phpMyAdmin 4.6.6 con PHP7.2, vedrai il seguente messaggio di avviso.
parameter must be an array or an object that implements countable
Per risolvere il problema di compatibilità, possiamo installare phpMyAdmin 4.8, che è l'ultima versione stabile al momento della stesura di questo articolo. Scaricalo usando wget
.
wget https://files.phpmyadmin.net/phpMyAdmin/4.8.0.1/phpMyAdmin-4.8.0.1-all-languages.zip
Quindi estrailo.
sudo apt install unzip unzip phpMyAdmin-4.8.0.1-all-languages.zip
Eseguire il backup dei file phpMyAdmin originali.
sudo mv /usr/share/phpmyadmin /usr/share/phpmyadmin-original
Sposta phpMyadmin 4.8 in /usr/share/phpmyadmin/
directory.
sudo mv phpMyAdmin-4.8.0.1-all-languages /usr/share/phpmyadmin
Modifica il file di configurazione del fornitore.
sudo nano /usr/share/phpmyadmin/libraries/vendor_config.php
Trova la riga seguente.
define('CONFIG_DIR', '');
Cambialo in
define('CONFIG_DIR', '/etc/phpmyadmin/');
Salva e chiudi il file. Quindi crea il tmp
cartella in cui archiviare i file della cache.
sudo mkdir /usr/share/phpmyadmin/tmp
Modifica la proprietà dell'utente e la proprietà del gruppo in www-data
.
sudo chown www-data:www-data /usr/share/phpmyadmin/tmp
Ora puoi usare phpMyAdmin 4.8 senza ricaricare o riavviare Nginx.
Abilita l'autenticazione a due fattori
Puoi anche rafforzare phpMyAdmin abilitando l'autenticazione a due fattori, che è una funzionalità aggiunta nella versione 4.8. Per abilitarlo, accedi a phpMyAdmin. Quindi vai su Settings
-> Two-factor authentication
e seleziona Applicazione di autenticazione (2FA) .
Dopo aver fatto clic su Configura autenticazione a due fattori pulsante, ti verrà presentato un codice QR, che devi scansionare con un'app di autenticazione a due fattori sul tuo telefono.
Google Authenticator è un'app 2FA popolare, ma consiglio FreeOTP, che è un'app 2FA open source sviluppata da Red Hat. Dopo aver inserito il codice di autenticazione generato dalla tua app 2FA, l'autenticazione a due fattori è abilitata. Se ora esci e riaccedi, devi inserire il codice di autenticazione oltre a nome utente e password.
Rinnovo automatico del certificato
Per rinnovare automaticamente il certificato Let's Encrypt, modifica semplicemente il file crontab dell'utente root.
sudo crontab -e
Quindi aggiungi la seguente riga in basso.
@daily certbot renew --quiet && systemctl reload nginx
--quiet
flag sopprimerà lo standard output. Se vuoi ricevere un errore standard, aggiungi la seguente riga all'inizio del file crontab.
MAILTO=your-email-address
È necessario ricaricare Nginx per presentare il nuovo certificato ai client.
Spero che questo tutorial ti abbia aiutato a installare phpMyAdmin con Nginx su Ubuntu 18.04 LTS. Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere altri suggerimenti e trucchi. Abbi cura di te.