Abantecart è un'applicazione di e-commerce gratuita, open source e ricca di funzionalità. È scritto in PHP ed è alimentato dalle ultime tecnologie come HTML5, Bootstrap, MVC e altro. Può creare più negozi online utilizzando un'unica installazione con supporto per prodotti digitali e fisici, integrazione con più gateway di pagamento e valute, più lingue, coupon, crediti negozio e una dashboard del cliente. Puoi eseguire una campagna di email marketing attraverso di essa o creare banner per aumentare il coinvolgimento degli utenti. Inoltre, è ottimizzato SEO con supporto per URL amichevoli, si integra con più piattaforme di analisi e supporta i plug-in.
In questo tutorial imparerai come installare Abantecart su un server basato su Debian 11.
Prerequisiti
-
Un server che esegue Debian 11.
-
Un utente non root con privilegi sudo.
-
Tutto è aggiornato.
$ sudo apt update && sudo apt upgrade
-
Pochi pacchetti di cui il tuo sistema ha bisogno.
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release unzip debian-archive-keyring -y
Alcuni di questi pacchetti potrebbero essere già installati sul tuo sistema.
Passaggio 1:configurazione del firewall
Il primo passo è configurare il firewall. Debian viene fornito con ufw (Uncomplicated Firewall).
Controlla se il firewall è in esecuzione.
$ sudo ufw status
Dovresti ottenere il seguente output.
Status: inactive
Consenti porta SSH in modo che il firewall non interrompa la connessione corrente quando lo si abilita.
$ sudo ufw allow OpenSSH
Consenti anche le porte HTTP e HTTPS.
$ sudo ufw allow 80/tcp $ sudo ufw allow 443/tcp
Abilita il Firewall
$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Ricontrolla lo stato del firewall.
$ sudo ufw status
Dovresti vedere un output simile.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)
Fase 2 - Installa PHP
Abantecart supporta PHP 8.0. Per installarlo, utilizzeremo il repository PHP di Ondrej. Esegui il comando seguente per aggiungere il repository.
$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
Aggiungi la chiave GPG associata al repository.
$ wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
Aggiorna i repository Debian.
$ sudo apt update
Installa PHP 8.0 e le estensioni richieste.
$ sudo apt install php8.0-cli php8.0-fpm php8.0-mysql php8.0-gd php8.0-common php8.0-curl php8.0-xml php8.0-mbstring
Fase 3 - Installa MySQL
Per installare il server MySQL, il primo passo è aggiungere la chiave GPG per il pacchetto
C'è un bug in Debian per cui è necessario eseguire il comando GPG separatamente per configurare .gpg
directory.
$ sudo gpg
Premi Ctrl + C per uscire dal comando precedente. Importa la chiave GPG e salvala in /usr/share/keyrings
directory.
$ sudo gpg --no-default-keyring --keyring /usr/share/keyrings/mysql8.0-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --brecv-keys 3A79BD29
Aggiungi il repository MySQL ufficiale.
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/mysql8.0-archive-keyring.gpg] http://repo.mysql.com/apt/debian/ `lsb_release -cs` mysql-8.0" \ | sudo tee /etc/apt/sources.list.d/mysql-8.list
Aggiorna i repository Debian.
$ sudo apt update
Installa MySQL.
$ sudo apt install mysql-server
Verrai accolto con una schermata di configurazione che ti chiederà di impostare una password di root. Scegli una password complessa.
Ti verrà chiesto di confermare la password. Successivamente, ti verrà presentata una schermata che descrive il nuovo sistema di autenticazione. Seleziona OK per procedere.
Infine, ti verrà chiesto di selezionare il metodo di autenticazione. Scegli la Crittografia password avanzata e seleziona Ok per completare la configurazione.
Fase 4:installa Nginx
Debian viene fornito con una versione precedente di Nginx. Devi scaricare il repository Nginx ufficiale per installare l'ultima versione.
Importa la chiave di firma Nginx ufficiale.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Aggiungi il repository per la versione stabile di Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Aggiorna i repository Debian.
$ sudo apt update
Installa Nginx.
$ sudo apt install nginx
Verificare l'installazione. Assicurati di utilizzare sudo
ogni volta che esegui il comando Nginx su Debian. Altrimenti, non funzionerà.
$ sudo nginx -v nginx version: nginx/1.20.2
Abilita il servizio Nginx.
$ sudo systemctl enable nginx
Passaggio 5 - Configura MySQL per AbanteCart
Installazione sicura di MySQL.
$ sudo mysql_secure_installation
Per il primo passaggio, ti verrà richiesta la password di root. Successivamente, ti verrà chiesto se desideri impostare il plug-in Validate Password, che puoi utilizzare per testare la forza della tua password MySQL. Scegli Y
procedere. Ti verrà chiesto di scegliere il livello di convalida della password nel passaggio successivo. Scegli 2
che è il livello più forte e richiederà che la tua password contenga almeno otto caratteri e includa una combinazione di caratteri maiuscoli, minuscoli, numerici e speciali.
Securing the MySQL server deployment. Enter password for user root: VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Nel passaggio successivo, ti verrà chiesto se modificare o meno la password di root. Premi N
per continuare.
Using existing password for root. Estimated strength of the password: 100 Change the password for root ? ((Press y|Y for Yes, any other key for No) : N
Premi Y
e poi ENTER
chiave per tutte le seguenti richieste per rimuovere gli utenti anonimi e il database di test, disabilitare gli accessi root e caricare le regole appena impostate.
... Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y Success. ... Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y Success. ... Remove test database and access to it? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : Y Success. All done!
Entra nella shell MySQL. Inserisci la tua password di root per continuare.
$ mysql -u root -p
Crea abcart
utente. Assicurati che la password soddisfi i requisiti impostati in precedenza.
mysql> CREATE USER 'abcart'@'localhost' IDENTIFIED BY 'Your_password2';
Crea abantecart
banca dati.
mysql> CREATE DATABASE abantecart;
Concedi all'utente i privilegi sul abantecart
banca dati.
mysql> GRANT ALL PRIVILEGES ON abantecart.* TO 'abcart'@'localhost';
Esci dalla shell.
mysql> exit
Passaggio 6 - Installa AbanteCart
Scarica l'ultima versione di AbanteCart da Github.
$ wget https://github.com/abantecart/abantecart-src/archive/master.zip
Estrai il file.
$ unzip master.zip
Crea la directory principale web pubblica per Abantecart.
$ sudo mkdir /var/www/html/abantecart -p
Copia il abantecart-src-master/public_html
estratto directory nella directory webroot. Nota la barra (/ ) alla fine del comando successivo.
$ sudo cp -r abantecart-src-master/public_html /var/www/html/abantecart/
Imposta le autorizzazioni appropriate per la directory webroot.
$ sudo chown -R nginx:nginx /var/www/html/abantecart
Per ora, l'installazione di base è terminata. Successivamente, dobbiamo configurare SSL e Nginx prima di completare l'installazione.
Passaggio 7 - Installa SSL
Per installare un certificato SSL utilizzando Let's Encrypt, è necessario installare lo strumento Certbot.
Useremo il programma di installazione del pacchetto Snapd per questo. Poiché la maggior parte dei server Debian non viene fornito con esso, installa Snap.
$ sudo apt install snapd
Assicurati che la tua versione di Snapd sia aggiornata.
$ sudo snap install core && sudo snap refresh core
Installa Certbot.
$ sudo snap install --classic certbot
Utilizzare il comando seguente per assicurarsi che il comando Certbot possa essere eseguito creando un collegamento simbolico al /usr/bin
directory.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Verifica l'installazione.
$ certbot --version certbot 1.22.0
Genera il certificato SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d abantecart.example.com
Il comando precedente scaricherà un certificato in /etc/letsencrypt/live/abantecart.example.com
directory sul tuo server.
Genera un gruppo Diffie-Hellman certificato.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Crea una directory webroot di sfida per il rinnovo automatico di Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Crea un Cron Job per rinnovare l'SSL. Verrà eseguito ogni giorno per controllare il certificato e rinnovarlo se necessario. Per questo, prima crea il file /etc/cron.daily/certbot-renew
e aprilo per la modifica.
$ sudo nano /etc/cron.daily/certbot-renew
Incolla il seguente codice.
#!/bin/sh certbot renew --cert-name abantecart.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Modifica le autorizzazioni sul file dell'attività per renderlo eseguibile.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Passaggio 8 - Configura Nginx e PHP
Configura PHP-FPM
Apri il file /etc/php/8.0/fpm/pool.d/www.conf
.
$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf
Dobbiamo impostare l'utente/gruppo di processi PHP Unix su nginx . Trova il user=www-data
e group=www-data
righe nel file e cambiale in nginx
.
... ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = nginx group = nginx ...
Inoltre, trova le righe listen.owner=www-data
e listen.group=www-data
nel file e cambiali in nginx
.
listen.owner = nginx listen.group = nginx
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Il prossimo passo è disabilitare l'estensione opcache PHP.
Apri il file /etc/php/8.0/fpm/conf.d/10-opcache.ini
per la modifica.
$ sudo nano /etc/php/8.0/fpm/conf.d/10-opcache.ini
Incolla la riga seguente alla fine.
opcache.enable=0
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia il processo PHP-fpm.
$ sudo systemctl restart php8.0-fpm
Configura Nginx
Crea e apri il file /etc/nginx/conf.d/abantecart.conf
per la modifica.
$ sudo nano /etc/nginx/conf.d/abantecart.conf
Incolla il seguente codice al suo interno.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name abantecart.example.com; access_log /var/log/nginx/abantecart.access.log; error_log /var/log/nginx/abantecart.error.log; # SSL ssl_certificate /etc/letsencrypt/live/abantecart.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/abantecart.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/abantecart.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 8.8.8.8; root /var/www/html/abantecart; index index.php; location / { try_files $uri $uri/ /index.php?$args; } # Pass PHP Scripts To FastCGI Server location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass unix:/run/php/php8.0-fpm.sock; # Depends On The PHP Version fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; try_files $uri =404; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } # Make sure files with the following extensions do not get loaded by nginx because nginx would # display the source code, and these files can contain PASSWORDS! location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ { deny all; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac). location ~ /\. { deny all; access_log off; log_not_found off; } ### Retina images handler. Check cookie and looking for file with @2x at the end of name location ~* ^(.*)\.(jpg|jpeg|png|gif|webp)$ { set $hidpi_uri [email protected]$2; if ($http_cookie !~ 'HTTP_IS_RETINA=1') { break; } try_files $hidpi_uri $uri =404; } location ~* \.(jpg|jpeg|png|gif|css|js|ico|webp)$ { expires max; log_not_found off; } location ~ /(system/logs|resources/download) { deny all; return 403; } location /admin/ { location ~ .*\.(php)?$ { deny all; return 403; } } #rewrite for images for retina-displays location ~ / { if (!-e $request_filename){ rewrite ^/(.*)\?*$ /index.php?_route_=$1 last; } } } # enforce HTTPS server { listen 80; listen [::]:80; server_name abantecart.example.com; return 301 https://$host$request_uri; }
Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.
Apri il file /etc/nginx/nginx.conf
per la modifica.
$ sudo nano /etc/nginx/nginx.conf
Aggiungi la riga seguente prima della riga include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Verifica la sintassi del file di configurazione Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Avvia il servizio Nginx per abilitare la nuova configurazione.
$ sudo systemctl start nginx
Fase 9 - Termina l'installazione
Avvia https://abantecart.example.com
nel tuo browser e ti verrà presentata la seguente schermata.
Seleziona la casella per accettare la licenza e premi Continua procedere. Successivamente, il programma di installazione verificherà se tutti i requisiti sono stati soddisfatti o meno.
Se tutto è a posto, premi Continua per passare alla pagina successiva.
Ti verrà chiesto di inserire le credenziali del database. Qui puoi creare un account amministratore e una chiave di sicurezza per accedere al pannello di controllo. Se vuoi dati demo, tieni la casella selezionata, altrimenti lasciala deselezionata se vuoi ricominciare da zero.
Premi Continua per procedere una volta terminato. L'installatore procederà quindi con la configurazione del tutto e, una volta terminato, ti presenterà la seguente schermata.
Aggiungi il link al tuo pannello di controllo come segnalibro perché ne avrai bisogno. Esegui il comando seguente per eliminare i file di installazione perché non sono necessari e rappresentano un rischio per la sicurezza.
$ sudo rm -rf /var/www/html/abantecart/install
Accedi al Pannello di controllo e ti verrà chiesto di completare la configurazione del tuo negozio.
Puoi chiudere la procedura guidata rapida e configurarla dal Pannello di controllo mostrato di seguito o continuare con la procedura guidata per configurare le impostazioni di base.
Conclusione
Questo conclude il nostro tutorial sulla configurazione di AbanteCart su un server basato su Debian 11. Se hai domande, pubblicale nei commenti qui sotto.