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.
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 😊
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.
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
- Trovate i vostri server di nomi attivi su https://www.whatsmydns.net/#NS/example.com
- Se si utilizza il NS predefinito del precedente Hosting o registrar di dominio, è necessario sostituirlo con Cloudflare.
- Imparare a usare il DNS di Cloudflare
Parte B: Preparare un server Ubuntu 22.04 LTS
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.
⚡ 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
3.Scegliere il tipo di server
Scegliete Cloud Compute per una CPU condivisa a prezzi accessibili.
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.
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.
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
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.
6. Scegliere la dimensione del server
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.
7. Abilita IPV6, Backup
8. Aggiungere una chiave SSH
Si tratta di un passaggio consigliato e facoltativo per una maggiore sicurezza.
- 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.
- 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.
- 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.
9. Collegare la regola del firewall web all’istanza del server
- Fare clic su Gestisci e creare un nuovo gruppo Firewall.
- Consentire la porta TCP 22 per SSH. 80 per HTTP e 443 HTTPS per le regole IPV4 e IPV6.
- Una volta fatto, collegare il gruppo Firewall all’istanza.
10. Inserite il nome host e l’etichetta facendo clic su Deploy Now
A questo punto, si vedrà l’installazione nel progresso
11. Andare alla pagina Nuova istanza
Copiare l’indirizzo IP, il nome utente e la password. La porta predefinita è la 22.
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.
- Modificare il file di configurazione
nano /etc/ssh/sshd_config
- Trova (CTRL + W) e ricerca
PasswordAuthentication
- Modificare il valore da sì a no
- Per salvare digitare, CTRL + O
- Riavviare il servizio SSH con il comando
sudo service ssh restart
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 root@192.168.1.1 -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 = "your-cloudflare-email@example.com"
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
- Sostituire example.com con il proprio dominio
- 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 Type | Name | Value |
---|---|---|
A | @ | IPV4 Address |
AAAA | @ | IPV6 Address |
CNAME | www | example.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
- Assicurarsi di utilizzare un plugin per la cache delle pagine per tenere sotto controllo il carico del server. Trattandosi di uno stack LAMP, vi consiglio WP Fastest Cache.
- Conservare sempre un backup.
- Utilizzate i servizi del plugin SMTP per l’invio di e-mail in uscita da WordPress, altrimenti non sarete in grado di ricevere il link per la reimpostazione della password e il modulo di contatto 7.
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!