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.