Ad oggi WordPress continua ad essere il CMS (sistema di gestione dei contenuti) più popolare su Internet. E ciò grazie al fatto che consente di impostare rapidamente blog e siti web molto flessibili, i quali sono gestiti attraverso il database MySQL e il linguaggio di scripting PHP.
WordPress ha visto un'adozione incredibile negli ultimi anni ed è un'ottima scelta per far funzionare rapidamente un sito Web. Dopo l'installazione l'amministrazione del sito web può essere gestita facilmente attraverso il funzionale front-end web di cui è dotato.
In questa guida vedremo come installare e configurare WordPress su uno stack LAMP (Linux, Apache, MySQL e PHP) utilizzando un server Linux Ubuntu 18.04.
Contenuto articolo
Prerequisiti per avere WordPress su stack LAMP Ubuntu 18.04
Per poter procedere con l'installazione di WordPress bisognerà creare un'utente con i privilegi SUDO, lo stack LAMP già configurato e il protocollo SSL già impostato.
Creazione di un'utente in grado di eseguire comandi sudo
Per accedere a un nuovo server VPS oppure su un server dedicato con installato Linux Ubuntu 18.04 è necessario conoscere l'indirizzo IP pubblico del server. Sarà inoltre necessaria la password oppure, se è stata installata una chiave SSH per l'autenticazione, la chiave privata per l'account dell'utente root .
$ ssh root@server-ip
Accettare l'avviso sull'autenticità dell'host se appare. Se si utilizza l'autenticazione con password fornire la password dell'utente root per accedere. Se si utilizza una chiave SSH protetta da passphrase verrà richiesto di immettere la passphrase la prima volta che si utilizza la chiave.
Se è la prima volta che si accede al server con una password è probabile che venga richiesto di modificare la password di root.
Una volta effettuato l'accesso come root, siamo pronti ad aggiungere il nuovo account utente che utilizzeremo per accedere in seguito.
In questo esempio viene creato un nuovo utente chiamato nuovoutente, ma ovviamente è possibile scegliere un nome a propria discrezione:
# adduser nuovoutente
A questo punto verranno poste alcune domande, a partire dalla password dell'account. Inserire una password complessa e, facoltativamente, inserire le informazioni aggiuntive. Tali informazioni non sono richieste ed è possibile tralasciarle digitando ENTER per ogni campo che campo si desidera saltare.
Ora abbiamo creato un nuovo account utente con privilegi di account normale. Tuttavia molto spesso è necessario essere in grado di svolgere attività amministrative riservate all'utente root.
Per evitare di doverci disconnettere come utente normale e riconnettersi come utente root dovremo impostare i cosiddetti "superutenti" o i privilegi di root per il nostro account normale. Ciò consentirà ad un'utente normale di eseguire comandi con privilegi di amministratore attraverso il comando sudo posto prima degli altri comandi immessi dalla linea di comando.
Per aggiungere questi privilegi al nostro nuovo utente dobbiamo aggiungere il nuovo utente al gruppo sudo. Per impostazione predefinita su Ubuntu gli utenti che appartengono al gruppo sudo sono autorizzati a utilizzare il comando sudo.
Come root, eseguiamo questo comando per aggiungere il nuovo utente al gruppo sudo (sostitute nuovoutente con il nome utente che si è scelto attraverso il comando adduser che abbiamo visto in precedenza):
# usermod -aG sudo nuovoutente
Ora una volta fatto il login come utente normale è possibile digitare sudo prima dei comandi che si intende utilizzare con i privilegi di super-utente.
Configurazione dello stack LAMP su Linux Ubuntu 18.04
Uno stack LAMP è un gruppo di software open source che viene installato allo scopo di consentire a un server Linux di ospitare siti Web e applicazioni Web dinamiche.
Tale termine è l'acronimo che sta ad indicare il sistema operativo Linux, il web server Apache, il database MySQL e il linguaggio di scripting lato server PHP. In questa guida, installeremo uno stack LAMP su un server con installato Linux Ubuntu 18.04.
Installazione del Web Server Apache
Il web server Apache è tra i web server più popolari al mondo. È ben documentato ed è ampiamente utilizzato, il che lo rende un'ottima scelta per l'hosting di un sito Web.
Su Linux Ubuntu installeremo Apache attraverso i seguenti comandi, utilizzando il gestore di pacchetti di Ubuntu apt:
sudo apt update
sudo apt install apache2
Dopo aver inserito la password dell'amministratore di sistema apt elencherà quali pacchetti verranno installati e quanto spazio aggiuntivo su disco verrà occupato. Digitiamo Y ed ENTER per continuare con l'installazione.
A installazione ultimata il server web partirà automaticamente e sarà accessibile localmente attraverso l'indirizzo 127.0.0.1 oppure localhost, mentre da remoto basterà digitare l'IP del server.
Se verrà visualizzata questa pagina avremo la conferma che il server web è stato installato correttamente.
Installazione del database MySQL
MySQL è uno dei database open source più diffusi ed utilizzati. Fondamentalmente il suo compito è quello di organizzare e fornire l'accesso ai contenuti memorizzati nei suoi archivi.
Anche in questo caso utilizzeremo il gestore di pacchetti apt per l'installazione:
$ sudo apt install mysql-server
Subito dopo questo comando verrà mostrato l'elenco dei pacchetti che verranno installati e lo spazio su disco che verrà occupato. Confermare l'installazione digitando Y .
Al termine dell'installazione è consigliata l'esecuzione dello script di sicurezza preinstallato con MySQL che rimuoverà alcune impostazioni predefinite e limiterà le modalità di accesso.
Avviamo tale script digitando:
$ sudo mysql_secure_installation
In modo interattivo verrà chiesto se si vuole configurare il file VALIDATE PASSWORD PLUGIN e altri parametri che consentiranno di limitare le possibilità di accesso e incrementando il livello sicurezza.
Installazione di PHP
PHP è il componente che elaborerà il codice in grado di visualizzare i contenuti dinamici presenti sul sito. E proprio grazie a questo linguaggio di scripting sarà possibile connetterci al database MySQL in modo da poter visualizzare dinamicamente i dati sulle nostre pagine web.
Anche in questo caso utilizzeremo il gestore dei pacchetti apt per installare sul server i pacchetti PHP:
$ sudo apt install php libapache2-mod-php php-mysql
Attraverso tale comando avremo installato i pacchetti standard, anche se molto spesso è necessario installare in seguito pacchetti aggiuntivi a seconda delle funzionalità richieste dal software utilizzato dal sito web.
Per la maggior parte dei casi la modifica più opportuna è quella di cambiare il modo in cui Apache serve i file quando si accede ad una directory. Per impostazione predefinita se un utente con il navigatore cerca di visualizzare il contenuto di una directory del server Apache cercherà per primo il file index.html.
Per modificare tale impostazione sarà necessario impostare la configurazione in modo che il server Web dia priorità ai file PHP rispetto agli altri.
Per ottenere ciò apriamo il file di configurazione dir.conf in un editor di testo con i privilegi di root:
$ sudo nano /etc/apache2/mods-enabled/dir.conf
E impostiamo la direttiva nel modo seguente:
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
Una volta salvato il file riavviamo il server Web Apache in modo da rendere effettive le modifiche:
$ sudo systemctl restart apache2
Impostazione di host virtuali Apache su Linux Ubuntu
Quando si utilizza il server Web Apache su Linux Ubuntu è possibile utilizzare host virtuali in modo da poter ospitare un numero praticamente illimitato di domini e siti web su un singolo server.
Su Ubuntu 18.04 Apache ha di default il server abilitato per servire i file presenti nella directory /var/www/html.
Ciò è quanto serve per un singolo sito web ed un singolo dominio, ma creando una serie di directory all'interno di /var/www/html e ricorrendo alle direttive di configurazione descritte in seguito saremo in grado di poter servire attraverso un'unico server web un numero praticamente illimitato di domini e siti web.
A tale scopo creiamo la directory per tuo-dominio.com come segue:
$ sudo mkdir /var/www/tuo-dominio.com
Quindi assegniamo il proprietario della directory attraverso la variabile di ambiente $USER che di fatto corrisponde al nostro utente di sistema attuale:
$ sudo chown -R $USER:$USER /var/www/tuo-dominio.com
Assegniamo anche i permessi di accesso e scrittura della directory nel seguente modo:
$ sudo chmod -R 755 /var/www/tuo-dominio.com
Quindi creiamo un file index.html attraverso nano o altro editor di testo:
$ nano /var/www/tuo-dominio.com/index.html
E per il nostro test scriviamo solo una stringa di testo che ci consenta di testarne il corretto funzionamento:
Test mio-dominio.com
Copiamo il template e inseriamo nella copia i dati relativi al nostro dominio:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/tuo-dominio.com.conf
$ sudo nano /etc/apache2/sites-available/tuo-dominio.com.conf
Ed inseriremo quanto segue tra i tag di apertura e di chiusura <VirtualHost *:80> ... </VirtualHost *:80>:
ServerAdmin [email protected]
ServerName tuo-dominio.com
ServerAlias www.tuo-dominio.com
DocumentRoot /var/www/tuo-dominio.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Abilitiamo il file di configurazione mediante il programma a2ensite:
$ sudo a2ensite tuo-dominio.com.conf
Disabilitiamo il sito predefinito relativo a 000-default.conf:
$ sudo a2dissite 000-default.conf
Quindi testiamo il tutto in modo da mettere in rilievo eventuali errori di configurazione:
sudo apache2ctl configtest
Se tutto è ok otterremo il seguente output:
Output
Syntax OK
Infine riavviamo Apache per implementare le modifiche apportate:
sudo systemctl restart apache2
Il web server Apache ora dovrebbe essere in grado di risolvere correttamente il nome del nostro dominio. Per testarlo basterà digitare sul browser il relativo indirizzo: http://www.tuo-dominio.com
Ora simo pronti per installare il nostro sito web. E per installare e configurare un CMS come WordPress basterà seguire la guida sull'installazione dalla linea di comando.
Impostazione del firewall per connesioni criptate
I server con installato Linux Ubuntu 18.04 di solito utilizzano il firewall UFW e ora vedremo come consentire solo connessioni per determinati servizi.
Sarà possibile configurare un firewall di base con facilità usando questa applicazione.
Diverse applicazioni possono registrare automaticamente i loro profili UFW al momento dell'installazione. Questi profili consentono a UFW di gestire queste applicazioni per nome.
Anche OpenSSH, il servizio che ci consente di connetterci al nostro server in modalità criptata, ha un profilo registrato con UFW.
Per visualizzarlo digiteremo:
$ sudo ufw app list
Available applications:
OpenSSH
Ora dovremo assicurarci che il firewall consenta di accedere al web server Apache attraverso connessioni criptate SSH. Possiamo consentire queste connessioni digitando:
$ sudo ufw allow OpenSSH
Successivamente possiamo abilitare il firewall digitando:
$ sudo ufw enable
Digitare "y" e premere ENTER per confermare l'attivazione del firewall con le nuove impostazioni. Per la conferma che le connessioni SSH ora sono consentite digiteremo:
$ sudo ufw status
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Installano e configurano servizi aggiuntivi sarà necessario configurare le impostazioni del firewall in modo analogo, in modo da rendere accessibili i relativi servizi.
Configurazione del protocollo sicuro SSL
WordPress offre contenuti dinamici e gestisce l'autenticazione e l'autorizzazione degli utenti mediante il relativo form.
TLS / SSL è la tecnologia che permette di crittografare il traffico di un sito web in modo che la connessione sia sicura.
Guida Let's Encrypt per Apache
Let's Encrypt è un'autorità di certificazione (CA) che fornisce un modo semplice per ottenere e installare certificati TLS / SSL gratuiti, abilitando in tal modo HTTPS crittografato sui server Web.
Semplifica il processo di installazione e configurazione fornendo un client software, Certbot, che automatizza la maggior parte (se non tutte) le fasi richieste per tale configurazione.
Attualmente l'intero processo di installazione di un certificato è completamente automatizzato sia su Apache che su Nginx.
In questo tutorial useremo Certbot per ottenere un certificato SSL gratuito per Apache su Ubuntu 18.04 e configurare il relativo certificato per il rinnovo automatico.
In questo caso verrà impostato un host virtuale di Apache, del tuutto indipendente da quella che è la configurazione predefinita del server web.
Questa procedura quindi sarà necessario ripeterla per ogni host virtuale di Apache che è associato al relativo dominio.
Prerequisiti
Per configurare Let's Encrypt per Apache avremo bisogno di:
1) Un server Ubuntu 18.04 già configurato, con un'utente con i privilegi sudo ma non root e un firewall.
2) Un nome di dominio già registrato. In questo tutorial useremo tuo-domino.it come esempio. A tale scopo è possibile ottenerne uno gratuitamente su Freenom, oppure utilizzare un registrar di domini a pagamento.
3) Impostare due record DNS che puntano verso l'IP del nostro server.
Un record A con il nome tuo-dominio.com che punta all'IP del server sul quale stiamo configurando Let's Encrypt.
Un record A con il nome www.tuo-dominio.com che punta sempre verso l'IP del server.
4) Apache installato su Ubuntu 18.04 con un host virtuale configurato per il nostro dominio. Nel nostro caso useremo come esempio il file di configurazione /etc/apache2/sites-available/tuo-dominio.com.conf
Installazione di Certbot
Il primo passo nella configurazione di Let's Encrypt è quello di installare il programma Certbot che ci consentirà di ottenere il certificato SSL da installare sul server.
In considerazione dl fatto che i pacchetti precompilati di Certbot forniti con Ubuntu 18.04 sono piuttosto obsoleti andremo ad utilizzare il repository gestito dagli sviluppatori di Certbot. Grazie a tale repository saremo in grado di installare la versione più aggiornata.
Aggiungiamo quindi il repository e lo installiamo con i seguenti comandi:
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt install python-certbot-apache
Certbot è ora pronto per essere utilizzato. Quindi non rimane che configurare il web server Apache in modo che sia in grado di utilizzare il protocollo SSL.
Configurazione del certificato SSL
Certbot deve essere in grado di trovare l'host virtuale corretto nella configurazione di Apache per poter configurare automaticamente il protocollo SSL. In particolare lo fa cercando nel file di configurazione di Apache la direttiva ServerName, che di fatto corrisponde al dominio per il quale si richiede il certificato.
Il file di configurazione dell'host virtuale di Apache nell'installazione standard di Linux Ubuntu corrisponde al file /etc/apache2/sites-available/tuo-dominio.com.conf. Per verificare se tale dominio è stato impostato correttamente apriamo con nano o altro editor di testo il file corrispondente al nostro host virtuale:
sudo nano /etc/apache2/sites-available/tuo-dominio.com.conf
E nel file dovra essere presente il parametro ServerName con il nostro dominio. Se non presente lo imposteremo in modo che corrisponda a quanto segue:
...
ServerName tuo-dominio.com;
...
Verifichiamo quindi la correttezza della sintassi del file di configurazione di Apache e ricarichiamo il file di configurazione con i seguenti comandi:
sudo apache2ctl configtest
sudo systemctl reload apache2
Certbot ora sarà in grado di trovare automaticamente il blocco VirtualHost corretto e aggiornarlo. A questo punto impostiamo anche il firewall per consentire il traffico web sul protocollo HTTPS.
Abilitare a livello di firewall il protocollo HTTPS
Se si ha attivo il firewall ufw attivato il firewall sarà necessario abilitare il traffico sul protocollo HTTPS. Apache a tale scopo ha già preconfigurati i parametri che consentono di abilitare il traffico attraverso il firewall ufw.
Quindi abilitiamo il protocollo criptato mediante il seguente comando e nel contempo disabilitiamo la precedente modalità di connessione che era limitata esclusivamente al protocollo http:
$ sudo ufw allow 'Apache Full'
$ sudo ufw delete allow 'Apache'
In seguito a ciò per visualizzare la configurazione di ufw digiteremo il seguente comando, dal quale potremo constatare che la connessione https è abilitata in quanto ora compare "Apache Full" e non più "Apache":
$ sudo ufw status
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
A questo punto saremo pronti per l'esecuzione di Certbot, in modo da recuperare ed installare i nostri certificati SSL.
Ottenere un certificato SSL attraverso Certbot
Su Linux Ubuntu e altre disto basate su Debian Certbot offre diverse modalità al fine di ottenere certificati SSL tramite script preconfigurati. Apache dispone di tali script i quali si occuperanno di riconfigurare il web server e reinizializzare la configurazione ogni volta che sarà necessario. Per utilizzare tale programma di configurazione su Linux Ubuntu digiteremo quanto segue:
sudo certbot --apache -d tuo-dominio.com -d www.tuo-dominio.com
Il parametro -d presente nel precedente comando ci consentirà di specificare per quali domini e sotto domini il certificato sarà valido.
Questo viene eseguito certbotcon il --apacheplug-in, usando -dper specificare i nomi per i quali desideri che il certificato sia valido.
Al primo utilizzo Certbot richiede di inserire un indirizzo e-mail e di accettare i termini del servizio. In seguito comunicherà con il server remoto di Let's Encrypt ed eseguirà una serie di verifiche volte ad accertare la legittimità della richiesta del certificato da parte del dominio per il quale si sta richiedendo il certificato.
Se l'operazione ha esito positivo Certbot richiede di impostare il protocollo HTTPS in base alle proprie esigenze:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Selezionata la propria preferenza premendo ENTER la configurazione verrà aggiornata con le nuove impostazioni. Certbot segnalerà se il processo è andato a buon fine o meno e segnalerà dove sono stati memorizzati i certificati SSL:
Output
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
...
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Ciò conferma che i certificati sono stati correttamente installati. Ora sarà possibile collegarci al nostro sito Web utilizzando il protocollo criptato https://, protocollo che verrà segnalato anche dal browser attraverso la relativa icona a forma di lucchetto verde.
Possiamo testare il livello di protezione della connessione attraverso il test "SSL Labs Server" che ci segnalerà una connessione protetta di categoria A.
Attivazione e verifica del rinnovo automatico di Certbot
I certificati Let's Encrypt hanno una validità di solo novanta giorni e prima della scadenza possono essere rinnovati automaticamente attraverso Certbot.
Il rinnovo avviene attraverso uno script collocato nella directory /etc/cron.d. Questo script viene eseguito due volte al giorno e provvederà a rinnovare automaticamente i certificati entro trenta giorni dalla scadenza.
Per testare il processo di rinnovo è possibile eseguire il comando di test di fornito sempre da Certbot:
sudo certbot renew --dry-run
Se non vedi errori la configurazione è corretta e non ci dovrebbero essere problemi nel rinnovo automatico. Se il processo di rinnovo automatico fallisce Let's Encrypt invierà un messaggio all'indirizzo e-mail specificato, avvisandoci quando il certificato sta per scadere.
Lascia un commento