Come installare Magento 2.

Come installare Magento 2.

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
Ubuntu22.04
Apache2.4
MySQL8.0
PHP 8.1
Postfix
Elasticsearch 7.17

indice

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.

adduser donato
Aggiungere utente

Assegniamo all'utente i privilegi di superuser aggiungendolo al gruppo "sudo"

usermod -aG sudo donato

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

sudo nano /etc/ssh/sshd_config

Cercare la linea che contiente : "PermitRootLogin yes" e cambiarla in "PermitRootLogin no", salvare il file e chiudere.

disabilitare utente root

Per rendere effettive le modifiche bisogna riavviare il servizio SSH, per farlo basterà lanciare

sudo systemctl reload sshd

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:

sudo ufw allow ssh

Una volta creata la nuova regola, basterà lanciare il firewall digitando:

sudo ufw enable
Firewall basilare ubuntu

Aggiornamento dei repository

Per aggiornare la lista dei pacchetti contenuti nei repository

sudo apt update

(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)

Aggiornare repository

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

sudo apt install apache2 -y

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:

sudo nano /etc/apache2/sites-available/000-default.conf

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)

sudo nano /etc/apache2/apache2.conf

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:

sudo apache2ctl configtest

Per abilitare la riscrittura di Apache (questo risolve la maggior parte degli errori 404 post-installazione):

sudo a2enmod rewrite

Per riavviare Apache e rendere effettive le modifiche:

sudo systemctl restart apache2

Per abilitare Apache attraverso il firewall che abbiamo abilitato in precedenza lanciamo

sudo ufw allow 'Apache Full'

Per testare se tutto è andato a buon fine, ci basterà visitare l'indirizzo del sito.

Apache installato configurato

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:

sudo apt install php8.1 libapache2-mod-php8.1 php8.1-mysql php8.1-soap php8.1-bcmath php8.1-xml php8.1-mbstring php8.1-gd php8.1-common php8.1-cli php8.1-curl php8.1-intl php8.1-zip zip unzip -y

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

sudo nano /etc/apache2/mods-enabled/dir.conf
Preferenza file 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:

sudo nano /etc/php/8.1/apache2/php.ini
  • 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:

sudo systemctl restart apache2

Installare MySQL

Per installare MySQL ci basterà lanciare

sudo apt install mysql-server -y

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.

sudo mysql_secure_installation

subito dopo lanciamo

sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'INSERISCI_PASSWORD'"

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.

sudo apt install phpmyadmin php8.1-mbstring php8.1-gettext -y

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.

Selezionare apache2

Inserisci poi la pass

sudo systemctl restart apache2

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.

  1. Andiamo su http://ipserver/phpmyadmin
  2. Accediamo con le credenziali di root MySQL
  3. Facciamo click su Account utenti
  4. Quindi fare clic su Aggiungi account utente
  5. Inseriamo un nome utente: lo chiamerò dongento
  6. Cambiamo il nome dell'host in Locale
  7. Creiamo una password
  8. Mettiamo la spunta su "Crea un database con lo stesso nome e concedi tutti i privilegi."
  9. Clicchiamo su esegui

Abbiamo quindi creato un utente MySQL che ha accesso al solo database di sua proprietà.

Creazione utente e Database

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:

sudo apt install mailutils -y

Apriamo il file di configurazione di postfix

sudo nano /etc/postfix/main.cf

Rimpiazziamo:

inet_interfaces = all 

con:

 inet_interfaces = loopback-only

Riavviamo il servizio postfix

sudo systemctl restart 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:

sudo apt install openjdk-8-jdk -y

Scarichiamo Elasticsearch 7.6.0 lanciando:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-amd64.deb && wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-amd64.deb.sha512 

Controlliamo l'integrità dei file scaricati (in modo da capire se sono compromessi) eseguendo il comando:

shasum -a 512 -c elasticsearch-7.6.0-amd64.deb.sha512

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:

sudo dpkg -i elasticsearch-7.6.0-amd64.deb

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:

sudo /bin/systemctl daemon-reload

Aggiungere Elasticsearch alla lista dei servizi che si avviano all'avvio del sistema

sudo /bin/systemctl enable elasticsearch.service

Lanciamo elasticsearch

sudo systemctl start elasticsearch

Testiamo se è andato a buon fine, eseguendo:

curl -X GET 'http://localhost:9200'
testare elasticsearch

Configura Elasticsearch

Iniziamo aprendo il file di configurazione di Elasticsearch lanciamo quindi:

sudo nano /etc/elasticsearch/elasticsearch.yml
  • 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

sudo systemctl restart elasticsearch

Se tutto è andato bene, possiamo scoprirlo lanciando

curl -X GET 'http://localhost:9200'
Testiamo Elasticsearch per magento

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

sudo adduser dogento

Inseriamo l'utente all'interno del gruppo www-data (Il gruppo Apache predefinito in Ubuntu è www-data), quindi digitiamo

sudo usermod -g www-data dogento

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:

sudo chown -R dogento:www-data /var/www/html/

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

sudo curl -sS https://getcomposer.org/installer | php

spostiamo composer nella cartella giusta:

sudo mv composer.phar /usr/local/bin/composer

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:

cd /var/www/html

Switchiamo dal superuser (donato) all'utente dogento che abbiamo creato poco fà:

su dogento

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

rm index.html

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:

composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.4.5 .

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 :

find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} + && find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} + && chown -R :www-data . && chmod u+x bin/magento

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:

bin/magento setup:install \
--base-url=http://46.101.202.134 \
--db-host=localhost \
--db-name=dongento \
--db-user=dongento \
--db-password='MaroCumJeBellStaPassword' \
--admin-firstname=Donato \
--admin-lastname=Pirolo \
--admin-email=donatopirolo@gmail.com \
--admin-user=donuser \
--admin-password=MaroCumJeBellStaPassword \
--language=it_IT \
--currency=EUR \
--timezone=Europe/Rome \
--use-rewrites=1

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:

nano pub/.htaccess

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

bin/magento cron:install

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.

Scritto da Donato Pirolo

Ciao, sono Donato, frontend developer con una smisurata passione per la SEO. Creo strumenti ad hoc per aiutare aziende e professionisti ad essere cercati sul web e trovare clienti.

Potrebbero interessarti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Copyright © 2022
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram