Come installare PrestaShop su Debian 9
Questo tutorial esiste per queste versioni del sistema operativo
- Debian 11 (Bullseye)
- Debian 9 (Stretch)
Su questa pagina
- Requisiti
- Configurazione iniziale
- Installa PrestaShop
In questa guida, ti mostreremo come installare e configurare l'ultima versione di Prestashop su Debian 9.1, al fine di creare il tuo carrello della spesa online gratuito.
Prestashop è una piattaforma di gestione dei contenuti di e-commerce Open Source gratuita scritta in linguaggio di programmazione PHP che viene spesso distribuito su Linux con server Web Apache/Nginx, PHP e sistema di gestione del database MySQL/MariaDB. Prestashop CMS è molto utilizzato oggi per creare negozi online per diverse aziende e pubblicizzare e vendere servizi e merci.
Requisiti
- Installazione minima di Debian 9 su una macchina bare metal o su un server privato virtuale.
- Un indirizzo IP statico configurato per una delle tue schede di interfaccia di rete del sistema.
- privilegi sudo root per un account locale o remoto o accesso diretto all'account root.
- Un nome di dominio, privato o pubblico, a seconda della distribuzione, con i record DNS corretti configurati.
Configurazione iniziale
Prima di iniziare a installare e configurare Prestashop dal sorgente sul tuo server, assicurati innanzitutto che il sistema soddisfi tutti i requisiti software per la compilazione e l'installazione dell'applicazione. Nel primo passaggio, aggiorna i repository di sistema e i pacchetti software emettendo il comando seguente.
apt update
apt upgrade

Nel passaggio successivo, eseguire il seguente comando per installare alcune utilità necessarie che verranno utilizzate per gestire ulteriormente il sistema dalla riga di comando.
apt install wget bash-completion zip unzip

Quindi, imposta il nome per il tuo sistema eseguendo il seguente comando. Sostituisci la tua variabile hostname di conseguenza.
hostnamectl set-hostname shop
Verificare il nome host della macchina e il file hosts immettendo i comandi seguenti.
hostnamectl
cat /etc/hostname
hostname –s
hostname –f

Infine, riavviare il server Debian per applicare gli aggiornamenti del kernel e il nome host cambia correttamente.
systemctl reboot
Prestashop è una piattaforma di e-commerce CMS basata sul web scritta principalmente in linguaggio di programmazione lato server PHP. Per eseguire gli script di file PHP di Prestashop, sul server devono essere installati e operativi un server Web, come il server HTTP Apache, e un gateway di elaborazione PHP. Per installare il server Web Apache e l'interprete PHP insieme a tutti i moduli PHP necessari a Prestashop per funzionare correttamente, emetti il seguente comando nella console del server.
apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-xml php7.0-gd php7.0-json php7.0-zip php7.0-intl php7.0-mcrypt php7.0-curl php7.0-intl php7.0-opcache
Dopo che Apache e PHP sono stati installati, verificare se il server Web è attivo e in esecuzione e in ascolto per le connessioni di rete sulla porta 80 emettendo il seguente comando con privilegi di root.
netstat –tlpn
Nel caso in cui l'utility di rete netstat non sia installata per impostazione predefinita sul tuo sistema Debian, esegui il comando seguente per installarla.
apt install net-tools

Ispezionando l'output del comando netstat puoi vedere che il server Web Apache è in ascolto per le connessioni di rete in entrata sulla porta 80. Per la stessa attività puoi anche usare il comando ss, che viene installato automaticamente per impostazione predefinita in Debian 9.
ss -tlpn
Nel caso in cui tu abbia un firewall abilitato sul tuo sistema, come un'applicazione firewall UFW, dovresti aggiungere una nuova regola per consentire al traffico HTTP di passare attraverso il firewall emettendo il seguente comando.
ufw allow WWW
O
ufw allow 80/tcp
Se stai utilizzando le regole grezze di iptables per gestire le regole del firewall nel tuo server Debian, aggiungi la seguente regola per consentire il traffico in entrata della porta 80 sul firewall in modo che i visitatori possano navigare nel negozio online di Prestashop.
apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload
Successivamente, abilita e applica i seguenti moduli Apache richiesti da Prestashop CMS per funzionare correttamente, emettendo il comando seguente.
a2enmod rewrite
systemctl restart apache2
Infine, verifica se la pagina Web predefinita del server Web Apache può essere visualizzata nei browser dei tuoi client visitando l'indirizzo IP della tua macchina Debian o il tuo nome di dominio o FQDN del server tramite il protocollo HTTP, come mostrato nell'immagine seguente. Se non conosci l'indirizzo IP della tua macchina, esegui i comandi ifconfig o ip a per rivelare l'indirizzo IP del tuo server.
http://your_domain.tld

Per installare e accedere al pannello di amministrazione Web di Prestashop supportato e al sito Web front-end tramite il protocollo HTTPS che proteggerà il traffico per i tuoi clienti, emetti il seguente comando per abilitare il modulo SSL del server Web Apache e il file di configurazione del sito SSL.
a2enmod ssl
a2ensite default-ssl.conf
Successivamente, apri il file di configurazione del sito SSL predefinito di Apache con un editor di testo e abilita le regole di riscrittura degli URL aggiungendo le seguenti righe di codice dopo la direttiva DocumentRoot, come mostrato nell'esempio seguente:
nano /etc/apache2/sites-enabled/default-ssl.conf
Estratto del file di configurazione del sito SSL:
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
Inoltre, apporta la seguente modifica alla riga VirtualHost in modo che appaia come mostrato nell'estratto seguente:
<VirtualHost *:443>

Chiudi il file Apache SSL e apri il file /etc/apache2/sites-enabled/000-default.conf per la modifica e aggiungi le stesse regole di riscrittura URL del file di configurazione SSL. Inserire le righe di codice dopo l'istruzione DocumentRoot come mostrato nell'esempio seguente.
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>

Infine, riavvia il demone Apache per applicare tutte le regole configurate finora e visita il tuo dominio tramite protocollo HTTP. Poiché stai utilizzando le coppie di certificati autofirmati automaticamente emessi da Apache durante l'installazione, dovrebbe essere visualizzato un avviso di errore nel browser. Accetta l'avviso per continuare ed essere reindirizzato alla pagina Web predefinita di Apache.
systemctl restart apache2
https://tuodominio.tld
Nel caso in cui l'applicazione firewall UFW blocchi le connessioni di rete in entrata alla porta HTTPS, è necessario aggiungere una nuova regola per consentire al traffico HTTPS di passare attraverso il firewall immettendo il seguente comando.
ufw allow 'WWW Full'
O
ufw allow 443/tcp
Se iptables è l'applicazione firewall predefinita installata per proteggere il tuo sistema Debian a livello di rete, aggiungi la seguente regola per consentire il traffico in entrata sulla porta 443 nel firewall in modo che i visitatori possano navigare nel tuo nome di dominio.
iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload
Nel passaggio successivo, dobbiamo apportare ulteriori modifiche al file di configurazione predefinito di PHP per garantire che le seguenti variabili PHP siano abilitate e che l'impostazione del fuso orario PHP sia configurata correttamente e corrisponda alla posizione geografica del tuo sistema. Apri il file /etc/php/7.0/apache2/php.ini per la modifica e assicurati che le seguenti righe siano impostate come segue. Inoltre, inizialmente, fai un backup del file di configurazione PHP.
cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini
Cerca, modifica e modifica le seguenti variabili nel file di configurazione php.ini:
file_uploads = On
allow_url_fopen = On
memory_limit = 128 M
upload_max_file_size = 64M
date.timezone = Europe/London
Aumenta la variabile memory_limit in modo che sia adatta a supportare file allegati di grandi dimensioni e sostituisci la variabile time.zone in base al tuo orario fisico consultando l'elenco dei fusi orari fornito dalla documentazione PHP al seguente link http://php. net/manual/en/timezones.php
Se desideri aumentare la velocità di caricamento delle pagine del tuo sito Web tramite il plug-in OPCache disponibile per PHP7, aggiungi le seguenti impostazioni OPCache nella parte inferiore del file di configurazione dell'interprete PHP, come descritto di seguito:
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
Chiudi il file di configurazione php.ini e controlla se verifica la fine del file di configurazione PHP per verificare se le variabili sono state aggiunte correttamente emettendo il comando seguente.
tail /etc/php/7.0/apache2/php.ini
Dopo aver apportato tutte le modifiche spiegate sopra, riavvia il demone apache per applicare le nuove modifiche emettendo il seguente comando.
systemctl restart apache2
Infine, crea un file info PHP eseguendo il seguente comando e controlla se il fuso orario PHP è stato configurato correttamente visitando il file script info PHP da un browser al seguente URL, come illustrato nell'immagine sottostante. Scorri verso il basso fino all'impostazione della data per controllare la configurazione del fuso orario php.
echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php
https://domain.tld/info.php

Prestashop memorizza diverse configurazioni, come utenti, sessioni, contatti, prodotti, cataloghi e altro, in un database RDBMS. In questa guida, configureremo Prestashop per utilizzare il database MariaDB come backend. Immetti il comando seguente per installare il database MariaDB e il modulo PHP necessario per accedere al database mysql.
apt install mariadb-server php7.0-mysql

Dopo aver installato MariaDB, verifica se il demone è in esecuzione e ascolta le connessioni su localhost, porta 3306, eseguendo il comando netstat.
netstat –tlpn | grep mysql
Quindi, accedi alla console MySQL e proteggi l'account root MariaDB immettendo i seguenti comandi.
mysql -h localhost
use mysql;
update user set plugin='' where user='root';
flush privileges;
exit

Nel passaggio successivo, proteggi MariaDB eseguendo lo script mysql_secure_installation fornito dai pacchetti di installazione dai repository stretch di Debian. Durante l'esecuzione, lo script porrà una serie di domande progettate per proteggere il database MariaDB, come ad esempio: modificare la password di root di MySQL, rimuovere gli utenti anonimi, disabilitare gli accessi di root remoti ed eliminare il database di test. Esegui lo script emettendo il comando seguente e assicurati di digitare sì a tutte le domande poste per proteggere completamente il demone MySQL. Utilizzare l'output dello script seguente tranne che come guida.
sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Per testare la sicurezza di MariaDB, prova ad accedere al database dalla console senza la password di root. L'accesso al database dovrebbe essere negato se non viene fornita alcuna password per l'account root. Se viene fornita la password, il processo di accesso dovrebbe essere concesso alla console MySQL, come mostrato nello screenshot seguente.
mysql -h localhost -u root
mysql -h localhost -u root –p

Successivamente, accedi alla console del database MariaDB, crea un database per Prestashop e un utente con una password che verrà utilizzata per gestire il database Prestashop, immettendo i seguenti comandi. Sostituisci il nome del database PrestaShop, l'utente e la password di conseguenza.
mysql –u root -p
create database my_shop;
grant all privileges on my_shop.* to 'shop_user' identified by 'shop_password';
flush privileges;
exit

Per applicare tutte le modifiche apportate finora, riavviare i demoni MySQL e Apache e verificare se i demoni sono in esecuzione immettendo i seguenti comandi.
systemctl restart mysql apache2
systemctl status mysql apache2
Installa PrestaShop
Dopo aver soddisfatto tutti i requisiti di sistema per l'installazione del tuo negozio online di e-commerce, visita la pagina delle versioni di Prestashop su GitHub https://github.com/PrestaShop/PrestaShop/releases e scarica l'ultimo archivio compresso del pacchetto zip emettendo l'utilità wget, come illustrato nel seguente esempio.
wget https://github.com/PrestaShop/PrestaShop/releases/download/1.7.2.3/prestashop_1.7.2.3.zip

Al termine del download dell'archivio zip, estrarre l'archivio zip Prestashop direttamente nella root del documento del server Web ed elencare i file estratti emettendo i comandi seguenti. Inoltre, rimuovere il file index.html predefinito installato dal server Web Apache nel percorso webroot ed eliminare anche il file info.php creato in precedenza.
rm /var/www/html/index.html
rm /var/www/html/info.php
unzip prestashop_1.7.2.3.zip -d /var/www/html/
ls /var/www/html/

Successivamente, esegui i comandi seguenti per concedere all'utente di runtime Apache le autorizzazioni di scrittura complete per il percorso root web. Utilizzare il comando ls per elencare le autorizzazioni per i file di installazione di Prestashop situati nella directory /var/www/html/.
chown -R www-data:www-data /var/www/html/
ls –al /var/www/html/

Procedi con l'installazione di Prestashop CMS aprendo un browser e naviga nell'indirizzo IP o nel nome di dominio del tuo server tramite il protocollo HTTPS. Nella prima schermata di installazione, lo script di installazione di Prestashop aprirà il contenuto del file prestashop.zip dal percorso root web del server Web, come mostrato nell'immagine sottostante.
https://yourdomain.tld

Al termine dell'estrazione, puoi passare alla riga di comando ed elencare il contenuto della directory /var/www/html/ per visualizzare tutti i file estratti da Prestashop.
ls -la /var/www/html/

Nella schermata successiva, il programma di installazione di Prestashop visualizzerà una schermata di benvenuto e ti chiederà di scegliere la lingua di installazione per continuare il processo di installazione. Scegli la tua lingua e premi il pulsante Avanti per continuare con il passaggio successivo.

Nella schermata di installazione successiva, seleziona Accetto i termini di licenza e premi il pulsante Avanti per continuare, come illustrato nell'immagine sottostante.

Il programma di installazione di Prestashop ora eseguirà una serie di controlli per determinare la compatibilità con il tuo sistema e ambiente ed elencherà eventuali errori, se trovati. Se il tuo ambiente di sistema è compatibile con l'installazione di PrestaShop, dovrebbe essere visualizzato un messaggio verde sulla tua pagina web, come mostrato nello screenshot qui sotto. Ancora una volta, premi il pulsante Avanti per andare avanti con il processo di installazione.

Nella schermata successiva, aggiungi le informazioni richieste sul tuo negozio, come il nome del negozio, l'attività principale, il paese in cui è registrato il tuo negozio e i dettagli dell'account. Fornisci un indirizzo e-mail per accedere al pannello web di back-end di Prestashop e una password complessa che verrà utilizzata per questo account, come mostrato nello screenshot qui sotto. Al termine, premi il pulsante Avanti per continuare.

nella schermata di installazione successiva, aggiungi l'indirizzo del database MySQL, il nome e le credenziali creati in precedenza per Prestashop, premi il pulsante Verifica ora la tua connessione al database. Se la connessione al database MySQL ha esito positivo, premi il pulsante Avanti per avviare il processo di installazione.

Attendi qualche minuto affinché il programma di installazione compili il database con tutte le informazioni richieste e il processo di installazione venga completato, come mostrato negli screenshot seguenti.


Al termine dell'installazione, il programma di installazione visualizzerà le informazioni di accesso al pannello di amministrazione Web supportato e i collegamenti ipertestuali richiesti per accedere al Backend Office di Prestashop, che verrà utilizzato per gestire il tuo negozio online e il Front Office del tuo negozio, che verrà visualizzato ai tuoi clienti .
Assicurati di aver premuto il pulsante Back Office Manage per accedere al back-end del negozio. È necessario annotare o aggiungere ai segnalibri l'indirizzo del back office del negozio per accedere in futuro al pannello di amministrazione Web da altri browser.
Quando provi ad accedere al Back Office, un messaggio di avviso come mostrato nell'immagine sottostante ti informerà che dovresti eliminare la directory di installazione dal percorso webroot del tuo dominio.

Per poter accedere al pannello di amministrazione supportato da Prestashop, torna alla console del server ed esegui il seguente comando per eliminare la directory di installazione di Prestashop.
rm -rf /var/www/html/install/
Successivamente, ricarica la pagina Back Office di Prestashop e accedi al pannello di amministrazione con le credenziali impostate durante il processo di installazione, come illustrato nello screenshot seguente.

Al primo accesso, nel browser verrà visualizzato un messaggio di benvenuto. Premendo il pulsante di avvio verrai reindirizzato al Catalogo da dove puoi iniziare ad aggiungere il tuo primo prodotto, come mostrato nello screenshot qui sotto.


Per visitare la pagina web del frontend Prestashop, digita semplicemente il tuo nome di dominio nel browser e verrai automaticamente reindirizzato alla pagina iniziale, come descritto nello screenshot seguente.

Tuttavia, per ora, è possibile accedere al negozio solo non protetto tramite il protocollo HTTP non crittografato. Per abilitare il supporto HTTPS in Prestashop, accedi al pannello Back Office e vai su Configura -> Parametri negozio -> Generale e premi Clicca qui per verificare se il tuo negozio supporta il collegamento HTTPS, come illustrato nell'immagine sottostante.

Dopo aver eseguito i test SSL, imposta il pulsante Abilita SSL su SÌ e scorri verso il basso fino alla fine della pagina e premi il pulsante Salva per applicare la configurazione. Tuttavia, questa configurazione finora abilita il supporto SSL solo per il collegamento Back Office. I client che visiteranno il nome di dominio del tuo negozio verranno indirizzati su connessioni non crittografate.

Per proteggere il traffico dei visitatori sul tuo dominio, imposta il pulsante Abilita SSL su tutte le pagine su Sì, come mostrato nell'immagine qui sotto e scorri verso il basso e premi il pulsante Salva in fondo alla pagina per applicare le impostazioni.

Per verificare se i client vengono ora reindirizzati automaticamente per visitare il tuo dominio tramite una connessione protetta tramite protocollo HTTPS, aggiorna la pagina front-end di Prestashop o digita il nome del tuo dominio nel browser. È ora possibile accedere al nome di dominio del tuo negozio tramite il protocollo HTTP, come illustrato nell'immagine sottostante.

È tutto! Hai installato e configurato correttamente PrestaShop su Debian 9.1. Tuttavia, poiché il tuo server HTTP Apache utilizza certificati autofirmati per crittografare il traffico tra il server e i browser dei visitatori, verrà sempre generato un messaggio di avviso e visualizzato nei loro browser quando visitano per la prima volta il negozio. Questo avviso è dannoso per la tua attività di negozio online. In questo caso dovresti acquistare un certificato emesso da un'autorità di certificazione attendibile o ottenere una coppia di certificati gratuiti da Let's Encrypt CA.
Per altre configurazioni personalizzate relative a Prestashop, visita la pagina della documentazione al seguente indirizzo: http://doc.prestashop.com/display/PS17/Installing+PrestaShop