Ricerca nel sito web

Come installare il software di eCommerce Magento su Ubuntu 22.04


Magento è una piattaforma di eCommerce open source e ben nota scritta in PHP. Magento è una soluzione di eCommerce robusta e potente utilizzata da oltre 240.000 commercianti in tutto il mondo. Inizialmente, Magento viene creato come fork di osCommerce nel 2007 e nel maggio 2018 Magento viene acquisito da Adobe Inc e diventa Adobe eCommerce.

Magento è una piattaforma versatile e scalabile per la creazione di un negozio di e-commerce. È adatto per la creazione di negozi online di piccole, medie e grandi dimensioni. Magento ti consente di creare e ospitare i tuoi negozi online sul tuo server. Puoi creare negozi online senza alcuna conoscenza di programmazione, abilita la tua attività e porta la tua attività al livello successivo.

In questo tutorial installerai Magento eCommerce su Ubuntu 22.04. Installerai e configurerai le dipendenze Magento come Elasticsearch, Redis, PHP-FPM con server web Nginx, MySQL Server e Composer. Inoltre proteggerai l'installazione dell'eCommerce Magento con i certificati SSL di Letsencrypt.

Prerequisiti

Per completare e proseguire con questo tutorial, avrai bisogno di alcuni prerequisiti elencati di seguito:

  • Un server Ubuntu 22.04: questo esempio utilizza un server Ubuntu con nome host "magento-server" e indirizzo IP "192.168.5.100'.
  • Un utente non root con privilegi di amministratore sudo/root.
  • Un nome di dominio puntava all'indirizzo IP del server: questo esempio utilizza il nome di dominio "hwdomain.io" per l'installazione di Magento eCommerce.

Inoltre, se prevedi di installare Magento sulla tua produzione, assicurati di avere un server con elevate risorse di CPU, memoria e disco. Questo test dell'installazione dell'eCommerce Magento ha utilizzato 6 GB di memoria.

Preparare il sistema

Prima di iniziare l'installazione di Magento, preparerai il tuo sistema Ubuntu aggiornando i repository, aggiornando i pacchetti e quindi installando alcuni pacchetti di base.

Esegui il comando apt seguente per aggiornare e aggiornare i repository Ubuntu. Quindi, aggiorna i pacchetti alla versione più recente.

sudo apt update
sudo apt upgrade

Successivamente, installa alcune dipendenze di base tramite il comando apt di seguito.

sudo apt install gnupg2 apt-transport-https curl wget

Quando richiesto, inserire y per confermare e premere INVIO per procedere.

Con le dipendenze di base installate, inizierai quindi l'installazione delle dipendenze del pacchetto per Magento eCommerce.

Installazione e configurazione di Elasticsearch 7.x

La prima dipendenza che installerai è Elasticsearch. Il moderno eCommerce Magento richiedeva un motore di ricerca per fornire risultati di ricerca efficaci in tempo reale per i clienti. Magento supporta il motore di ricerca Elasticsearch e OpenSearch.

In questo passaggio installerai la configurazione e installerai Elasticsearch 7.x su un server Ubuntu 22.04. L'ultima versione di Magento richiedeva la versione specifica di Elasticsearch 7.x.

Per iniziare, esegui il comando seguente per aggiungere la chiave GPG e il repository Elasticsearch al tuo sistema

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch \
| sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" \
| sudo tee /etc/apt/sources.list.d/elastic-7.x.list

Dopo aver aggiunto il repository, esegui il comando apt seguente per aggiornare e aggiornare l'indice del tuo pacchetto Ubuntu.

sudo apt update

Vedrai che il repository Elasticsearch è stato aggiunto al tuo sistema Ubuntu.

Successivamente, esegui il comando apt seguente per installare Elasticsearch sul tuo sistema. Il pacchetto jq può essere utilizzato per analizzare il formato di output json.

sudo apt install elasticsearch jq

Immettere y quando richiesto e premere INVIO per procedere.

Dopo aver installato Elasticsearch, crea un nuovo file di configurazione '/etc/elasticsearch/jvm.options.d/memory.options' utilizzando il comando dell'editor nano riportato di seguito.

sudo nano /etc/elasticsearch/jvm.options.d/memory.options

Aggiungi le seguenti righe al file. Con queste righe specificherai l'utilizzo della memoria per Elasticsearch. Questo esempio utilizzerà 1 GB di memoria per Elasticsearch, assicurati di modificare la memoria massima in base alla memoria del sistema.

-Xms1g
-Xmx1g

Salvare il file e uscire dall'editor una volta terminato.

Ora esegui l'utilità di comando systemctl seguente per avviare e abilitare il servizio Elasticsearch.

sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

Verifica il servizio Elasticsearch utilizzando l'utilità di comando systemctl riportata di seguito.

sudo systemctl is-enabled elasticsearch
sudo systemctl status elasticsearch

Riceverai che il servizio Elasticsearch è abilitato e verrà eseguito automaticamente all'avvio. E lo stato attuale del servizio Elasticsearch è in esecuzione.

Infine, esegui il comando curl seguente per verificare Elasticsearch e assicurarti che funzioni. L'installazione predefinita di Elasticsearch è in esecuzione su localhost con porta 9200.

curl http://127.0.0.1:9200/ | jq .

Riceverai un output simile a questo sul tuo terminale: la versione installata di Elasticsearch è v7.17.8, che è basata su Lucene 8.11. 1.

Una volta installato e configurato Elasticsearch, dovrai successivamente installare e configurare il server Web PHP-FPM e Nginx.

Installazione di Nginx e PHP-FPM

Al momento in cui scrivo, Magento eCommerce richiedeva PHP 8.1 per la sua installazione. In questo passaggio installerai e configurerai PHP-FPM 8.1 sul tuo sistema Ubuntu. E allo stesso tempo installerai anche il server web Nginx.

Imposterai anche l'allocazione massima di memoria per PHP che verrà utilizzata per eseguire Magento e abiliterai l'estensione OPcache.

Esegui il comando apt seguente per installare PHP-FPM 8.1 e il server web Nginx.

sudo apt install nginx unzip php8.1-fpm php8.1-bcmath php8.1-common php8.1-mbstring php8.1-xmlrpc php8.1-soap php8.1-gd php8.1-xml php8.1-intl php8.1-mysql php8.1-cli php8.1-ldap php8.1-zip php8.1-curl php-imagick

Immettere y quando viene richiesta la conferma. Quindi premere INVIO per procedere.

Dopo aver installato PHP-FPM, apri il file di configurazione '/etc/php/8.1/fpm/php.ini' utilizzando il comando dell'editor nano riportato di seguito.

sudo nano /etc/php/8.1/fpm/php.ini

Modifica la configurazione predefinita di php.ini con le seguenti righe. Assicurati di regolare il valore dell'opzione 'date.timezone' e 'memory_limit', che dipende dall'ambiente del tuo sistema.

In questo esempio, allocherai 1 GB di memoria per il servizio PHP-FPM. Abiliterai anche l'estensione OPcache, necessaria per Magento.

date.timezone = Europe/Stockholm
memory_limit=1G

realpath_cache_size=10M
realpath_cache_ttl=7200

opcache.enable=1
opcache.max_accelerated_files=3000
opcache_revalidate_freq = 100
opcache.memory_consumption=512
opcache.save_comments=1

Salva il file e esci dall'editor quando hai finito.

Successivamente, esegui l'utilità di comando systemctl seguente per riavviare i servizi PHP-FPM e Nginx. Ciò applicherà le modifiche a entrambi i servizi.

sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx

Ora verifica il servizio PHP-FPM tramite il seguente comando.

sudo systemctl is-enabled php8.1-fpm
sudo systemctl status php8.1-fpm

Dovresti ricevere l'output che indica che il servizio PHP-FPM è abilitato e verrà eseguito automaticamente all'avvio. E lo stato attuale del servizio PHP-FPM è in esecuzione.

Per il servizio Nginx, puoi verificare utilizzando il comando seguente.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Output: il servizio Nginx è abilitato e verrà eseguito automaticamente all'avvio. E lo stato attuale del servizio Nginx è in esecuzione.

Infine, esegui il comando seguente per verificare la versione PHP installata sul tuo sistema. Quindi verifica l'estensione Opcache per assicurarti che sia abilitata.

php -v
php -i | grep opcache

Riceverai l'output come questo sul tuo terminale: PHP 8.1 è installato sul tuo sistema e l'estensione OPcache è abilitata.

Ora che hai installato e configurato il server web PHP-FPM e Nginx per l'eCommerce Magento. Nei passaggi successivi installerai e configurerai MySQL Server.

Installazione e configurazione di MySQL Server 8

Per impostazione predefinita, Magento supporta sia MySQL che MariaDB come backend del database. Al momento in cui scrivo, l'eCommerce Magento richiedeva MySQL v8 o MariaDB almeno v10.4. E per questa guida utilizzerai MySQL Server per la tua distribuzione Magento.

Ora installerai MySQL Server 8 sul tuo sistema Ubuntu. Quindi, imposterai la password di root per il server MySQL, proteggerai MySQL tramite 'mysql_secure_installation', quindi creerai un nuovo database MySQL e un nuovo utente che Magento utilizzerà.

Il repository Ubuntu 22.04 predefinito fornisce MySQL Server v8. Esegui il comando apt seguente per installare i pacchetti MySQL Server.

sudo apt install mysql-server

Immettere y quando richiesto e premere INVIO per procedere.

Dopo aver installato MySQL Server, eseguire l'utilità di comando systemctl seguente per verificare il servizio MySQL e assicurarsi che il servizio sia in esecuzione.

sudo systemctl is-enabled mysql
sudo systemctl status mysql

Vedrai l'output in questo modo: MySQL Server è abilitato e verrà eseguito automaticamente all'avvio. E lo stato di MySQL Server è in esecuzione.

Successivamente, esegui il comando seguente per accedere alla shell MySQL.

sudo mysql

Esegui la query seguente per modificare e impostare la password 'root' di MySQL. Assicurati di cambiare la password nella seguente query.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'r00tP@ssw0rd-*-';
quit

Ora che la password 'root' del server MySQL è configurata, proteggerai il server MySQL tramite l'utilità 'mysql_secure_installation'.

Esegui il comando seguente per iniziare a proteggere la distribuzione MySQL.

sudo mysql_secure_installation

Ti verrà ora chiesto della seguente configurazione.

  • Abilita il componente VALIDATE PASSWORD. Immettere y per confermare.
  • Scegli la sicurezza del livello della password. Ingresso 1 per MEDIO.
  • Cambiare la password di root? Immettere n per n.
  • Rimuovi l'utente anonimo predefinito. Ingresso Y.
  • Non consentire l'accesso remoto per l'utente root MySQL. Ingresso Y.
  • Rimuovere il test del database predefinito? Ingresso Y.
  • Ricaricare i privilegi delle tabelle per applicare le modifiche? Ingresso Y

Ora il server MySQL è protetto e la password di root è configurata. Successivamente, creerai un nuovo database MySQL e un nuovo utente che verrà utilizzato da Magento.

Accedi alla shell MySQL tramite il comando seguente. Quando viene richiesta la password, inserisci la password root di MySQL.

sudo mysql -u root -p

Dopo aver effettuato l'accesso, esegui le seguenti query per creare un nuovo database e utente MySQL. In questo esempio creerai il database MySQL e l'utente "magento". E assicurati di modificare la password predefinita nella query seguente.

CREATE DATABASE magento;
CREATE USER 'magento'@'localhost' IDENTIFIED BY 'M@gentoP4ssw0rd__';
GRANT ALL PRIVILEGES ON magento.* to 'magento'@'localhost';
FLUSH PRIVILEGES;

Ora esegui la query MySQL seguente per verificare i privilegi per l'utente MySQL "magento@localhost". Quindi, digita quit exiting dalla shell MySQL.

SHOW GRANTS FOR magento@localhost;
quit

Riceverai un output simile a questo: l'utente MySQL 'magento@localhost' ha i privilegi per accedere a 'magento'.

Nei passaggi successivi installerai Redis che verrà utilizzato da Magento per la gestione delle sessioni.

Installazione del server Redis

Magento supporta diversi modi per archiviare le sessioni, puoi salvare le sessioni con PHP-FPM integrato, utilizzando il server MySQL o utilizzando il server Redis. Per la gestione delle sessioni Magento, si consiglia di utilizzare Redis Server, che è stato creato per archiviare database temporanei e sessioni di valori-chiave per la tua applicazione.

Al momento in cui scrivo, l'eCommerce Magento richiedeva Redis v6, che è disponibile per impostazione predefinita nel repository Ubuntu 22.04.

Esegui il comando apt seguente per installare Redis sul tuo sistema. Immettere y quando richiesto e premere INVIO per procedere.

sudo apt install redis-server

Dopo aver installato il server Redis, eseguire l'utilità di comando systemctl seguente per verificare il server Redis e assicurarsi che il servizio sia abilitato e in esecuzione.

sudo systemctl is-enabled redis-server
sudo systemctl status redis-server

Riceverai quindi un output simile a questo: il servizio Redis è abilitato e verrà eseguito automaticamente all'avvio. E lo stato del server Redis è in esecuzione, che per impostazione predefinita è in esecuzione su localhost con porta 6379.

Una volta installato il server Redis, installerai successivamente il Composer per la gestione delle dipendenze PHP.

Installazione della gestione delle dipendenze PHP di Composer

In questo passaggio installerai il Composer che verrà utilizzato per installare e gestire le dipendenze PHP per Magento eCommerce. Nel repository Ubuntu predefinito è disponibile il pacchetto Composer v2.2, adatto all'ultima versione di Magento.

Esegui il comando apt seguente per installare il compositore sul tuo sistema.

sudo apt install composer

Immettere y quando richiesto e premere INVIO per procedere. Dovrebbe iniziare l'installazione di Composer.

Dopo aver installato il Composer, esegui il comando seguente per verificare la versione del Composer.

sudo -u www-data composer -v

Riceverai un output simile a questo: Composer v2.2 è installato e sei pronto per avviare l'installazione di Magento.

Installazione di Magento su Ubuntu Server

Magento può essere installato in molti modi, puoi installare Magento tramite Git, tramite Metapacakge o scaricando manualmente il codice sorgente tramite GitHub, in particolare per l'edizione Magento Open Source.

In questo passaggio, scaricherai manualmente il codice sorgente di Magento dalla pagina di rilascio di GitHub di Magento, quindi installerai le dipendenze PHP tramite Composer e infine installerai e configurerai Magento tramite la riga di comando "magento".

Vai su GitHub della pagina di rilascio di Magento e prendi il collegamento alla versione di Magento che desideri installare. In questo esempio installerai Magento 2.4.5.

Sposta la directory di lavoro nella directory '/var/www' e scarica il codice sorgente di Magento tramite wget.

cd /var/www
wget https://github.com/magento/magento2/archive/refs/tags/2.4.5.tar.gz

Dopo aver scaricato il codice sorgente di Magento, estrailo e rinomina la directory estratta in "magento2". Ora la directory di installazione di Magento dovrebbe diventare '/var/www/magento2'.

tar -xf 2.4.5.tar.gz
mv magento2-* magento2

Successivamente, esegui il comando seguente per creare nuove directory che verranno utilizzate per archiviare la configurazione e la cache di Composer. Quindi, modifica la proprietà della directory '/var/www' nell'utente 'www-data'.

sudo mkdir -p /var/www/{.config,.cache}
sudo chown -R www-data:www-data /var/www

Esegui il comando seguente per assicurarti che il proprietario della directory '/var/www/magento2' possa leggere, scrivere ed eseguire file all'interno di quella directory.

sudo chmod u+rwx /var/www/magento2

Successivamente, spostati nella directory di installazione di Magento '/var/www/magento2'. Quindi installa le dipendenze PHP per Magento tramite il comando 'composer'.

cd /var/www/magento2
sudo -u www-data composer install

Output durante l'installazione delle dipendenze PHP per Magento.

Dopo aver installato le dipendenze PHP di Magento, esegui il comando seguente per rendere eseguibile il file binario '/var/www/magento2/bin/magento'.

sudo chmod u+x /var/www/magento2/bin/magento

Ora nella directory '/var/www/magento2', esegui il comando seguente per avviare l'installazione di Magento. Questo eseguirà la riga di comando 'magento' tramite l'utente www-data.

Inoltre, assicurati di modificare il nome del dominio, l'utente e la password dell'amministratore Magento predefiniti, i dettagli del database MySQL, il fuso orario predefinito e la valuta che utilizzerai.

sudo -u www-data bin/magento setup:install \
--base-url=http://hwdomain.io --use-secure=1 \
--base-url-secure=https://hwdomain.io --use-secure-admin=1 \
--db-host=localhost --db-name=magento --db-user=magento --db-password=M@gentoP4ssw0rd__ \
--admin-firstname=admin --admin-lastname=Wonderland [email  --admin-user=admin --admin-password=Adm1n_p4ssw0rd \
--language=en_US --currency=USD --timezone=Europe/Stockholm --use-rewrites=1 \
--session-save=redis --elasticsearch-host=http://127.0.0.1 --elasticsearch-port=9200 --elasticsearch-enable-auth=0

Output durante l'installazione di Magento.

Quindi, al termine dell'installazione di Magento, riceverai un output come questo: nella parte inferiore del messaggio, puoi vedere l'URL dell'amministratore di Magento generato e il suggerimento di rimuovere l'accesso in scrittura alla directory '/var/ www/magento2/app/etc'.

Esegui il comando chmod seguente per disabilitare l'accesso in scrittura alla directory '/var/www/magento2/app/etc'.

sudo chmod ug-w /var/www/magento2/app/etc

A questo punto l’eCommerce Magento è installato, ma è necessario ancora configurare il blocco server Nginx che servirà per far girare Magento. Lo farai nei passaggi successivi, incluso come proteggere Magento con SSL da Letsencrypt.

Configurazione del blocco server Nginx

In questo passaggio, imposterai e creerai una nuova configurazione di blocchi server Nginx che verrà utilizzata per eseguire l'eCommerce Magento. Inoltre, Magento fornisce una configurazione Nginx completa disponibile nel file '/var/www/magento2/nginx.conf.sample'.

Crea una nuova configurazione del blocco server Nginx '/etc/nginx/sites-available/magento.conf' utilizzando il comando dell'editor nano riportato di seguito.

sudo nano /etc/nginx/sites-available/magento.conf

Aggiungi le seguenti righe al file. Assicurati di cambiare il nome di dominio con il tuo dominio.

upstream fastcgi_backend {
   server unix:/var/run/php/php8.1-fpm.sock;
}
server {
listen 80;
listen [::]:80;
server_name hwdomain.io;
set $MAGE_ROOT /var/www/magento2/;
include /var/www/magento2/nginx.conf.sample;
client_max_body_size 2M;

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

Salvare il file e uscire dall'editor una volta terminato.

Successivamente, esegui il comando seguente per attivare la configurazione del blocco server '/etc/nginx/sites-evailable/magento.conf'. Quindi, verifica le configurazioni Nginx per assicurarti di avere la configurazione corretta.

sudo ln -s /etc/nginx/sites-available/magento.conf /etc/nginx/sites-enabled/
sudo nginx -t

Riceverai quindi l'output 'test riuscito - sintassi ok', il che significa che hai una configurazione Nginx corretta e corretta.

Infine, esegui l'utilità di comando systemctl seguente per riavviare il servizio Nginx e applicare le modifiche.

sudo systemctl restart nginx

Ora che Magento è in esecuzione e il blocco server Nginx è configurato. La tua installazione Magento è ora accessibile, ma devi comunque configurare HTTPS tramite Letsencrypt per proteggere la tua installazione Magento.

Proteggere Magento con SSL Letsencrypt

In questo passaggio installerai lo strumento certbot con il plug-in Nginx sul tuo sistema. Quindi, genererai certificati SSL per l'installazione del tuo nome di dominio Magento. Inoltre, assicurati di avere il nome di dominio puntato sull'indirizzo IP del tuo server, un indirizzo email che verrà utilizzato per registrarsi su Letsencrypt.

Esegui il comando apt seguente per installare i pacchetti certbot e python3-certbot-nginx.

sudo apt install certbot python3-certbot-nginx

Immettere Y quando richiesto e premere INVIO per procedere.

Successivamente, esegui il comando certbot seguente per generare certificati SSL tramite Letsencrypt. Assicurati di cambiare il nome del dominio con il nome del dominio di installazione di Magento e l'indirizzo email con la tua email.

sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [email  -d hwdomain.io

Una volta terminato il processo di certificazione, il tuo Magento è ora accessibile tramite una connessione HTTPS sicura.

Accesso all'eCommerce Magento

Apri il tuo browser web e visita il nome di dominio della tua installazione Magento (ad esempio: https://hwdomain.io/).

Se l'installazione di Magento ha esito positivo, vedrai la home page predefinita di Magento come nello screenshot seguente.

Ora inserisci l'URL del percorso di amministrazione generato e dovresti ottenere la pagina di accesso di Magento. Accedi con il tuo nome utente e password, quindi fai clic su Accedi.

Ora dovresti ottenere la dashboard di amministrazione di Magento.

Hai completato l'installazione dell'eCommerce Magento con il server web Nginx, MySQL Server, PHP-FPM 8.1, Redis Server ed Elasticsearch 7.x. Inoltre, hai protetto la distribuzione di Magento con i certificati SSL di Letsencrypt.

Magento eCommerce Post Installazione

In questo passaggio, configurerai il cron per Magento eCommerce tramite la riga di comando 'magento'. Quindi, eliminerai e cancellerai anche la cache di Magento dopo la prima installazione.

Sposta la directory di lavoro in '/var/www/magento2'.

cd /var/www/magento2

Esegui il comando seguente per configurare e installare cron per Magento eCommerce. Quindi, esegui immediatamente il cron. Questo creerà un nuovo cron per l'utente www-data.

sudo -u www-data bin/magento cron:install
sudo -u www-data bin/magento cron:run --group index

Esegui il comando seguente per verificare l'elenco dei processi cron per l'utente www-data. Dovresti vedere che il cron Magento è stato aggiunto.

crontab -u www-data -l

Di seguito è riportato l'output del cron generato da Magento.

Infine, esegui il comando seguente per pulire e svuotare la cache del tuo eCommerce Magento.

sudo -u www-data bin/magento cache:clean

Riceverai un output simile allo screenshot seguente.

Con questo, hai completato completamente l'installazione dell'eCommerce Magento su un server Ubuntu 22.04.

Conclusione

In questo tutorial, configuri il tuo negozio di eCommerce Magento su un server Ubuntu 22.04. Ciò includeva la configurazione di Elasticsearch come motore di ricerca per Magento, MySQL Server come server database e server web PHP-FPM e Nginx. Finalmente, hai protetto il tuo eCommerce Magento con SSL/TLS tramite Certbot e Letsencrypt.

Nell'ultimo passaggio, hai completato l'installazione dell'eCommerce di Magento accedendo alla dashboard di amministrazione di Magento per assicurarti che l'installazione abbia esito positivo. Quindi, hai anche configurato cron per Magento che verrà eseguito in background e pulisci anche la cache di Magento tramite la riga di comando "magento".

Per ottenere prestazioni migliori per il tuo eCommerce Magento, puoi utilizzare più server per le tue distribuzioni Magento. Ogni componente di Magento può essere installato su un server diverso. Inoltre, puoi aggiungere altri componenti come Varnish che può essere utilizzato per archiviare i file statici della cache di Magento, aggiungere RabbitMQ come broker di messaggi o aggiungere i server SMTP per le notifiche e-mail.

Articoli correlati: