Installare WordPress con Ubuntu 22.04, Apache2, MariaDB e PHP 8.2-FPM

Se avete intenzione di ospitare WordPress su Cloud Server, questa guida vi sarà utile. LAMP è l’acronimo di Linux, Apache, MariaDB e PHP, che combinati insieme sono noti come LAMP stack.

WordPress Apache2 Install

Pro e contro della scelta del server web Apache rispetto a NGINX

  • Pro: Supporta il file .htaccess, comunemente usato da molti per la cache e l’ottimizzazione delle pagine. È un’ottima scelta per i non-codificatori.
  • Contro: È leggermente meno performante di NGINX, ma può essere gestito con APO. Per un sito ad alto traffico, lo stack LEMP è la scelta migliore.

Seguite questi 3 passaggi e guardate il video. Avete bisogno di aiuto? Contattatemi 😊

  1. Impostazione del DNSCloudflare
  2. Ottenere Ubuntu Server
  3. Distribuzione dello stack LAMP

Prima di iniziare, ecco un consiglio veloce. Utilizzate l’estensione Cerca e sostituisci per cambiare in blocco example.com con il vostro dominio in questa pagina web.

Suggerimento per risparmiare tempo agli utenti di Google Chrome.
search replace

Parte A: Mantenere attivi i server dei nomi Cloudflare

Utilizzeremo il DNS di Cloudflare per ottenere il certificato SSL Wildcard di Let’s Encrypt. Completate prima questo passaggio per godere di una migrazione a tempo zero.

Controllare i server dei nomi correnti

Parte B: Preparare un server Ubuntu 22.04 LTS

Ubuntu
Logo Ubuntu

1. Iscriviti a Vultr per ottenere 100 dollari di crediti gratuiti (valido per 14 giorni)

Come persona che ha provato molte aziende di server cloud, la mia esperienza dice che non si può sbagliare con Vultr. Questi ragazzi sono genuini e premurosi quando si tratta di supporto e servizi.

vultr

⚡ Prestazioni

  • AMD EPYC™ di terza generazione
  • NVME / SSD
  • CPU fino a 4 GHz
  • Velocità di rete fino a 5Gbps
  • Datacenter in America, Europa, Asia, Austraillia
  • Pronto per l’IPV6

💡 Caratteristiche

  • Cruscotto facile da usare per i principianti
  • Un solo clic per creare un’istantanea
  • Backup automatico (a pagamento)
  • Firewall cloud gratuito
  • Protezione DDoS (a pagamento)
  • Virtualizzazione KVM al 100%

⚙Supporto

  • PayPal/Carta
  • Assistenza biglietti 24 ore su 24, 7 giorni su 7
  • Documentazione

2. Deloy un nuovo server

Basta fare clic sul pulsante più per iniziare

Deploy New Server

3.Scegliere il tipo di server

Scegliete Cloud Compute per una CPU condivisa a prezzi accessibili.

Cloud Compute

Successivamente, è possibile selezionare l’opzione AMD High Performance o Intel High Frequency in CPU & Storage Technology. Questa opzione offre la CPU e il disco NVMe più veloci in assoluto. Se il budget a disposizione è inferiore, si può optare per il piano Regular con CPU Intel, che offre un disco SSD.

CPU Technology

4. Scegliere la posizione del server

Vultr offre server nei quattro continenti. Per ottenere la latenza più bassa e le migliori prestazioni, si dovrebbe sempre scegliere la regione più vicina al proprio pubblico.

vultr server region

Ad esempio, se il 99% del traffico proviene dall’Europa, scegliere la regione più vicina – Londra, Regno Unito.

Asia

  • Mumbai, India
  • Delhi NCR, India
  • Bengaluru, India
  • Singapore, Singapore
  • Tokyo, Giappone
  • Seul, Corea del Sud

America

  • Miami, Stati Uniti
  • Atlanta, Stati Uniti
  • Chicago, Stati Uniti
  • Dallas, Stati Uniti
  • Honolulu, Stati Uniti
  • Los Angeles, Stati Uniti
  • Città del Messico, Messico
  • New York (NJ), Stati Uniti
  • Seattle, Stati Uniti
  • Silicon Valley, Stati Uniti
  • Toronto, Canada, San Paolo

Europec

  • Stoccolma, Svezia
  • Londra, Regno Unito
  • Amsterdam, Paesi Bassi
  • Francoforte, Germania
  • Madrid, Spagna
  • Parigi, Francia
  • Varsavia, Polonia

Australlia

  • Sydney, Australia
  • Melbourne, Australia

5. Selezionare l’immagine del server > Sistema operativo > Ubuntu 22.04 LTS x64

ubuntu os

Il supporto a lungo termine (LTS) è una politica di gestione del ciclo di vita del prodotto che prevede il mantenimento di una release stabile del software per computer per un periodo di tempo più lungo rispetto all’edizione standard.

ubuntu releases 2

6. Scegliere la dimensione del server

server size

Il piano da 6$/mese è un ottimo punto di partenza per un nuovo blog. È possibile effettuare l’upgrade in qualsiasi momento in base alle esigenze.

Suggerimento: Se si sta effettuando una migrazione, controllare la dimensione totale dell’installazione in Informazioni sullo stato del sito.

Site health info

7. Abilita IPV6, Backup

vultr enable backup ipv6

8. Aggiungere una chiave SSH

Si tratta di un passaggio consigliato e facoltativo per una maggiore sicurezza.

Add SSH key
  • Fare clic sul pulsante Aggiungi nuovo per aggiungere una nuova chiave SSH per inviare la chiave 🔒 pubblica.
  • Generare le chiavi utilizzando il metodo seguente in base al proprio sistema operativo.
win os
  • Scaricare l’applicazione PuTTy.
  • Cercare PuTTygen nel menu Start
  • Fare clic sul pulsante Genera e passare il puntatore del mouse su di esso
  • Copiare la chiave pubblica e fornirla a Vultr
  • Inserire la passphrase della chiave
  • Salvate la 🔑Private Key nel luogo più sicuro.
  • Può essere utilizzato per il login a SSH o SFTP.
linux 2
  • Eseguire: ssh-keygen -t rsa. Per una chiave più sicura a 4096 bit, eseguire: ssh-keygen -t rsa -b 4096
  • Quando vi viene chiesto dove volete salvare la chiave, premete Invio (verrà utilizzata la posizione predefinita).
  • Inserire una passphrase per la chiave.
  • Eseguite cat ~/.ssh/id_rsa.pub – questo vi darà la chiave nel formato corretto da incollare nel pannello di controllo.
  • Assicurarsi di eseguire un backup del file ~/.ssh/id_rsa. Questo non può essere recuperato se viene perso.

Selezionare la chiave SSH

Seguendo questi passaggi, la chiave pubblica verrà collegata alla nuova istanza. Quindi, sarà possibile accedere a SSH utilizzando sia la password in chiaro che la chiave SSH.

select SSH public key

9. Collegare la regola del firewall web all’istanza del server

Firewall
  1. Fare clic su Gestisci e creare un nuovo gruppo Firewall.
  2. Consentire la porta TCP 22 per SSH. 80 per HTTP e 443 HTTPS per le regole IPV4 e IPV6.
  3. Una volta fatto, collegare il gruppo Firewall all’istanza.
firewall status
Accetta la connessione TCP solo da 22, 80, 443
Link Firewall Group
Link firewall rule to new instanceCollegare la regola del firewall alla nuova istanza

10. Inserite il nome host e l’etichetta facendo clic su Deploy Now

server hostname label

A questo punto, si vedrà l’installazione nel progresso

Instance Installing

11. Andare alla pagina Nuova istanza

Copiare l’indirizzo IP, il nome utente e la password. La porta predefinita è la 22.

new instance info page

12. Disabilitare la password di accesso

Per motivi di sicurezza, si consiglia di disabilitare l’autenticazione tramite password e di consentire solo l’autenticazione tramite chiave.

  1. Modificare il file di configurazione nano /etc/ssh/sshd_config
  2. Trova (CTRL + W) e ricerca PasswordAuthentication
  3. Modificare il valore da sì a no
  4. Per salvare digitare, CTRL + O
  5. Riavviare il servizio SSH con il comando sudo service ssh restart
disable password auth
Disattivare l’autenticazione con password

A partire dalla prossima volta, è possibile utilizzare SSH solo tramite chiave, come mostrato nel video.

Per Linux o Mac, utilizzare il Terminale con un comando come questo

ssh [email protected] -p 22 -i id_rsa

Step 13. Disattivare UFW

Quando si distribuisce una nuova istanza su VULTR, viene fornita con UFW (Uncomplicated Firewall) abilitato che mantiene tutte le porte bloccate tranne la porta 22 di SSH. Questo può restituire l’errore ERR_CONNECTION_REFUSED nel browser. Per risolvere il problema, suggerisco di disattivare UFW.

ufw disable

Ora accelererò il processo originale di distribuzione di WordPress sullo stack LAMP.

Parte C. Installare WordPress su uno stack LAMP

1. Aggiornare i repository

Digitare il comando seguente e premere il tasto Invio

sudo -s
apt update && apt upgrade -y && apt dist-upgrade && apt autoclean && apt autoremove -y && reboot

o

wget -qO update https://dl.gulshankumar.net/update && chmod +x update

La prossima volta, utilizzate sempre il comando di scelta rapida sottostante per aggiornare.

./update

2. Installare MariaDB con sicurezza

Effettuare nuovamente il login e inserire il seguente comando

sudo apt install mariadb-server -y && sudo mysql_secure_installation

Rispondere alle seguenti domande

  • Enter current password for root (enter for none): Premere il tasto Invio
  • Switch to unix_socket authentication [Y/n]: Risposta N
  • Set root password? [Y/n]: Premere il tasto Invio
  • New password: Digitare la password, che può essere generata con Dashlane. Fare clic con il tasto destro del mouse su incolla.
  • Re-enter new password: Digitare nuovamente la password.

Dopo aver impostato con successo la password, si vedrà

Password updated successfully!
Reloading privilege tables..
... Success!

Inoltre, è necessario rispondere alle seguenti domande.

Remove anonymous users? [Y/n]: Premere Y e immettere
Disallow root login remotely? [Y/n]: Premere Y e immettere
Remove test database and access to it? [Y/n]: Premere Y e immettere
Reload privilege tables now? [Y/n]: Premere Y e immettere

3. Creare un nuovo database per WordPress

Creare un nuovo database per WordPress

mysql -u root -p

Creare un nuovo database e concedere i privilegi all’utente con password. È qui che WordPress memorizza tutti i post, le pagine, i temi, i plugin e così via.

create database wordpress;
grant all on wordpress.* to gulshan@localhost identified by '5pY8CKJxDRJEGQNkX7';
flush privileges;
exit;

Dove il vostro …
il database è wordpress
il nome username è gulshan
la password è 5pY8CKJxDRJEGQNkX7

Suggerimento: Considerare l’utilizzo di credenziali di accesso uniche

4. Installare PHP 8.2, Apache2 e impostare le autorizzazioni

Attualmente, PHP 8.2 è l’ultima versione stabile. Se si desidera utilizzare una versione PHP diversa, assicurarsi di mantenerla in tutti i comandi elencati di seguito.

sudo add-apt-repository ppa:ondrej/php -y && apt update && apt install php8.2-fpm php8.2-common php8.2-mysql php8.2-xml php8.2-xmlrpc php8.2-curl php8.2-gd php8.2-imagick php8.2-cli php8.2-dev php8.2-imap php8.2-mbstring php8.2-soap php8.2-zip php8.2-bcmath -y && sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/8.2/fpm/php.ini && service php8.2-fpm restart && apt install apache2 -y && chown -R www-data:www-data /var/www/ && chmod -R 755 /var/www/

Modificare la configurazione di PHP

La maggior parte dei temi e dei plugin di fantasia richiede una configurazione PHP di alto livello per funzionare. Pertanto, è necessario apportare queste modifiche.

sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 128M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_file_uploads = 20/max_file_uploads = 30/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 900/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_input_time = 60/max_input_time = 3000/g' /etc/php/8.2/fpm/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/g' /etc/php/8.2/fpm/php.ini
service php8.2-fpm restart

5. Installare il certificato SSL Wildcard Let’s Encrypt

Creare un file cloudflare.ini all’interno della directory /root/.secrets/.

mkdir -p /root/.secrets/ && cd /root/.secrets/ && nano cloudflare.ini

Aggiungere il codice seguente e salvare con CTRL+O e uscire con CTRL+X.

dns_cloudflare_email = "[email protected]"
dns_cloudflare_api_key = "XXXXXXXXXXXXXXXXX"

Trovate l’e-mail di Cloudflare e la chiave API globale in “Il mio profilo” > Token API > Chiave API globale

chmod 0400 /root/.secrets/cloudflare.ini

Installare Certbot e DNS Authenticator in base al sistema operativo e al server web HTTP

apt install snapd -y
snap install --beta --classic certbot
snap set certbot trust-plugin-with-root=ok
snap install --beta certbot-dns-cloudflare
snap connect certbot:plugin certbot-dns-cloudflare

Ottenere un certificato SSL Wildcard

certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d example.com,*.example.com --preferred-challenges dns-01

Impostare il rinnovo automatico con Cron Job

  • Digitare crontab -e
  • Tipo 1 per l’editor nano
  • Inserite il comando seguente e salvate
0 0 * * *  /etc/init.d/apache2 reload >/dev/null 2>&1

Rinnovo del test

certbot renew --dry-run

Attivate questi utili moduli

a2enmod proxy_fcgi ssl http2 expires headers rewrite remoteip
systemctl restart apache2

6. Creare una directory di app per ogni sito WordPress che si desidera installare.

mkdir -p /var/www/example.com/public

Questo sarà il percorso della radice del documento nel file di configurazione di Apache. Il motivo per cui ho creato example.com all’interno di www è per mantenere ogni sito organizzato in modo ottimale. In secondo luogo, ho creato anche una cartella pubblica, con l’obiettivo di mantenervi tutti i file principali di WordPress, ma wp-config.php a un livello superiore (/var/www/example.com/).

7. Creare la configurazione di Apache2

È importante quando si deve configurare il dominio, come Apache2 deve gestire le richieste HTTP.

Cancellare i file di configurazione dei blocchi server predefiniti di Apache2

rm /etc/apache2/sites-available/000-default.conf
rm /etc/apache2/sites-available/default-ssl.conf
rm /etc/apache2/sites-enabled/000-default.conf
source /etc/apache2/envvars

Ora, create un nuovo blocco di file di configurazione del server. È necessario eseguire questo passaggio ogni volta che si desidera aggiungere un nuovo WordPress allo stesso server.

Sostituire example.com con il proprio dominio e non dimenticare di terminare il nome del file di configurazione con l’estensione .conf. Altrimenti non funzionerà.

cd /etc/apache2/sites-available/
nano example.com.conf
  1. Sostituire example.com con il proprio dominio
  2. Immettere il codice sottostante e premere CTRL + O per salvare e CTRL + X per uscire.
##############################################################
#                                                               
# NOTE: Si prega di effettuare la ricerca e la sostituzione di example.com con il proprio dominio.
#                                                                
##############################################################


# Forzeremo HTTPS non-www
# Se si desidera un www HTTPS, mantenere https://www.example.com/ nell'ultima riga.
# Oppure potrebbe verificarsi un problema di loop di reindirizzamento.

<VirtualHost *:80>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Protocols h2 h2c http/1.1
   DirectoryIndex index.php index.html
    
   # Consigliato agli utenti di Cloudflare
   # RemoteIPHeader X-Forwarded-For
   
   # Percorso della radice del documento (prestare attenzione a questo percorso per evitare 404)
   DocumentRoot /var/www/example.com/public
   
   # Il percorso dei registri è /var/log/apache2/example.com-access.log
   ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
   CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
   
   # Let's Encrypt SSL
   SSLEngine On
   SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
   
   #  Consentire l'uso del file .htaccess per sovrascrivere la configurazione
   <Directory /var/www/example.com/public>
     Options FollowSymLinks
     AllowOverride All
     Require all granted
   </Directory>
   
   # Bloccare l'esecuzione di PHP all'interno della directory dei caricamenti
   <Directory /var/www/example.com/public/wp-content/uploads>
    <Files *.php>
      deny from all
    </Files>
   </Directory>
   
   # Proteggere wp-config.php
   <files wp-config.php>
      order allow,deny
      deny from all
   </files>

  # HTTP Auth per una maggiore sicurezza
  # Se volete l'HTTP Auth per la pagina di login di WordPress, considerate di decommentare questo blocco di codice.
  # Se lo fate, dovete generare anche il file .htpasswd.
  # <Files wp-login.php>
  #  AuthName "Admins Only"
  #    AuthUserFile /var/www/.htpasswd
  #   AuthType basic
  #    require user gulshan
  #   <RequireAny>
  #      Require ip 127.0.0.1
  #       Require valid-user
  #   </RequireAny>
  # </Files>
   
   # Bloccare XML-RPC per prevenire gli attacchi DDoS. 
   <Files xmlrpc.php>
      Order Deny,Allow
      Deny from all
   </Files>
   
   # Gestire l'esecuzione di PHP
   <FilesMatch ".php$">
      SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"
   </FilesMatch>
</VirtualHost>

Per salvare, premere CTRL+O e Invio. Quindi, uscire dall’editor nano usando il comando CTRL+X.

Per attivare il blocco del server, immettere il comando

Prima di eseguire il comando seguente, sostituire example.com con il proprio dominio.

a2ensite example.com.conf

Configurazione del test (opzionale)

apache2 -t

Riavvio e aggiornamento

service apache2 restart && service php8.2-fpm restart && service mysql restart && apt-get update && apt upgrade -y

8. Installare i file di WordPress

Scaricare i file di WordPress nella directory /var/www/example.com/public/ e impostare i permessi.

cd /var/www/example.com/public/ && wget https://it.wordpress.org/latest-it_IT.tar.gz && tar -xvzf latest-it_IT.tar.gz && mv -v wordpress/* /var/www/example.com/public/ && rm -rf latest-it_IT.tar.gz wordpress && chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

Per aggiornare i permessi in futuro, utilizzare il comando seguente. Questo imposterà www-data per tutto ciò che si trova all’interno della cartella /var/www/

chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

9. Aggiornamento del DNS

Se state ospitando WordPress in locale, volete bypassare il proxy o volete eseguire una migrazione senza tempi di inattività, questo passaggio è utile. In genere, preferisco l’area statica di WordPress Dev.😉

  • Ci sono due modi per puntare il DNS. Se si sta migrando un sito su Vultr e si vuole fare un test in locale, si può modificare il file hosts e puntare lì.

Per Windows

  • Vai alle proprietà di ‪‪C:\Windows\System32\drivers\etc\hosts
  • Modificare l’autorizzazione “Sicurezza” in controllo completo per il nome utente corrente.
  • Ora è possibile modificare liberamente il file hosts sotto il proprio utente di sistema e salvarlo.
# Per la stessa macchina si può avere un indirizzo localhost oppure un IP pubblico.
127.0.0.1 example.com
127.0.0.1 www.example.com

Un esempio, ecco come dovrebbe apparire

Per Mac o Linux

È possibile modificare il file hosts utilizzando questo comando con l’utente sudo.

sudo nano /etc/hosts

Aggiornamento del DNS con Cloudflare

  • If everything looks perfect and you want to make your site live, Login to Cloudflare DNS and update new IP.
Record TypeNameValue
A@IPV4 Address
AAAA@IPV6 Address
CNAMEwwwexample.com

where @ denotes root domain example.com

9. Visit your domain name to setup WordPress

Se si desidera mantenere il dominio della versione non www per il proprio WordPress, visitare la versione non www altrimenti www.

https://example.com
  • Fornire le credenziali di accesso al database per iniziare l’installazione di WordPress.
  • Eseguire l’installazione
  • Compilate i dati di base del vostro nuovo sito e installate WordPress.
  • Accesso a WordPress

Altre cose necessarie

  • Increase the Swap Memory to deal with sudden load
swapoff -a
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Infine, l’installazione di WordPress è stata completata.

Vi ringrazio molto per il tempo che avete dedicato alla lettura di questo articolo. Ci vediamo nel prossimo tutorial!

Lascia un commento