AlmaLinux: come installare WordPress e iniziare con un proprio sito

Guida pratica per installare e configurare WordPress su un server AlmaLinux con Nginx. I passaggi per impostare il sistema, caricare i componenti software necessari, ottenere un certificato Let's Encrypt per gestire le connessioni HTTPS.

AlmaLinux è una distribuzione Linux basata su Red Hat Enterprise Linux (RHEL) creata come alternativa e “successore spirituale” di CentOS. La fortunata distribuzione CentOS (Community ENTerprise Operating System) ha assunto, per lungo tempo, il ruolo di versione gratuita di RHEL. Era una scelta molto popolare per i professionisti e le aziende che volevano beneficiare delle funzionalità di RHEL senza dover pagare per il supporto.

A dicembre 2020, Red Hat annunciò un cambiamento strategico per CentOS. Invece di mantenere il modello di rilascio a lungo termine di CentOS, Red Hat introdusse CentOS Stream, una  speciale rolling-release più vicina in termini di tempi di rilascio alle versioni di sviluppo di RHEL. Questa decisione suscitò preoccupazioni nella comunità, poiché molti utenti e organizzazioni dipendevano da CentOS come alternativa gratuita e stabile. Non potevano quindi permettersi di investire su una distribuzione Linux potenzialmente più instabile.

In risposta ai timori della comunità, CloudLinux decise di creare una distribuzione Linux che avrebbe preso il posto di CentOS e fornito un’alternativa compatibile con RHEL. Nasce così AlmaLinux OS. Poiché RHEL è diventato più chiuso rispetto al passato, come abbiamo visto, la comunità ha presentato altri progetti alternativa, sulla stessa scia di AlmaLinux.

AlmaLinux 8, la prima versione stabile del sistema operativo, vede la luce il 30 marzo 2021: è progettata per essere una distribuzione gratuita, open source e a lungo termine, simile al modello di CentOS prima dell’annuncio di CentOS Stream.

Questa distribuzione ha guadagnato rapidamente popolarità oltre al supporto dalla comunità Linux, inclusi sviluppatori, aziende e professionisti.

AlmaLinux: una guida ragionata per installare WordPress

Tanti provider cloud hanno iniziato a fornire AlmaLinux preinstallato sulle loro macchine virtuali. In alternativa, gli utenti possono procedere con l’installazione servendosi dei file ISO disponibili sul sito ufficiale del progetto. Caricare AlmaLinux su un proprio server è banale: come fare invece per installare WordPress e pubblicare un proprio sito sul Web?

La prima cosa da fare consiste nel registrare un nome a dominio rivolgendosi a uno dei molteplici registrar italiani e stranieri. Come secondo passo, si devono modificare le impostazioni del record DNS associando il nome a dominio con l’indirizzo IP pubblico della macchina sulla quale si andrà ad installare AlmaLinux e il server Web.

Record DNS

Nell’esempio in figura, abbiamo creato a mo’ di test un terzo livello (del tipo wordpress.nomedeldominio.xyz) che punta verso l’indirizzo IP del servizio sul quale è installato AlmaLinux.

DNF è il gestore di pacchetti di Fedora, utilizzato per installare, rimuovere e aggiornare software nel sistema. AlmaLinux, essendo un fork di RHEL, ha ereditato il gestore di pacchetti (Dandified Yum) proprio da RHEL. DNF è presentato come un’alternativa migliorata di Yum, il precedente gestore di pacchetti utilizzato in RHEL e CentOS. Ne abbiamo parlato nell’articolo dedicato a come creare server Linux.

Installazione di Nginx come server Web

Per cominciare, quindi, è bene procedere con l’aggiornamento di Almalinux per poi richiedere l’installazione del server Web Nginx:

sudo dnf update -y
sudo dnf install nginx -y

Ad installazione conclusa, è possibile avviare e attivare Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Caricare PHP e le estensioni necessarie per il funzionamento di WordPress

Con il solo comando seguente, è possibile richiedere l’installazione di PHP sul server AlmaLinux insieme con tutte le estensioni delle quali ha bisogno WordPress per funzionare:

sudo dnf install php php-mysqlnd php-dom php-simplexml php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-iconv php-json php-mbstring php-posix php-sockets php-tokenizer php-common php-gmp php-intl php-xmlrpc php-zip unzip -y

Installare e configurare MariaDB

MariaDB è un sistema di gestione di database relazionali (RDBMS) open source che si basa sul codice sorgente di MySQL. È una fork del progetto MySQL sviluppato da Michael “Monty” Widenius, uno dei creatori originali di MySQL, dopo l’acquisizione di MySQL AB da parte di Oracle nel 2008. L’obiettivo principale di MariaDB è fornire una versione open source, gratuita e comunitaria di MySQL, mantenendo la compatibilità con il codice sorgente di MySQL.

I comandi che seguono consentono di installare MariaDB sul sistema AlmaLinux quindi di avviare e attivare il RDBMS:

sudo dnf install mariadb-server mariadb -y
sudo systemctl enable --now mariadb

Il comando che segue consente quindi di avviare la configurazione di MariaDB:

sudo mysql_secure_installation

È necessario fornire una risposta a una serie di domande, che riassumiamo di seguito. L’istruzione appena impartita, infatti, avvia uno script interattivo che permette di migliorare la sicurezza del server MariaDB:

  • Inserisci la password per l’utente root di MariaDB/MySQL. Viene richiesto di inserire la password per l’utente root del database (non dell’utente root di AlmaLinux). Per proseguire basta premere il tasto Invio. Accettare quindi l’impostazione di una password per l’utente root e sceglierla in maniera tale che sia lunga e complessa.
  • Vuoi rimuovere l’utente anonimo? (Y/n). Rimuovere l’utente anonimo migliora la sicurezza del database, impedendo l’accesso non autenticato. Premere “Y”.
  • Vuoi consentire l’accesso remoto all’utente root? (Y/n). Anche in questo caso è bene premere “Y” per bloccare i tentativi di accesso remoto al database MariaDB.
  • Vuoi rimuovere il database di test e gli utenti? (Y/n): Il database di test e gli utenti associati sono spesso considerati un rischio di sicurezza, quindi è consigliabile rimuoverli premendo “Y”.

Creare un database per WordPress

A questo punto è finalmente possibile accedere a MariaDB digitando il comando che segue:

sudo mysql -u root -p

Quando richiesto, è necessario introdurre la password root di MariaDB scelta seguendo le istruzioni offerte al paragrafo precedente. La seguente “infornata” di comandi permette di creare un database wordpressdb e autorizzare il nuovo utente wordpressuser ad accedervi con tutti i privilegi possibili.

CREATE DATABASE wordpressdb;
CREATE USER 'wordpressuser'@'localhost' identified by 'INSERIRE_PASSWORD_FORTE';
GRANT ALL PRIVILEGES ON wordpressdb.* TO 'wordpressuser'@'localhost';
FLUSH PRIVILEGES;
QUIT;

Al posto di INSERIRE_PASSWORD_FORTE, va indicata una password per l’utente wordpressuser che sia sufficientemente lunga e complessa, così da resistere ad eventuali tentativi di attacco brute-force. Come si vede, l’indicazione localhost sta a significare che l’utente viene creato in locale sull’istanza di MariaDB appena impostata.

Installazione di WordPress sul server AlmaLinux

Conclusi questi pochi passaggi, è possibile effettuare il download automatico dell’ultima versione di WordPress quindi installarlo sulla macchina AlmaLinux in uso:

sudo dnf install wget nano -y
wget https://wordpress.org/latest.tar.gz
tar xvf latest.tar.gz
sudo mv wordpress /var/www/wp

I file che compongono il pacchetto WordPress sono salvati nella cartella /var/www/wp. Qui è fondamentale modificare il contenuto del file di configurazione di WordPress aggiungendo i parametri corretti per la connessione con il database. Per procedere in tal senso, basta digitare quanto segue:

cd /var/www/wp
sudo cp wp-config-sample.php wp-config.php
nano wp-config.php

In corrispondenza delle direttive DB_NAME, DB_USER e DB_PASSWORD vanno rispettivamente indicati il nome del database MariaDB creato in precedenza, il nome dell’utente che può accedervi e la relativa password.

Installare WordPress su AlmaLinux

Per salvare le modifiche e uscire dall’editor di testo “nano”, è sufficiente premere prima CTRL+O quindi CTRL+X.

Il passo finale consiste nel fare in modo che il server Web Nginx abbia i necessari diritti per lavorare sui file di WordPress:

sudo chown -R nginx:nginx /var/www/wp
sudo chmod -R 775 /var/www/wp

Il riferimento nginx:nginx imposta il nuovo proprietario e il nuovo gruppo per i file e le directory a nginx (utente) e nginx (gruppo). Nel secondo comando, chmod modifica i permessi sulla cartella specificata di WordPress e sui file in essa contenuti. Il codice 775 regola i permessi in modo che il proprietario abbia i privilegi di lettura, scrittura ed esecuzione (7), il gruppo abbia i permessi di lettura, scrittura ed esecuzione (7) e gli altri utenti abbiano i permessi di lettura ed esecuzione (5).

Configurare il server Web Nginx per caricare WordPress

Il comando seguente permette di creare il cosiddetto Virtual Host su Nginx:

sudo nano /etc/nginx/conf.d/wp.conf

Creare un Virtual Host su Nginx significa configurare il server Web per gestire più siti su un singolo server fisico o virtuale. Un Virtual Host consente a Nginx di rispondere a richieste per più domini o sottodomini, indirizzando le richieste alle diverse cartelle contenenti i file da condividere online. In Nginx, i Virtual Host sono gestiti attraverso il concetto di server blocks. Un server block è una sezione nel file di configurazione Nginx che definisce le impostazioni per un particolare host.

All’interno del file aperto con Nano, è necessario incollare quanto segue quindi effettuare il salvataggio premendo prima CTRL+O quindi CTRL+X.

server {
listen 80;
server_name nomedeldominio.xyz;

root /var/www/wp;

index index.html index.php;

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires max;
log_not_found off;
}
}

Al posto di nomedeldominio.xyz va ovviamente indicato il nome a dominio che, attraverso la modifica dei record DNS, si è puntato al server AlmaLinux.

A questo punto è necessario digitare sudo nano /etc/php-fpm.d/www.conf e modificare user = apache e group = apache rispettivamente in user = nginx e group = nginx.

Configurazione Nginx WordPress

Come ultimo passo, è possibile riavviare PHP-FPM e il server Nginx:

sudo systemctl restart php-fpm
sudo systemctl restart nginx

PHP-FPM, acronimo di PHP FastCGI Process Manager, è un gestore di processi per il protocollo FastCGI, progettato specificamente per l’esecuzione di script PHP in ambienti server. FastCGI è un protocollo di comunicazione tra un server Web e un’applicazione Web, che consente di eseguire script lato server in modo più efficiente rispetto agli approcci tradizionali (come mod_php).

Impostazione del firewall per consentire connessioni HTTP e HTTPS

I comandi seguenti consentono di abilitare le porte TCP 80 e TCP 443 per HTTP/HTTPS consentendo le connessioni in ingresso dirette al server:

sudo firewall-cmd --zone=public --permanent --add-port 80/tcp
sudo firewall-cmd --zone=public --permanent --add-port 443/tcp
sudo firewall-cmd --reload
sudo setsebool -P httpd_can_network_connect 1

Infine, impartendo le istruzioni che seguono, si aggiunge una regola SELinux che consente al server Web di avere accesso in scrittura (rw) alla directory /var/www/wp e ai suoi contenuti. Il secondo comando, inoltre, esegue il ripristino del contesto sulla cartella di WordPress:

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/wp(/.*)?"
sudo restorecon -Rv /var/www/wp

Configurazione di WordPress da browser Web

Per concludere, adesso è possibile collegarsi al server Nginx digitando http:// seguito dal nome a dominio specificato in precedenza. Si accedere così alla procedura di configurazione Web di WordPress che prevede la scelta della lingua preferita, l’impostazione di un account per l’accesso alla piattaforma e di una password sufficientemente lunga e complessa.

A questo punto, è possibile effettuare il login su WordPress utilizzando il nome utente e la password definiti. Si può verificare che tutto funzioni correttamente.

WordPress su AlmaLinux

Attivare l’utilizzo di un certificato digitale Let’s Encrypt su WordPress

L’unico problema è che, con questa configurazione, WordPress è erogato attraverso una connessione HTTP senza alcuna forma di cifratura dei dati. Per attivare l’utilizzo del protocollo HTTPS, è sufficiente chiedere un certificato digitale gratuito a Let’s Encrypt quindi configurarlo automaticamente lato server Web.

I passi da seguire per erogare le pagine di WordPress attraverso una connessione HTTPS sono piuttosto semplici. I comandi seguenti attivano il repository EPEL (Extra Packages for Enterprise Linux) necessario per l’installazione di Certbot, la routine per la gestione dei certificati digitali Let’s Encrypt. È installato anche il plugin Nginx corretto:

sudo dnf install epel-release -y
sudo dnf install certbot python3-certbot-nginx -y

Il comando seguente invoca Certbot e permette l’ottenimento di un certificato digitale per il nome a dominio configurato in precedenza:

sudo certbot --nginx

Certificato digitale HTTPS Nginx

Adesso, digitando https:// seguito dal nome a dominio specificato in precedenza, la connessione a WordPress avverrà utilizzando unicamente una connessione sicura HTTPS. Le richieste indirizzate verso indirizzi HTTP sono automaticamente girate ai corrispondenti URL HTTPS.

Ti consigliamo anche

Link copiato negli appunti