In questo articolo vi illustro con istruzioni complete e concise quali sono tutti i passi da intraprendere per configurare un server linux e installare tutti gli strumenti essenziali per fare da hosting a più siti WordPress propri.
La configurazione che ho scelto è quella non compartimentalizzata, non uso cioè software quali docker etc. Molto semplicemente ogni sito avrà una sua cartella posta nella cartella /etc/www/ . Nella cartella relativa ad ogni sito andremo ad installare un WordPress. Collateralmente andranno configurate varie cosette e installati altri strumenti. Vi spiego tutto qui di seguito:
1 – Sul server pulito, installate Ubuntu. Ho scelto Ubuntu per la diffusione, per la semplicità di utilizzo e anche perchè il mio provider di server cloud mi consente di installare Ubuntu con un click. La guida dovrebbe comunque essere valida anche per altre distribuzioni linux.
2 – Effettuate il login al server aprendo una CLI e usando il comando ssh:
$ ssh root@<server_ip>
e usando la password che avete impostato con il provider del server al momento dell’installazione di Ubuntu. Ricordate che quando uso una notazione del tipo <server_ip> dovete sostituire l’ip del vostro server, per esempio 198.143.164.252, oppure la variabile insdicata all’interno delle parentesi.
3 – Installate Apache con i comandi
$ sudo apt update
$ sudo apt install apache2
4 – Se mettendo l’IP del server nel browser appare la pagina di start di Apache, l’intallazione è andata a buon fine.
5 – Il dominio o i sottodomini devono essere puntati all’IP del server. Questo si effettua attraverso la pagina di amministrazione dei DNS del vostro provider di dominio. Effettuate questa operazione solo per i domini o sottodomini che vi interessano. Ricordo che per avere un sottodomio che punta a un sito sul vostro server, non è necessario che anche il dominio punti allo stesso server.
6 – Disattivate il sito di default impostato da apache mediante il comando:
$ a2dissite 000-default.conf
7 – Per ogni sito che volete impostare è necessario creare un file di configurazione. Lo si può copiare da quello di default, e modificarlo poi successivamente con i dati necessari. La copia può essere fatta con il comando:
$ cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/<nome_sito>.conf
comando da ripetere per ogni sito desiderato.
8 – I vari siti devono poi essere attivati:
$ a2ensite <nome_sito>.conf
comando da ripetere sempre per ogni sito.
9 – Poichè WordPress fa uso del linguaggio php, è necessario installare php sul server. Natuaralmente questo lo è sufficiente farlo una sola volta:
$ sudo apt update
$ sudo apt install php
10 – Senza entrare nei dettagli quasi ogni sito oggi richiede un certificato di autenticazione SSL o TSL. E’ quello che consente di accedervi con un indirizzo del tipo https://www.nome_sito.com/ . La mancanza di un certificato ssl può dare problemi sia in termini di accessibilità che di indicizzazione nei motori di ricerca. E’ nella sostanza quasi indispensabile averne uno. A mia conoscenza esiste un solo modo per ottenere questi certificati gratuitamente, e cioè usando il servizio di Let’s Encrypt. Per farlo è necessario prima installare Snap e Certbot. Snap è un gestore di pacchetti molto diffuso mentre Certbot è il client che ci consentirà di ottenere il certificato di Let’s Encryt:
$ apt install snapd
$ snap –version
$ snap install core
$ snap refresh core
$ snap install certbot
A questo punto è necessaria la creazione di un link tra due file
$ ln -s /snap/bin/certbot /usr/bin/certbot
e lanciamo l’installazione di Certbot:
$ certbot –apache
e seguire le istruzioni fornite dal programma di installazione per attivare ssl su tutti i siti richiesti.
Riport alcuni link di approfondimento qualora ci fossero problemi:
https://letsencrypt.org/getting-started/
https://snapcraft.io/docs/installing-snap-on-ubuntu
https://certbot.eff.org/instructions?ws=apache&os=ubuntufocal
11 – per la questione dei database ricordarsi di impostare il firewall.
https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04
12 – Effettuare l’installazione di MySQL e avviare il servizio. MySQL ci consentirà di creare dei database per WordPress e non solo per per WordPress. Creiamo anche un database per ogni sito web.
$ apt update
$ apt install mysql-server
$ systmectl start mysql.service
$ mysql
mysql> CREATE DATABASE <nome_sito1>;
L’ultima riga di codice deve essere riepetuta per ogni sito desiderato con l’accortezza naturalmente di sostituirvi il nome.
https://www.mysqltutorial.org/mysql-create-database/
https://www.mysqltutorial.org/mysql-create-user.aspx
13 – phpMyAdmin è invece un’interfaccia di controllo sui database MySQL ed è pertanto necessario installarla insieme alle sue dipendenze:
$ apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
Fare molta attenzione e selezionare con la barra spaziatrice il server Apache2 quando richiesto durante l’installazione; solo dopo premere invio.
Quando chiede se usare dbconfig-common, confermare.
Finita l’installazione abilitiamo in modo esplicito mbstring e riavviamo Apache2:
$ phpenmod mbstring
$ systemctl restart apache2
Per consentire l’accesso a phpMyAdmin all’account root, e quindi per avere tutti i permessi, si esegua:
$ mysql
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘<password_qui>’;
A questo punto per accedere a phpMyAdmin si vada all’indirizzo seguente con il browser web e si acceda con le credenziali root appena impostate.
http://<indirizzo_sito>/phpmyadmin/
Nell’interfaccia di phpMyAdmin impostare un nuovo utente con nome utente “wordpress” e con una password relativa. Mi raccomando di usare sempre password univoche. Se aveste difficoltà nel tenere traccia delle password univoche vi suggerisco Keepass come gestore di password. Tra le impostazioni selezionare utf8mb4_general_ci e non selezionare nulla altro tra i privilegi dell’utente. Concludere quindi la creazione dello stesso.
Andare quindi nella sezione “account utenti”, selezionare l’utente “wordpress” e poi nella sezione in “database” cambiare i permessi per i vari siti concedendo tutti i permessi. Quindi salvare.
Ricrodarsi di mettere in sicurezza il tutto con quanto indicato qu:
14 – Procediamo all’installazione e all’impostazione del server FTP. Useremo vsftpd. Una volta installato riavviamo il server FTP e aggiungiamo l’utente che useremo per collegarci al server tramite FTP. All’atto dell’aggiunta impostiamo anche la shell di default per l’utente. Se non impostiamo quella di tipo bash sarà probabilmente impostata quella di tipo sh, che non è quella convenzionale usata in ambiente linux per impartire i comandi. Il comando successivo consente di impostare la password dell’utente e infine creiamo una home per l’utente, anche se non strettamente necessaria.
$ apt-get install vsftpd
$ sudo systemctl restart vsftpd
$ useradd -s /bin/bash <nome_utente>
$ passwd <nome_utente>
$ mkdir /home/<nome_utente>
Riporto alcuni link non necessari ma interessanti:
https://itsfoss.com/set-ftp-server-linux/
https://serverfault.com/questions/544850/create-new-vsftpd-user-and-lock-to-specify-home-login-directory
https://phoenixnap.com/kb/how-to-list-users-linux
https://www.redhat.com/sysadmin/manage-permissions
15 – Per accedere al server FTP servirà un client FTP. Una scelta comune è Filezilla, opesource e gratuito sebbene a parer personale abbia delle limitazioni. Il comando che segue, come è ovvio, a differenza dei precedenti non deve essere lanciato nella shell ssh, ma in una shell locale, sempre che localmente sia installato un sistema operativo linux. Filezilla deve essere installato localmente.
$ apt install filezilla
Dopodiché è possibile avviare Filezilla dal menu del sistema operativo. Per collegarsi al server è sufficiente inserire host (indirizzo del sito), nome utente e password nelle caselle nella parte superiore del programma e collegarsi. Se avete più siti però è decisamente preferibile impostare i siti nel gestore siti di Filezilla che si trova in alto a sinistra.
Qui sotto riporto una pagina con dei client alternativi
https://www.makeuseof.com/best-ftp-clients-for-linux/
16 – Passiamo finalmente all’installazione di WordPress: scaricate WordPress dal seguente indirizzo https://wordpress.org/download/#download-install e scompattatelo in una cartella.
A questo punto da Filezilla collegarsi al server e, in ogni cartella dei siti (per esempio /var/www/nomesito1 ), copiarci dentro tutto il contenuto della cartella WordPress che avete scaricato.
E’ poi necessario cambiare l’appartenenza(attribuiremo tutte le proprietà a www-data che è l’utente del server Apache) e le autorizzazioni delle cartelle e dei files di WordPress in modo che sia gli utenti che WordPress possano operare senza intoppi. I permessi non devono essere né troppo permissivi né troppo rigidi. Al secondo comando aggiungeremo anche il vostro nome utente al gruppo www-data in modo da garantirvi opportuni permessi. Useremo dunque i seguenti comandi:
$ chown -R www-data:www-data /var/www
$ usermod -a -G www-data <nome_utente>
$ find /var/www -type d -exec chmod 775 {} \;
$ find /var/www -type f -exec chmod 664 {} \;
Applichiamo anche un pemesso speciale a wp-config.php che è di particolare importanza. In ogni cartella principale di WordPress di ogni vostro sito lanciate quindi questo comando:
$ chmod 440 wp-config.php
A questo punto abbiamo praticamente finito, visitate l’indirizzo del vostro sito e si avvierà l’installazione. Non dovete fare altro che compiare i dati richiesti.
E WordPress è installato!
Se avete problemi o commenti non esitate a scrivere qui sotto.