GNU/Linux >> Znalost Linux >  >> Debian

Jak nainstalovat AbanteCart s Nginx a SSL na Debian 11

Abantecart je bezplatná aplikace pro elektronický obchod s otevřeným zdrojovým kódem a bohatými funkcemi. Je napsán v PHP a využívá nejnovější technologie jako HTML5, Bootstrap, MVC a další. Dokáže vytvořit více online obchodů pomocí jediné instalace s podporou digitálních a fyzických produktů, integrací s více platebními bránami a měnami, více jazyky, kupóny, kredity obchodů a zákaznickým panelem. Můžete přes něj provozovat e-mailovou marketingovou kampaň nebo vytvářet bannery pro zvýšení zapojení uživatelů. Navíc je optimalizován pro SEO s podporou přátelských adres URL, integruje se s více analytickými platformami a podporuje pluginy.

V tomto tutoriálu se naučíte, jak nainstalovat Abantecart na server založený na Debianu 11.

Předpoklady

  • Server se systémem Debian 11.

  • Uživatel bez oprávnění root s právy sudo.

  • Vše je aktualizováno.

    $ sudo apt update && sudo apt upgrade
    
  • Několik balíčků, které váš systém potřebuje.

    $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release unzip debian-archive-keyring -y
    

    Některé z těchto balíčků již mohou být ve vašem systému nainstalovány.

Krok 1 – Konfigurace brány firewall

Prvním krokem je konfigurace firewallu. Debian je dodáván s ufw (Uncomplicated Firewall).

Zkontrolujte, zda je spuštěna brána firewall.

$ sudo ufw status

Měli byste získat následující výstup.

Status: inactive

Povolte port SSH, aby firewall při jeho povolení nepřerušil aktuální připojení.

$ sudo ufw allow OpenSSH

Povolit také porty HTTP a HTTPS.

$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp

Povolte bránu firewall

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Znovu zkontrolujte stav brány firewall.

$ sudo ufw status

Měli byste vidět podobný výstup.

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)

Krok 2 – Instalace PHP

Abantecart podporuje PHP 8.0. K jeho instalaci použijeme Ondřejův PHP repozitář. Spuštěním následujícího příkazu přidejte úložiště.

$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list

Přidejte klíč GPG přidružený k úložišti.

$ wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -

Aktualizujte repozitáře Debianu.

$ sudo apt update

Nainstalujte PHP 8.0 a požadovaná rozšíření.

$ 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

Krok 3 – Instalace MySQL

Chcete-li nainstalovat server MySQL, prvním krokem je přidání klíče GPG pro balíček

V Debianu se vyskytla chyba, kdy pro nastavení .gpg musíte samostatně spustit příkaz GPG adresář.

$ sudo gpg

Stiskněte Ctrl + C pro ukončení výše uvedeného příkazu. Importujte klíč GPG a uložte jej do /usr/share/keyrings adresář.

$ sudo gpg --no-default-keyring --keyring /usr/share/keyrings/mysql8.0-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --brecv-keys 3A79BD29

Přidejte oficiální úložiště MySQL.

$ 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

Aktualizujte repozitáře Debianu.

$ sudo apt update

Nainstalujte MySQL.

$ sudo apt install mysql-server

Uvítá vás konfigurační obrazovka s výzvou k nastavení hesla uživatele root. Zvolte silné heslo.

Budete požádáni o potvrzení hesla. Dále se vám zobrazí obrazovka popisující nový systém ověřování. Vyberte OK pokračovat.

Nakonec budete požádáni o výběr metody ověřování. Zvolte Šifrování silného hesla a vyberte OK dokončete nastavení.

Krok 4 – Instalace Nginx

Debian se dodává se starší verzí Nginx. Chcete-li nainstalovat nejnovější verzi, musíte si stáhnout oficiální úložiště Nginx.

Importujte oficiální podpisový klíč Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
	 | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Přidejte úložiště pro stabilní verzi 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

Aktualizujte repozitáře Debianu.

$ sudo apt update

Nainstalujte Nginx.

$ sudo apt install nginx

Ověřte instalaci. Ujistěte se, že používáte sudo pokaždé, když spustíte příkaz Nginx v Debianu. Jinak to nebude fungovat.

$ sudo nginx -v
nginx version: nginx/1.20.2

Povolte službu Nginx.

$ sudo systemctl enable nginx

Krok 5 – Konfigurace MySQL pro AbanteCart

Bezpečná instalace MySQL.

$ sudo mysql_secure_installation

V prvním kroku budete požádáni o heslo uživatele root. Dále budete dotázáni, zda chcete nastavit modul Validate Password Plugin, pomocí kterého můžete otestovat sílu svého hesla MySQL. Vyberte Y pokračovat. V dalším kroku budete požádáni o výběr úrovně ověření hesla. Vyberte 2 což je nejsilnější úroveň a bude vyžadovat, aby vaše heslo mělo alespoň osm znaků a obsahovalo kombinaci velkých, malých písmen, čísel a speciálních znaků.

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

V dalším kroku budete dotázáni, zda chcete změnit heslo uživatele root. Stiskněte N pokračovat.

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

Stiskněte Y a poté ENTER klíč pro všechny následující výzvy k odstranění anonymních uživatelů a testovací databáze, zakázání přihlášení root a načtení nově nastavených pravidel.

...
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!

Vstupte do prostředí MySQL. Pokračujte zadáním hesla uživatele root.

$ mysql -u root -p

Vytvořte abcart uživatel. Ujistěte se, že heslo splňuje výše nastavené požadavky.

mysql> CREATE USER 'abcart'@'localhost' IDENTIFIED BY 'Your_password2';

Vytvořte abantecart databáze.

mysql> CREATE DATABASE abantecart;

Udělte uživatelská oprávnění na abantecart databáze.

mysql> GRANT ALL PRIVILEGES ON abantecart.* TO 'abcart'@'localhost';

Opusťte Shell.

mysql> exit

Krok 6 – Instalace Abantecart

Stáhněte si nejnovější verzi AbanteCart z Github.

$ wget https://github.com/abantecart/abantecart-src/archive/master.zip

Extrahujte soubor.

$ unzip master.zip

Vytvořte veřejný webový kořenový adresář pro Abantecart.

$ sudo mkdir /var/www/html/abantecart -p

Zkopírujte extrahovaný abantecart-src-master/public_html adresáře do adresáře webroot. Všimněte si lomítka (/ ) na konci následujícího příkazu.

$ sudo cp -r abantecart-src-master/public_html /var/www/html/abantecart/

Nastavte správná oprávnění k adresáři webroot.

$ sudo chown -R nginx:nginx /var/www/html/abantecart

Prozatím je základní instalace hotová. Dále musíme před dokončením instalace nastavit SSL a Nginx.

Krok 7 – Instalace protokolu SSL

Chcete-li nainstalovat certifikát SSL pomocí Let's Encrypt, musíme nainstalovat nástroj Certbot.

Použijeme k tomu instalační program balíčku Snapd. Protože se s ním většina serverů Debianu nedodává, nainstalujte Snap.

$ sudo apt install snapd

Ujistěte se, že vaše verze Snapd je aktuální.

$ sudo snap install core && sudo snap refresh core

Nainstalujte Certbot.

$ sudo snap install --classic certbot

Pomocí následujícího příkazu zajistěte, aby bylo možné spustit příkaz Certbot vytvořením symbolického odkazu na /usr/bin adresář.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Ověřte instalaci.

$ certbot --version
certbot 1.22.0

Vygenerujte certifikát SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d abantecart.example.com

Výše uvedený příkaz stáhne certifikát do /etc/letsencrypt/live/abantecart.example.com adresář na vašem serveru.

Vytvořte skupinu Diffie-Hellman certifikát.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Vytvořte adresář webroot s výzvou pro automatické obnovení Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Vytvořte úlohu Cron pro obnovení SSL. Poběží každý den, aby se zkontroloval certifikát a v případě potřeby se obnoví. Nejprve vytvořte soubor /etc/cron.daily/certbot-renew a otevřete jej pro úpravy.

$ sudo nano /etc/cron.daily/certbot-renew

Vložte následující kód.

#!/bin/sh
certbot renew --cert-name abantecart.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Změňte oprávnění k souboru úlohy, aby byl spustitelný.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Krok 8 – Konfigurace Nginx a PHP

Konfigurace PHP-FPM

Otevřete soubor /etc/php/8.0/fpm/pool.d/www.conf .

$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf

Musíme nastavit unixového uživatele/skupinu PHP procesů na nginx . Najděte user=www-data a group=www-data řádků v souboru a změňte je na 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
...

Najděte také řádky listen.owner=www-data a listen.group=www-data v souboru a změňte je na nginx .

listen.owner = nginx
listen.group = nginx

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Dalším krokem je deaktivace rozšíření opcache PHP.

Otevřete soubor /etc/php/8.0/fpm/conf.d/10-opcache.ini pro úpravy.

$ sudo nano /etc/php/8.0/fpm/conf.d/10-opcache.ini

Vložte následující řádek na konec.

opcache.enable=0

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Restartujte proces PHP-fpm.

$ sudo systemctl restart php8.0-fpm

Nakonfigurujte Nginx

Vytvořte a otevřete soubor /etc/nginx/conf.d/abantecart.conf pro úpravy.

$ sudo nano /etc/nginx/conf.d/abantecart.conf

Vložte do něj následující kód.

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;
}

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni po dokončení.

Otevřete soubor /etc/nginx/nginx.conf pro úpravy.

$ sudo nano /etc/nginx/nginx.conf

Přidejte následující řádek před řádek include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size  64;

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Ověřte syntaxi konfiguračního souboru 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

Spusťte službu Nginx a povolte novou konfiguraci.

$ sudo systemctl start nginx

Krok 9 – Dokončete instalaci

Spusťte https://abantecart.example.com ve vašem prohlížeči a zobrazí se vám následující obrazovka.

Zaškrtnutím políčka souhlasíte s licencí a stiskněte Pokračovat pokračovat. Instalační program dále zkontroluje, zda jsou splněny všechny požadavky.

Pokud je vše v pořádku, stiskněte Pokračovat přejděte na další stránku.

Budete požádáni o vyplnění přihlašovacích údajů k databázi. Zde si můžete vytvořit účet správce a bezpečnostní klíč pro přístup k ovládacímu panelu. Pokud chcete demo data, ponechte políčko zaškrtnuté, jinak jej ponechte nezaškrtnuté, pokud chcete začít od začátku.

Stiskněte Pokračovat pokračovat po dokončení. Instalační program poté bude pokračovat v nastavení všeho a po dokončení se vám zobrazí následující obrazovka.

Uložte si odkaz na svůj ovládací panel do záložek, protože jej budete potřebovat. Spuštěním následujícího příkazu odstraňte instalační soubory, protože nejsou potřeba a představují bezpečnostní riziko.

$ sudo rm -rf /var/www/html/abantecart/install

Přihlaste se do ovládacího panelu a budete požádáni o dokončení nastavení vašeho obchodu.

Můžete buď zavřít rychlého průvodce a nakonfigurovat jej z ovládacího panelu zobrazeného níže, nebo pokračovat v průvodci a nastavit základní nastavení.

Závěr

Tímto končí náš tutoriál o nastavení AbanteCart na serveru založeném na Debianu 11. Pokud máte nějaké dotazy, napište je do komentářů níže.


Debian
  1. Jak nainstalovat Nginx na Debian 8 (Jessie)

  2. Jak nainstalovat Nginx na Debian 9 (Stretch)

  3. Jak nainstalovat WonderCMS s Nginx na Debian 11

  1. Jak nainstalovat Nginx na Debian 9

  2. Jak nainstalovat a nakonfigurovat Drupal s Apache na Debian 9

  3. Nainstalujte Lets Encrypt and Secure Nginx pomocí SSL/TLS v Debianu 9

  1. Jak nainstalovat InvoicePlane s Nginx na Debian 9

  2. Jak nainstalovat Drupal 9 s Nginx a nechat šifrovat SSL na Debian 10

  3. Jak nainstalovat diskusní fórum s Nginx a zdarma umožňuje šifrovat SSL na Debian 11