Blog Magento Italia
Ultime news e tutorial su Magento in Italiano

Preparazione del server cPanel per ospitare Magento 2.4: la guida completa

In questo articolo, scopriremo grazie al prezioso contributo di Keliweb, un'interessante guida su come preparare il server cPanel per ospitare Magento 2.4.

Il 2021 è stato l’anno dell’e-commerce. Una frase che abbiamo sentito già dire per il 2020, e ancor prima per il 2019, il 2018 ecc. La realtà dei fatti è che la pandemia ha accelerato un processo di trasformazione digitale del tessuto commerciale che era già ben avviato da tempo. Con le restrizioni e i lockdown per soffocare i contagi Covid, le attività commerciali hanno fatto di necessità virtù puntando con decisione sul commercio elettronico. Questa enorme crescita del settore e-commerce viene confermato dai dati forniti dall’Osservatorio E-Commerce B2C

Questo inizio di 2022 non ha fatto altro che confermare quanto visto nei 12 mesi passati. Perciò sì, questo è il momento giusto per investire in un e-commerce da gestire, ovviamente, con Magento. 

Perché usare Magento per gestire un e-commerce 

Magento è uno dei CMS open source più utilizzati nel campo del commercio online, un successo dovuto a una serie di fattori che si differenziano di parecchio rispetto a quelli che portano gli utenti a scegliere altre soluzioni (come PrestaShop o WooCommerce). 

Sicuramente non ha la stessa semplicità di gestione rispetto ai CMS appena elencati, ma nonostante questo Magento è considerato come il software numero uno per gestire siti e-commerce di grandi dimensioni. Questo perché il software mette a disposizione una serie di funzionalità davvero impareggiabili. Il CMS permette all’utente di personalizzare al massimo il sito e-commerce, inserendo magari recensioni dei prodotti, ottimizzando la SEO in ogni singolo aspetto, senza contare il supporto per diverse lingue e valute.

Insomma, tutte le caratteristiche proprie del CMS ci portano a definire Magento come la scelta giusta per gestire uno store online che presenta tanti prodotti nella propria vetrina digitale. 

Preparazione server cPanel su Magento 2.4 

Quando parliamo di cPanel, facciamo riferimento al pannello di controllo in dotazione dei servizi web hosting Linux. In particolar modo, cPanel è il pannello dei servizi ottimizzati Hosting Magento, il servizio che ospita il negozio online

Vediamo ora il procedimento completo per la preparazione del server cPanel su Magento 2.4

Nota: Vi preghiamo di fare sempre riferimento alla tabella ufficiale dei requisiti di magento in quanto in ogni versione potrebbe differire.

Facendo riferimento ai requisiti ufficiali per Magento >= 2.4 (https://devdocs.magento.com/guides/v2.4/install-gde/system-requirements.html), di seguito i pacchetti fondamentali da installare:

  1. MySQL (consigliata versione 8.0, supportata già da cPanel v88) oppure MariaDB 10.4
  2. Elasticsearch 7.6 o superiore
  3. Composer 1.x / 2.x
  4. PHP 7.3 o superiore (consigliata 7.4)
  5. Apache 2.4
  6. PHPUnit
  7. Libreria “libsodium” + Estensione PHP

Tra i pacchetti opzionali sono presenti invece:

  1. Redis 5.0 o superiore
  2. Varnish 6.x
  3. nginx 1.8
  4. RabbitMQ 3.8

Tra le estensioni di php queste sono quelle obbligatorie:

  • bcmath
  • ctype
  • curl
  • dom
  • fileinfo
  • gd
  • hash
  • iconv
  • intl
  • json
  • libxml
  • mbstring
  • openssl
  • pcre
  • pdo_mysql
  • simplexml
  • soap
  • sockets
  • sodium
  • xmlwriter
  • xsl
  • zip
  • lib-libxml
  • lib-openssl

Alcune di queste potrebbero essere state già installate da cPanel, ma in caso procedere con la loro installazione.

È possibile installare le suddette estensioni tramite WHM -> Software -> EasyApache4 -> Customize, e poi selezionare la voce “PHP Extensions” , come da seguente screenshot:

guida-magento-cpanel

guida-magento-cpanel

Ottimizzazioni Apache/PHP 

Per quanto riguarda le ottimizzazioni lato apache, è consigliabile l’utilizzo di “php-fpm” come handler, ma per una sua corretta configurazione è necessario verificare con il sistemista le risorse a disposizione sulla macchina stessa.

Si può fare riferimento alla guida di cPanel relativa alle ottimizzazioni di “php-fpm” al seguente link: 

https://support.cpanel.net/hc/en-us/articles/360036533754-PHP-FPM-Performance-Tuning-Basics

Tra le impostazioni da modificare ci sono:

Max Children” :definisce il numero massimo di processi PHP-FPM che possono spawnare

Max Requests”: quante richieste sono servite da un processo (Max Children) prima di terminarlo e generare un nuovo processo.

“Process Idle Timeout”: Definisce il numero di secondi dopo i quali un processo inattivo (processo che non soddisfa alcuna richiesta) sarà interrotto in modo da liberare CPU e RAM.

Tutte queste variabili sono facilmente impostabili tramite il “MultiPHP Manager” di WHM.

guida-magento-cpanel

guida-magento-cpanel

 

Apache Max Request Workers in relazione a PHP-FPM

Una spiegazione dettagliata della configurazione Max Request Workers per Apache esula dallo scopo di questa guida, ma un'altra guida più approfondita è disponibile qui:

Tuning MaxRequestWorkers for Apache

La configurazione di Apache Max Request Workers è un concetto molto simile a Max Children per FPM.

Per ogni richiesta che arriva Apache assegnerà un “worker” a quella richiesta. I worker inviano quindi la richiesta a un processo FPM PHP.

Se il totale combinato dei valori Max Children per tutti i domini sul server è maggiore del valore Apache Max Request Workers, è possibile che la configurazione Max Request Workers crei un collo di bottiglia. Potrebbe essere necessario controllare la configurazione di Apache e regolarla per ottenere le prestazioni complete di cui è capace il tuo server.

I Max Request Workers di Apache possono essere modificati andando su WHM Home » Configurazione del servizio » Configurazione Apache » Configurazione globale -> Max Request Workers

guida-magento-cpanel

Per gli altri parametri configurabili all’interno di questa sezione, vi rimandiamo alla guida ufficiale di apache:

 https://httpd.apache.org/docs/2.4/mod/worker.html

Ottimizzazioni lato PHP

Per quanto riguarda le ottimizzazioni lato PHP, Magento consiglia le seguenti:

Installare/abilitare estensione PHP OPCache tramite WHM:

guida-magento-cpanel

Abilitarla nel PHP Selector di cPanel:

guida-magento-cpanel

guida-magento-cpanel

  • Imposta il fuso orario del sistema per PHP; in caso contrario, errori come il seguente display durante l'installazione e operazioni relative all'ora come cron potrebbero non funzionare: Avviso PHP: date(): non è sicuro fare affidamento sulle impostazioni del fuso orario del sistema.
    Settando date.timezone=Europe/Rome nel file php.ini
  • Imposta il limite di memoria PHP.
  • I nostri consigli dettagliati sono:
    • Compilazione di codice o distribuzione di risorse statiche, 1G
    • Debug, 2G
    • Test, ~3-4G
  • Aumenta i valori per il PHP realpath_cache_size and realpath_cache_ttl alle impostazioni consigliate:
    realpath_cache_size=10Mrealpath_cache_ttl=7200

Queste impostazioni consentono ai processi PHP di memorizzare nella cache i percorsi dei file invece di cercarli ogni volta che viene caricata una pagina.

Abilitare queste due direttive nel file php.ini

  • allow_url_fopenOn
  • zend.detect_unicodeOff

 

Installazione PHPUnit

Per l’installazione di PHPUnit è necessario avere installato “phar”.

Procediamo quindi con la sua installazione tramite PHP PECL presente nel “Module installer” di WHM:

guida-magento-cpanel

guida-magento-cpanel

 

Se l'estensione Suhosin è abilitata, devi consentire l'esecuzione di PHAR nel tuo php.ini:

suhosin.executor.include.whitelist = phar

Installa phar globalmente 

$ curl -LO https://phar.phpunit.de/phpunit-9.5.phar

$ chmod +x phpunit-9.5.phar

$ ./phpunit-9.5.phar --version

PHPUnit x.y.z by Sebastian Bergmann and contributors.

Installare libsodium 

Se non hai ancora installato il repository EPEL, devi installarlo. Se stai usando CentOS 7 puoi usare il seguente comando:

yum -y install epel-release

yum install libsodium libsodium-devel -y

Per l’installazione della libreria si può procedere tramite WHM -> Module installer -> PHP PECL (come fatto in precedenza per “phar”), oppure da riga di comando.

In questo caso prima è necessario rilevare le varie versioni di php con questo comando:

find /opt/cpanel/ -iname pecl | grep bin

Poi procedere all’installazione di libsodium per ogni versione rilevata:

/opt/cpanel/ea-php74/root/usr/bin/pecl install libsodium

Installare Composer globalmente 

Generalmente questo  è già installato con cPanel, ma qualora non lo fosse procedere con la sua installazione così:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

php composer-setup.php

php -r "unlink('composer-setup.php');"

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

Installare ElasticSearch 

Per prima cosa bisogna installare Java Software Development Kit (JDK)

yum -y install java-1.8.0-openjdk

Procedere poi con l’installazione di ElasticSearch:

  1. Importare la chiave per il repositori di elastichsearch:

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

  1. Creare il file per di configurazione del repository:

echo "[elasticsearch]

name=Elasticsearch repository for 7.x packages

baseurl=https://artifacts.elastic.co/packages/7.x/yum

gpgcheck=1

gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

enabled=0

autorefresh=1

type=rpm-md" > /etc/yum.repos.d/elasticsearch.repo

Eseguire quindi un “yum update” e proseguire con l’installazione del pacchetto vero e proprio:

yum -y install --enablerepo=elasticsearch elasticsearch

Modificare la cartella “tmp” di elastichsearch:

sed -i 's/Djava.io.tmpdir=\${ES_TMPDIR}/Djava.io.tmpdir=\/var\/log\/elasticsearch/' /etc/elasticsearch/jvm.options

Elasticsearch ascolta il traffico da qualsiasi luogo sulla porta 9200. Dovrai limitare l'accesso esterno alla tua istanza Elasticsearch per impedire agli estranei di leggere i tuoi dati o di spegnere il tuo cluster Elasticsearch tramite l'API REST.

sudo vi /etc/elasticsearch/elasticsearch.yml

Trova la riga che specifica network.host, decommentala e sostituisci il suo valore con localhost in modo che assomigli a questo:

network.host: localhost

Ricaricare systemd, abilitare e lanciare il servizio elastichsearch:

/bin/systemctl daemon-reload

/bin/systemctl enable elasticsearch.service

/bin/systemctl start elasticsearch.service

Per vedere se il servizio è stato lanciato correttamente verifichiamo con il seguente comando:

systemctl status elasticsearch.service

Se tutto è andato bene, leggeremo una cosa del genere:

guida-magento-cpanel

 

Attenzione: ElasticSearch richiede minimo 4GB di RAM. 

Può essere utile abbassare l'heap size a 2GB creando il file "/etc/elasticsearch/jvm.options.d/heapsize.options" con questo contenuto:

-Xms2g

-Xmx2g

Installazione Softaculous 

Qualora sul server fosse attivo un firewall, assicurarsi che i seguenti ip siano in whitelist:

  • 192.198.80.3 # api.softaculous.com
  • 158.69.6.246 # s1.softaculous.com
  • 138.201.40.168 # s2.softaculous.com
  • 213.239.208.58 # s3.softaculous.com
  • 138.201.24.83 # s4.softaculous.com
  • 167.114.200.240 # s7.softaculous.com

Come prima cosa va abilitato Ioncube Loader:

  • Server Configuration -> Tweak Settings -> PHP
  • Select ioncube check box for cPanel PHP loader.
  • Click on Save button.

 

guida-magento-cpanelAssicurarsi di avere una licenza valida prima di iniziare l’installazione.

Volendo è possibile attivare una licenza Premium in versione Trial, dal seguente link:

https://www.softaculous.com/softaculous/trial

Procedere quindi con l’installazione di Softaculous:

wget -N http://files.softaculous.com/install.sh

chmod 755 install.sh

./install.sh

Adesso vai su : WHM > Plugins (Add-Ons on older versions than 11) > Softaculous – Instant Installs

Se l'installazione è andata a buon fine si aprirà la seguente pagina Web:

guida-magento-cpanel

Installazione Magento tramite Softaculous:

È preferibile installare Magento tramite Softcaulous per due motivi fondamentali:

  1. Facilità nell’installazione
  2. Possibilità di creare facilmente copie di staging

La nuova funzionalità di Staging di Softaculous ti permette di creare delle copie del sito web, su cui potrai effettuare tutti gli esperimenti che hai in mente e valutarli prima di inserirli sul sito web.

Procediamo quindi con l’installazione di Magento tramite Softaculous:

guida-magento-cpanel

 

Relativamente lo staging si può utilizzare del testo e le immagini della nostra guida: https://blog.keliweb.it/2018/08/softaculous-staging-crea-una-copia-del-tuo-sito/

guida-magento-cpanel

 

I Reverse Proxy vengono in genere implementati per aumentare la sicurezza, le prestazioni e l'affidabilità. 

Per fare ciò si può usare il software “nginx” insieme a “Varnish”.

Varnish è un programma che può aumentare la velocità di un sito Web riducendo contemporaneamente il carico sul server Web.

"Varnish è un acceleratore di applicazioni Web noto anche come reverse proxy HTTP di memorizzazione nella cache".

In genere accelera la consegna con un fattore di 300 - 1000 volte, a seconda dell'architettura.

L'implementazione di Varnish su server cPanel può essere implementata tramite il plugin engintron che farà da terminatore SSL.

guida-magento-cpanel

 

Di seguito lo schema semplificato della configurazione

guida-magento-cpanel

 

Crea il tuo store online con Magento 

Magento è conosciuto per essere, il software ideale per creare e gestire e-commerce. Avere a disposizione un pannello di controllo come cPanel ti permette di semplificare la gestione del tuo spazio hosting e concentrarti in toto sul negozio virtuale. Creare un e-commerce con Magento significa avere a disposizione un software professionale, perfetto per questo tipo di attività. Una base eccellente, che però da sola non può bastare. Per avere successo dovrai poi concentrarti su tanti altri fattori, come la qualità dei prodotti, le strategie di marketing messe in campo, l’ottimizzazione SEO dei contenuti e molto altro ancora. Un tassello di notevole importanza va poi ascritto alle prestazioni del sito.

Un negozio online veloce e affidabile avrà un maggior numero chance rispetto a un sito con tempi di caricamento troppo lunghi. Quello che devi fare per garantirti queste performance di alto livello è scegliere un servizio hosting come quelli forniti da Keliweb

 

Non perderti le ultime novità!

Iscriviti oggi per restare aggiornato su tutte le novità Magentiamo