Come installare AbanteCart con Nginx e SSL su Debian 11
Su questa pagina
- Prerequisiti
- Passaggio 1: configurazione del firewall
- Passaggio 2 - Installa PHP
- Passaggio 3 - Installa MySQL
- Passaggio 4 - Installa Nginx
- Passaggio 5 - Configura MySQL per AbanteCart
- Passaggio 6 - Installa AbanteCart
- Passaggio 7 - Installa SSL
- Passaggio 8 - Configura Nginx e PHP
- Configura PHP-FPM
- Configura Nginx
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 del 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 per SEO con supporto per URL amichevoli, si integra con più piattaforme di analisi e supporta plug-in.
In questo tutorial imparerai come installare Abantecart su un server basato su Debian 11.
Prerequisiti
-
A server running Debian 11.
-
A non-root user with sudo privileges.
-
Everything is updated.
$ sudo apt update && sudo apt upgrade
-
Few packages that your system needs.
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release unzip debian-archive-keyring -y
Some of these packages may already be installed on your system.
Passaggio 1: configurare il 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 attivandola.
$ sudo ufw allow OpenSSH
Consenti anche 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
Controlla di nuovo 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)
Passaggio 2: installa PHP
Abantecart supporta PHP 8.0. Per installarlo, utilizzeremo il repository PHP di Ondrejs. Eseguire 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
Aggiungere 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
Passaggio 3: installa MySQL
Per installare il server MySQL, il primo passo è aggiungere la chiave GPG per il pacchetto
C'è un bug in Debian in cui è necessario eseguire il comando GPG separatamente per impostare la directory
.gpg
.$ sudo gpg
Premi Ctrl + C per uscire dal comando precedente. Importa la chiave GPG e salvala nella directory
/usr/share/keyrings
.$ 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
Sarai 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. Selezionare OK per procedere.
Infine, ti verrà chiesto di selezionare il metodo di autenticazione. Scegli la crittografia forte della password e seleziona Ok per completare la configurazione.
Passaggio 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 Nginxs.
$ 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
Passo 5 - Configura MySQL per AbanteCart
Installazione sicura di MySQL.
$ sudo mysql_secure_installation
Per il primo passaggio, ti verrà chiesta la password di root. Successivamente, ti verrà chiesto se desideri impostare il plug-in Validate Password, che puoi utilizzare per testare la sicurezza della tua password MySQL. Scegli
Y
per procedere. Ti verrà chiesto di scegliere il livello di convalida della password nel passaggio successivo. Scegli2
che è il livello più forte e richiederà che la tua password sia lunga almeno otto caratteri e includa un mix 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 il tastoINVIO
per tutti i seguenti prompt per rimuovere gli utenti anonimi e il database di test, disabilitare i login root e caricare le nuove regole 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!
Inserisci la shell MySQL. Inserisci la tua password di root per continuare.
$ mysql -u root -p
Crea un utente
abcart
. Assicurati che la password soddisfi i requisiti impostati in precedenza.mysql> CREATE USER 'abcart'@'localhost' IDENTIFIED BY 'Your_password2';
Crea il database
abantecart
.mysql> CREATE DATABASE abantecart;
Concedi all'utente i privilegi sul database
abantecart
.mysql> GRANT ALL PRIVILEGES ON abantecart.* TO 'abcart'@'localhost';
Esci dalla shell.
mysql> exit
Passo 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 radice web pubblica per Abantecart.
$ sudo mkdir /var/www/html/abantecart -p
Copia la directory
abantecart-src-master/public_html
estratta nella directory webroot. Nota la barra (/) alla fine del seguente comando.$ 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 terminare l'installazione.
Passaggio 7: installa SSL
Per installare un certificato SSL utilizzando Lets 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 fornita 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 Cerbot.
$ sudo snap install --classic certbot
Utilizzare il seguente comando per assicurarsi che il comando Certbot possa essere eseguito creando un collegamento simbolico alla directory
/usr/bin
.$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Verificare 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 -d abantecart.example.com
Il comando precedente scaricherà un certificato nella directory
/etc/letsencrypt/live/abantecart.example.com
sul tuo server.Genera un certificato di gruppo Diffie-Hellman.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Crea una directory webroot di verifica per il rinnovo automatico di Lets 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, per prima cosa, crea il file
/etc/cron.daily/certbot-renew
e aprilo per modificarlo.$ 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.
Modificare le autorizzazioni sul file dell'attività per renderlo eseguibile.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Passaggio 8: configurare 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 Unix di processi PHP su nginx. Trova le righe
user=www-data
egroup=www-data
nel file e modificale innginx.
... ; 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
elisten.group=www-data
nel file e modificale innginx
.listen.owner = nginx listen.group = nginx
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Il prossimo passo è disabilitare l'estensione PHP opcache.
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 seguente riga 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 $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
Aggiungere 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.
Verificare la sintassi del file di configurazione di 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
Passaggio 9: terminare 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 per procedere. Successivamente, il programma di installazione verificherà se tutti i requisiti sono 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 iniziare da zero.
Premere Continua per procedere al termine. L'installer procederà quindi con l'impostazione del tutto e, una volta terminato, ti presenterà la seguente schermata.
Aggiungi il collegamento al tuo pannello di controllo nei segnalibri perché ne avrai bisogno. Eseguire il comando seguente per eliminare i file del programma 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.
È possibile 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.