Il primo passo, prima di installare Magento 2 alla versione attuale (2.4.5) è consultare i requisiti di sistema sulla documentazione ufficiale per capire quali versioni dei software di terze parti sono state testati con la versione di magento che si intende installare.
Scegliere la versione di magento da installare
Nel mio caso, ho scelto l’ultima versione disponibile di magento (nel momento in cui sto scrivendo), la 2.4.5.
Come possiamo notare dai requisiti di sistema è possibile installare Magento su diverse architetture, ma in questo caso utilizzeremo lo stack LAMP con una configurazione minimale.
Creiamo un webserver con le seguenti caratteristiche: | Versione |
---|---|
Ubuntu | 22.04 |
Apache | 2.4 |
MySQL | 8.0 |
PHP | 8.1 |
Postfix | |
Elasticsearch | 7.17 |
Creazione di un server
Come prima cosa, abbiamo bisogno di una macchina dove far girare l’architettura che sosterrà Magento 2, in questo esempio userò DigitalOcean come provider che mi ha permesso di avere una macchina pronta in meno di un minuto.
Ho scelto il sistema operativo Ubuntu 20.04 utilizzando il pacchetto Basic $ 24/mese: include 4 GB di memoria, 2 CPU e 80 GB di spazio di archiviazione.
Creazione User
Dopo esserci loggati nella shell come root è buona pratica creare un “superuser” che possiamo utilizzare al posto dell’utente “root” per svolgere le nostre attività, questo garantisce una maggior sicurezza sia contro gli attacchi bruteforce che contro gli errori accidentali, dato che per avere maggiori privilegi dobbiamo scrivere la keyword sudo davanti.
Assegniamo all’utente i privilegi di superuser aggiungendolo al gruppo “sudo”
Usciamo dalla shell e facciamo login con il nuovo utente
Disabilitare l’utente root per ragioni di sicurezza
Dopo esserci loggati nella shell come superuser (in questo caso con l’utente donato), per ragioni di sicurezza è importante disabilitare l’utente root, per farlo ci basterà lanciare un editor che vada ad aprire il file sshd_config
Cercare la linea che contiente : “PermitRootLogin yes” e cambiarla in “PermitRootLogin no”, salvare il file e chiudere.
Per rendere effettive le modifiche bisogna riavviare il servizio SSH, per farlo basterà lanciare
In questo modo non sarà possibile fare login con root
Abilitare un firewall di base
Ufw è l’applicazione predefinita in Ubuntu per la configurazione del firewall, ci consente di creare in modo semplice di creare un firewall basato su protocolli IPv4 e IPv6. Per consentire il servizio ssh, lanciare il comando:
Una volta creata la nuova regola, basterà lanciare il firewall digitando:
Aggiornamento dei repository
Per aggiornare la lista dei pacchetti contenuti nei repository
(confronta l’archivio locale con quelli remoti, aggiornandolo in modo tale che sia allineato con quelli remoti; è l’operazione preliminare da eseguire sempre prima di fare un sudo apt-get upgrade)
Installare Apache e configurarlo per Magento
Per convertire il server in un web server possiamo usare apache o nginx, in questo esempio utilizzeremo Apache.
Una volta aggiornato il repository, per installare apache basterà lanciare
Apri il file di configurazione Apache (000-default.conf) per consentire i file .htaccess nella directory web, lanciamo quindi l’editor nano con i privilegi di superuser:
Per abilitare l’override della configurazione in modo che l’htaccess di magento possa sovrascrivere la configurazione di Apache. In pratica senza override l’htaccess di magento non funzionerà.
Quindi per creare questa regola, in fondo al file scriviamo:
<Directory "/var/www/html">
AllowOverride All
</Directory>
Il passo successivo è aprire il file di configurazione di Apache ed impostare il Global ServerName con l’ip del server (solitamente viene indicato il dominio, ma in questo caso non abbiamo un dominio, quindi useremo l’ip del server)
In fondo al file scriviamo la regola ServerName con l’indirizzo ip del server:
ServerName 46.101.202.134
Per controllare eventuali errori di sintassi che potremmo aver fatto lanciamo:
Per abilitare la riscrittura di Apache (questo risolve la maggior parte degli errori 404 post-installazione):
Per riavviare Apache e rendere effettive le modifiche:
Per abilitare Apache attraverso il firewall che abbiamo abilitato in precedenza lanciamo
Per testare se tutto è andato a buon fine, ci basterà visitare l’indirizzo del sito.
Installare PHP e tutte le dipendenze necessarie per Magento 2.4
Magento richiede l’installazione di PHP e di molte estensioni PHP , possiamo verificare tutte le dipendenze necessarie per Magento 2.4. Per installare PHP e tutte le dipendenze necessarie al funzionamento di magento, lanciamo:
Una volta installato PHP e tutte le dipendenze utili, dobbiamo dire al web server di prefeire i file PHP, per farlo ci basterà editare il file dir.conf di Apache e “cambiare posizione” tra l’estensine .html e .php
Il passo successivo è settare la Timezone ed aumentare il limite di memoria php nel file di configurazione di Apache php.ini, quindi modifichiamo il file con l’editor lanciando:
- Scorriamo fino a : date.timezone, rimuoviamo il commento e impostiamo date.timezone = Europe/Rome
- Scorriamo fino a : “memory_limit” e sostituituiamo “128M” con il valore esatto. In questo caso, abbiamo un server con 4GB di ram e possiamo impostare come valore massimo memory_limit = 4G
Salviamo il file e riavviamo il servizio apache lanciando:
Installare MySQL
Per installare MySQL ci basterà lanciare
Il prossimo passo sarà mettere in sicurezza MySQL modificando alcune delle opzioni predefinite meno sicure per cose come accessi root remoti e utenti di esempio.
subito dopo lanciamo
e rispondiamo alle domande che ci vengono poste:
- Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
- Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
- Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
- Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Installare phpMyAdmin
phpMyAdmin non è obbligatorio, ma rende la vita più semplice quando dobbiamo interagire con il database, questo perchè ci fornisce una pagina web semplificata per l’uso del database, Se invece preferisci usare il CLI puoi non installarlo.
Durante l’installazione ci verranno poste alcune domande, ricordati di selezionare apache2 con la barra spaziatrice, ti verrà chiesto poi di inserire la password per phpmyadmin.
Inserisci poi la pass
Possiamo ora accedere a phpmyadmin all’indirizzo http://46.101.202.134/phpmyadmin/
e rispondiamo alle domande che ci vengono poste:
- Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
- Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
- Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
- Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Creazione del Database per installare Magento
Come detto in precedenza, phpMyAdmin non è necessario, ma possiamo utilizzarlo per semplificare le operazioni da svolgere con il db, come ad esempio in questo caso, dove abbiamo bisogno di creare un utente e un database da utilizzare per magento.
- Andiamo su http://ipserver/phpmyadmin
- Accediamo con le credenziali di root MySQL
- Facciamo click su Account utenti
- Quindi fare clic su Aggiungi account utente
- Inseriamo un nome utente: lo chiamerò dongento
- Cambiamo il nome dell’host in Locale
- Creiamo una password
- Mettiamo la spunta su “Crea un database con lo stesso nome e concedi tutti i privilegi.”
- Clicchiamo su esegui
Abbiamo quindi creato un utente MySQL che ha accesso al solo database di sua proprietà.
Installazione di Postfix per le email
Postfix è un applicativo per la gestione del servizio SMTP. In questo caso ci servirà per ricevere via email il 2FA durante l’installazione di magento. Faremo quindi il minimo necessario affinché funzioni.
Per installare postfix digitiamo quindi:
Apriamo il file di configurazione di postfix
Rimpiazziamo:
inet_interfaces = all
con:
inet_interfaces = loopback-only
Riavviamo il servizio postfix
Installare Elasticsearch
A partire da Magento 2.4.0 è richiesto come motore di ricerca Elasticsearch oppure Opensearch come motore di ricerca del catalogo.
Elasticsearch necessita dello Java Development Kit per funzionare, quindi iniziamo installandolo:
Scarichiamo Elasticsearch 7.6.0 lanciando:
Controlliamo l’integrità dei file scaricati (in modo da capire se sono compromessi) eseguendo il comando:
Se il risultato è OK, riceveremo un messaggio simile :
elasticsearch-7.6.0-amd64.deb: OK
La configurazione finale consiste nell’aggiungere il file scaricato al gestore di pacchetti del sistema operativo, per farlo lanciamo:
Autorun Elasticsearch
Ora che abbiamo installato elasticsearch, è importante che esso venga eseguito automaticamente ogni volta che il server viene riavviato.
Il Primo passo è ricaricare la configurazione del gestore systemd lanciando:
Aggiungere Elasticsearch alla lista dei servizi che si avviano all’avvio del sistema
Lanciamo elasticsearch
Testiamo se è andato a buon fine, eseguendo:
Configura Elasticsearch
Iniziamo aprendo il file di configurazione di Elasticsearch lanciamo quindi:
- Togliamo il commento da cluster.name e indichiamo un nome descrittivo, ad esempio: Magento Cluster
- Togliamo il commento da node.name e indichiamo un nome descrittivo, ad esempio: Magento Node
- Togliamo il commento da network.host e indichiamo come ip: localhost
Salviamo e riavviamo elasticsearch, lanciando
Se tutto è andato bene, possiamo scoprirlo lanciando
Crea un user per Magento
Come abbiamo visto, in precedenza per motivi di sicurezza abbiamo disabilitato l’utente root, creato un utente con i privilegi di superuser ed ora per limitare ancora di più le possibili problematiche legate alla sicurezza creiamo un altro utente che non ha tali privilegi, questo sarà l’utente che useremo per Magento, per i trasferimenti FTP etc…
Provvediamo quindi a creare l’utente (lo chiameremo ad esempio dogento) digitando
Inseriamo l’utente all’interno del gruppo www-data (Il gruppo Apache predefinito in Ubuntu è www-data), quindi digitiamo
Aggiornare i permessi della cartella
Apache durante l’installazione ha creato automaticamente una directory web per archiviare i file /var/www/html , ma è stato creato con l’utente predefinito noto come www-data (o anche root). Il nostro scopo è assegnare all’utente dogento (utente normale) la proprietà della cartella , in modo che possa modificare i file ed operare in modo corretto.
Per aggiornare la proprietà della cartella e il gruppo in modo che coincidano con il nostro nuovo utente web, basterà digitare:
Installare composer
Composer è gestore di pacchetti che ci consente di accedere e scaricare file compressi da vari repository. Non solo possiamo accedere e scaricare Magento, ma molti sviluppatori di terze parti consigliano di installare le loro estensioni in questo modo, invece di scaricare tradizionalmente un file zip e caricarlo tramite FTP.
Per installare composer ci basterà lanciare
spostiamo composer nella cartella giusta:
Scaricare Magento 2.4.5 tramite composer
Dopo aver scaricato composer, possiamo scaricare magento nella versione desiderata, in questo caso la 2.4.5
Dirigiamoci quindi nella web directory del nostro server:
Switchiamo dal superuser (donato) all’utente dogento che abbiamo creato poco fà:
Affinché Composer funzioni, deve essere eseguito da una directory vuota, altrimenti genererà un errore. Tuttavia, la directory web in cui ci troviamo ora non è vuota poiché quando abbiamo installato Apache, ha creato un file (index.hml) che ora deve essere rimosso. Quindi rimuoviamo il file
Il prossimo passo è dire a composer di installare l’ultima versione di Magento (in questo momento è la 2.4.5). Durante l’installazione, ci verrà chiesto un l’username (public Key) e password (private key) reperibili sul sito ufficiale e se vogliamo salvare le credenziali.
Lanciamo quindi l’installazione di Magento 2.4.5 tramite composer digitanto:
N.B. prestiamo attenzione al punto finale, poichè indica che l’installazione di magento deve essere scaricata all’interno di QUESTA cartella.
Una volta avviato, il processo può richiedere da 5 a 10 minuti.
Settare i permessi corretti prima dell’installazione
Per assicurarci che Magento possa accedere a tutti i file e le cartelle necessarie, impostiamo i permessi giusti per file e cartelle digitando questi 4 comandi :
Installazione di mangeto tramite CLI
Possiamo installare magento via linea di comando, settando tutti i parametri che ci interessano, troviamo la lista sulla documentazione ufficiale. Nel nostro caso setteremo tutti i parametri necessari e qualcuno non strettamente necessario:
Alla fine dell’installazione, verrà mostrato l’url del backend generato automaticamente
Aggiornare memory_limit
Per impostazione predefinita, Magento utilizza 756MB di RAM disponibile del server web. Questo di solito rallenta Magento e può generare alcuni errori. Per incrementare la memoria disponibile apriamo il file .htaccess e sostituiamo in corrispondenza di php_value memory_limit 756MB con 2G
Quindi apriamo un editor e modifichiamo il file:
Installare i Cron Tasks
Il passo successivo è impostare i cron, cioè delle attività pianificate che devono essere eseguite in background, essi aiutano con attività come indicizzazione, backup, aggiornamenti e così via.
Per installare i cron, ci basterà lanciare
Quanto tempo occorre per installare Magento?
La risposta è Dipende dall’uso, dai servizi da installare / configurare, dalla sicurezza e dalle performance da ottenere.
Un’installazione non complessa su un unico server e per un ambiente di sviluppo (come nell’esempio sopra) occorrono circa 45minuti.