GNU/Linux >> Linux Esercitazione >  >> Debian

Come installare AbanteCart con Nginx e SSL su Debian 11

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.


Debian
  1. Come installare Nginx su Debian 9

  2. Come installare e configurare Drupal con Apache su Debian 9

  3. Come installare Nginx su Debian 8 (Jessie)

  4. Come installare Nginx su Debian 9 (Stretch)

  5. Come installare WonderCMS con Nginx su Debian 11

Come installare Drupal con Nginx e Let's Encrypt SSL su Debian 11

Come installare Joomla con Nginx e Let's Encrypt SSL su Debian 11

Come installare WordPress con Nginx e Let's Encrypt SSL su Debian 11

Installa Nginx con PHP e MySQL (LEMP) più SSL su Debian 10

Come installare Nginx con PHP-FPM su Debian 10

Come installare phpMyAdmin con Nginx su Debian 11