Introduzione
LAMP è un gruppo di software open source che viene in genere installato insieme per consentire a un server di ospitare siti Web dinamici e app Web.
LAMP comprende Apache, MySQL, PHP.
In questo tutorial installeremo LAMP con PrestaShop su Ubuntu 20.04 LTS Focal Fossa.
Se desideri installare Prestashop su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.
Connessione al Server
Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:
ssh root@IP_DEL_SERVER
Successivamente sarà necessario inserire la password dell'utente root.
Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:
ssh nome_utente@IP_DEL_SERVER
Successivamente vi verrà chiesto di inserire la password del vostro utente.
La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Installare Apache
I repository ufficiali dei pacchetti di Ubuntu includono una versione aggiornata di Apache, Possiamo quindi installare i pacchetti necessari usando apt.
Aggiornare l'elenco dei pacchetti di Ubuntu per avere la versione più recente degli elenchi del repository, da terminale:
sudo apt update
Per installare Apache aprire il terminale e dare questi comandi:
sudo apt install apache2
Se il firewall di Ubuntu è attivo dovete abilitare il traffico per Apache:
sudo ufw allow in "Apache Full"
A questo punto il server è pronto con le configurazioni di default.
Basta collegarsi al proprio indirizzo IP pubblico o nome dominio:
http://IP_OPPURE_NOME_DOMINIO
Per visualizzare lo stato di Apache:
sudo service apache2 status
Dovresti visualizzare un messaggio di output simile al seguente:
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-07-21 14:55:55 CEST; 5min ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 2907 (apache2)
Tasks: 55 (limit: 2286)
Memory: 5.1M
CGroup: /system.slice/apache2.service
├─2907 /usr/sbin/apache2 -k start
├─2908 /usr/sbin/apache2 -k start
└─2909 /usr/sbin/apache2 -k start
Per riavviare Apache:
sudo service apache2 restart
Per fermare Apache:
sudo service apache2 stop
Per avviare Apache:
sudo service apache2 start
Configurare un Virtual Host
Quando si utilizza il server Web Apache, è possibile utilizzare host virtuali per ospitare più domini, quindi più siti web su un singolo server. Configureremo un dominio chiamato esempio.com, ma dovresti utilizzare un dominio esistente.
Apache su Ubuntu 20.04 LTS Focal Fossa ha un blocco server abilitato di default che è configurato per servire i documenti dalla directory /var/www/html
correttamente funzionante per un singolo sito. Se si ospitano più siti conviene, invece di modificare /var/www/html
, creare una struttura di directory all'interno di /var/www
lasciando /var/www/html
come directory predefinita da servire se una richiesta client non corrisponde a qualsiasi altro sito configurato come virtual host.
Creare la directory per esempio.com
, usando il flag -p
per creare tutte le directory necessarie:
sudo mkdir -p /var/www/prestashop/
Assegnare l'utente corrente come proprietario della nuova directory:
sudo chown -R $USER:$USER /var/www/prestashop
Assicurarsi che i permessi siano corretti:
sudo chmod -R 755 /var/www/prestashop
Creare un nuovo file di configurazione per il virtual host di esempio.com
, senza andare quindi a modificare quello di default:
sudo nano /etc/apache2/sites-available/prestashop.conf
Incollare le seguenti righe di codice, facendo attenzione a modificare i valori per il vostro dominio, in questo caso esempio.com
:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName esempio.com
ServerAlias www.esempio.com
DocumentRoot /var/www/prestashop
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Salvare e chiudere il file.
Abilitare il nuovo sito:
sudo a2ensite prestashop.conf
Verificare se i dati inseriti nei file sono corrette:
sudo apache2ctl configtest
Dovresti visualizzare un messaggio di output simile al seguente:
Syntax OK
Se visualizzi questo messaggio: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
, puoi ignorarlo.
Riavviare Apache:
sudo systemctl restart apache2
Adesso è possibile collegarsi al virtual host appena creato collegandosi al proprio dominio:
http://esempio.com
Installare MySQL
È possibile installare MySQL utilizzando il repository ufficiale di Ubuntu con apt.
Installare MySQL:
sudo apt install mysql-server
Mettere in sicurezza MySQL
Avviare uno script di MySQL per modificare alcune impostazioni:
sudo mysql_secure_installation
Vi verrà chiesto di inserire una password per l'utente root, che utilizzerete per accedere al server MySQL.
Inserire "y" per "si" oppure qualsiasi altra lettera per "no".
Vi verrà chiesto se si vuole testare la sicurezza della password.
Successivamente è consigliato premere "y" quindi "si".
- Rimuovere gli utenti anonimi
- Disabilitare il login root da remoto
- Rimuovere il database test
- Aggiornare le nuove regole
Modificare il metodo di autenticazione
A partire dalla versione 5.7 di MySQL, l'utente root di MySQL è impostato per l'autenticazione tramite il plug-in auth_socket per impostazione di default anziché con una password.
Per utilizzare una password per connettersi a MySQL come utente root è necessario modificare il metodo di autenticazione, da auth_socket a mysql_native_password.
Poiché non è stata impostata ancora nessuna password, è possibile connettersi al server MySQL utilizzando semplicemente il comando mysql oppure sudo mysql se si è loggati come utente normale. Successivamente sarà necessario utilizzare il comando mysql -u root -p da utente root, altrimenti sudo mysql -u root -p da utente normale.
Quindi se siete loggati come utente root, scrivere nel terminale:
mysql
Altrimenti se siete loggati come utente normale con privilegi sudo:
sudo mysql
Per verificare il metodo di autenticazione associato agli account di mysql:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Dovresti ricevere un messaggio simile a questo:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$wiz.ZHn"U%%#RSRzx/183gaUy11ye4bLrE1dPfyuKzabsr9iPu/2hC/ | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | | auth_socket | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
Come potete vedere per l'utente root è impostato di default il metodo di autenticazione auth_socket
.
Per utilizzare l'autenticazione con password per l'account root effettuare le seguenti modifiche:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'TUA_PASSWORD';
Attenzione:
Potresti ricevere un messaggio di output simile al seguente:Your password does not satisfy the current policy requirements.
Leggi questo tutorial per risolvere il problema.
Quindi effettuare un refresh delle tabelle:
FLUSH PRIVILEGES;
Adesso è possibile verificare il nuovo metodo di autenticazione associato all'utente root:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Dovresti ricevere un messaggio simile a questo:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$wiz.ZHn"U%%#RSRzx/183gaUy11ye4bLrE1dPfyuKzabsr9iPu/2hC/ | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | *13097EDBBF2AB852D55D47ED1477E2901F60DFE1 | mysql_native_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
Uscire dal prompt di MySQL:
exit;
Per effettuare nuovamente il login al server MySQL adesso sarà necessario inserire una password, quindi da terminale:
Se hai effettuato il login come utente root, scrivere nel terminale:
mysql -u root -p
Altrimenti se hai fatto il login come utente normale con privilegi sudo:
sudo mysql -u root -p
Creare un database per PrestaShop:
CREATE DATABASE prestashop DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Creare e associare un nuovo utente al database prestashop con password e privilegi:
CREATE USER 'prestashopuser'@'localhost' IDENTIFIED BY 'nuova_password';
GRANT ALL PRIVILEGES ON prestashop.* TO 'prestashopuser'@'localhost' WITH GRANT OPTION;
Attenzione:
Potresti ricevere un messaggio di output simile al seguente:Your password does not satisfy the current policy requirements.
Leggi questo tutorial per risolvere il problema.
Aggiornare i privilegi:
FLUSH PRIVILEGES;
Uscire da mysql:
exit;
Installare PHP
Per installare PHP ed estensioni utili per PrestaShop, da terminale:
sudo apt install php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
Riavviare Apache:
sudo service apache2 restart
Installare PrestaShop
Dare i seguenti comandi da terminale, entrare nella cartella di PrestaShop:
cd /var/www/prestashop
Scaricare PrestaShop, attualmente l'ultima versione è la 1.7.6.7:
sudo wget https://download.prestashop.com/download/releases/prestashop_1.7.6.7.zip
Installare Zip ed Unzip per gestire gli archivi .zip:
sudo apt-get install zip unzip
Estrarre PrestaShop:
sudo unzip prestashop_1.7.6.7.zip
Estrarre l'archivio prestashop.zip:
sudo unzip prestashop.zip
Se richiesto sovrascrivere il file index.php. Quindi premere y e successivamente enter (tasto invio sulla tastiera).
Abilitare mod_rewrite:
sudo a2enmod rewrite
Riavviare Apache:
sudo service apache2 restart
Cambiare i permessi:
sudo chown -R www-data:www-data /var/www/
Collegarsi al proprio nome dominio:
http://esempio.com
Dovreste vedere la prima schermata di installazione di PrestaShop.
Conclusione
In questo tutorial abbiamo visto come installare Prestashop su Ubuntu 20.04 LTS Focal Fossa con LAMP, MySQL e PHP.
Se desideri utilizzare phpMyAdmin per la gestione del database leggi questo tutorial: Come installare e configurare phpMyAdmin su Ubuntu 20.04 LTS.
Puoi installare gratuitamente i certificati HTTPS (SSL) per ottenere una connessione sicura, leggi questo tutorial: Come installare Let's Encrypt per Apache su Ubuntu 20.04 LTS.