GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So installieren Sie AbanteCart mit Nginx und SSL unter Debian 11

Abantecart ist eine kostenlose, Open-Source- und funktionsreiche E-Commerce-Anwendung. Es ist in PHP geschrieben und basiert auf den neuesten Technologien wie HTML5, Bootstrap, MVC und mehr. Es kann mehrere Online-Shops mit einer einzigen Installation mit Unterstützung für digitale und physische Produkte, Integration mit mehreren Zahlungs-Gateways und Währungen, mehreren Sprachen, Coupons, Shop-Guthaben und einem Kunden-Dashboard erstellen. Sie können damit eine E-Mail-Marketingkampagne durchführen oder Banner erstellen, um die Benutzerbindung zu erhöhen. Darüber hinaus ist es SEO-optimiert mit Unterstützung für benutzerfreundliche URLs, lässt sich in mehrere Analyseplattformen integrieren und unterstützt Plugins.

In diesem Tutorial erfahren Sie, wie Sie Abantecart auf einem Debian 11-basierten Server installieren.

Voraussetzungen

  • Ein Server mit Debian 11.

  • Ein Nicht-Root-Benutzer mit sudo-Berechtigungen.

  • Alles ist aktualisiert.

    $ sudo apt update && sudo apt upgrade
    
  • Einige Pakete, die Ihr System benötigt.

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

    Einige dieser Pakete sind möglicherweise bereits auf Ihrem System installiert.

Schritt 1 – Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Debian kommt mit ufw (Uncomplicated Firewall).

Überprüfen Sie, ob die Firewall ausgeführt wird.

$ sudo ufw status

Sie sollten die folgende Ausgabe erhalten.

Status: inactive

SSH-Port zulassen, damit die Firewall die aktuelle Verbindung beim Aktivieren nicht unterbricht.

$ sudo ufw allow OpenSSH

Lassen Sie auch HTTP- und HTTPS-Ports zu.

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

Aktivieren Sie die Firewall

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

Überprüfen Sie den Status der Firewall erneut.

$ sudo ufw status

Sie sollten eine ähnliche Ausgabe sehen.

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)

Schritt 2 - PHP installieren

Abantecart unterstützt PHP 8.0. Um es zu installieren, verwenden wir das PHP-Repository von Ondrej. Führen Sie den folgenden Befehl aus, um das Repository hinzuzufügen.

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

Fügen Sie den mit dem Repository verknüpften GPG-Schlüssel hinzu.

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

Aktualisieren Sie die Debian-Repositories.

$ sudo apt update

Installieren Sie PHP 8.0 und die erforderlichen Erweiterungen.

$ 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

Schritt 3 – MySQL installieren

Um den MySQL-Server zu installieren, ist der erste Schritt, den GPG-Schlüssel für das Paket hinzuzufügen

Es gibt einen Fehler in Debian, bei dem Sie den GPG-Befehl separat ausführen müssen, um .gpg einzurichten Verzeichnis.

$ sudo gpg

Drücken Sie Strg + C um den obigen Befehl zu beenden. Importieren Sie den GPG-Schlüssel und speichern Sie ihn unter /usr/share/keyrings Verzeichnis.

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

Fügen Sie das offizielle MySQL-Repository hinzu.

$ 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

Aktualisieren Sie die Debian-Repositories.

$ sudo apt update

Installieren Sie MySQL.

$ sudo apt install mysql-server

Sie werden mit einem Konfigurationsbildschirm begrüßt, in dem Sie aufgefordert werden, ein Root-Passwort einzurichten. Wählen Sie ein sicheres Passwort.

Sie werden aufgefordert, das Passwort zu bestätigen. Als nächstes wird Ihnen ein Bildschirm angezeigt, der das neue Authentifizierungssystem beschreibt. Wählen Sie OK um fortzufahren.

Abschließend werden Sie aufgefordert, die Authentifizierungsmethode auszuwählen. Wählen Sie die Starke Passwortverschlüsselung und wählen Sie OK um die Einrichtung abzuschließen.

Schritt 4 – Nginx installieren

Debian wird mit einer älteren Version von Nginx ausgeliefert. Sie müssen das offizielle Nginx-Repository herunterladen, um die neueste Version zu installieren.

Importieren Sie den offiziellen Nginx-Signaturschlüssel.

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

Fügen Sie das Repository für die stabile Version von Nginx hinzu.

$ 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

Aktualisieren Sie die Debian-Repositories.

$ sudo apt update

Nginx installieren.

$ sudo apt install nginx

Überprüfen Sie die Installation. Stellen Sie sicher, dass Sie sudo verwenden jedes Mal, wenn Sie den Nginx-Befehl unter Debian ausführen. Andernfalls funktioniert es nicht.

$ sudo nginx -v
nginx version: nginx/1.20.2

Aktivieren Sie den Nginx-Dienst.

$ sudo systemctl enable nginx

Schritt 5 – MySQL für AbanteCart konfigurieren

Sichere MySQL-Installation.

$ sudo mysql_secure_installation

Im ersten Schritt werden Sie nach Ihrem Root-Passwort gefragt. Als nächstes werden Sie gefragt, ob Sie das Validate Password Plugin einrichten möchten, mit dem Sie die Stärke Ihres MySQL-Passworts testen können. Wählen Sie Y fortfahren. Im nächsten Schritt werden Sie aufgefordert, die Passwortvalidierungsstufe auszuwählen. Wählen Sie 2 Dies ist die stärkste Stufe und erfordert, dass Ihr Passwort mindestens acht Zeichen lang ist und eine Mischung aus Großbuchstaben, Kleinbuchstaben, Ziffern und Sonderzeichen enthält.

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

Im nächsten Schritt werden Sie gefragt, ob Sie das Root-Passwort ändern möchten oder nicht. Drücken Sie N um fortzufahren.

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

Drücken Sie Y und dann ENTER Schlüssel für alle folgenden Eingabeaufforderungen, um anonyme Benutzer und die Testdatenbank zu entfernen, Root-Anmeldungen zu deaktivieren und die neu festgelegten Regeln zu laden.

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

Geben Sie die MySQL-Shell ein. Geben Sie Ihr Root-Passwort ein, um fortzufahren.

$ mysql -u root -p

Erstellen Sie abcart Benutzer. Stellen Sie sicher, dass das Passwort die zuvor festgelegten Anforderungen erfüllt.

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

abantecart erstellen Datenbank.

mysql> CREATE DATABASE abantecart;

Gewähren Sie dem Benutzer Berechtigungen für abantecart Datenbank.

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

Verlassen Sie die Shell.

mysql> exit

Schritt 6 - AbanteCart installieren

Laden Sie die neueste Version von AbanteCart von Github herunter.

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

Extrahieren Sie die Datei.

$ unzip master.zip

Erstellen Sie das öffentliche Web-Root-Verzeichnis für Abantecart.

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

Kopieren Sie den extrahierten abantecart-src-master/public_html Verzeichnis in das Webroot-Verzeichnis. Beachten Sie den Schrägstrich (/ ) am Ende des folgenden Befehls.

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

Legen Sie die richtigen Berechtigungen für das Webroot-Verzeichnis fest.

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

Die Grundinstallation ist vorerst abgeschlossen. Als nächstes müssen wir SSL und Nginx einrichten, bevor wir die Installation abschließen.

Schritt 7 – SSL installieren

Um ein SSL-Zertifikat mit Let's Encrypt zu installieren, müssen wir das Certbot-Tool installieren.

Wir werden dafür das Snapd-Paketinstallationsprogramm verwenden. Da die meisten Debian-Server nicht damit ausgeliefert werden, installieren Sie Snap.

$ sudo apt install snapd

Stellen Sie sicher, dass Ihre Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

Certbot installieren.

$ sudo snap install --classic certbot

Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zu /usr/bin erstellen Verzeichnis.

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

Überprüfen Sie die Installation.

$ certbot --version
certbot 1.22.0

Generieren Sie das SSL-Zertifikat.

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

Der obige Befehl lädt ein Zertifikat in /etc/letsencrypt/live/abantecart.example.com herunter Verzeichnis auf Ihrem Server.

Erstellen Sie eine Diffie-Hellman-Gruppe Zertifikat.

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

Erstellen Sie ein herausforderndes Webroot-Verzeichnis für die automatische Verlängerung von Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Erstellen Sie einen Cron-Job, um das SSL zu erneuern. Es wird jeden Tag ausgeführt, um das Zertifikat zu überprüfen und bei Bedarf zu erneuern. Erstellen Sie dazu zunächst die Datei /etc/cron.daily/certbot-renew und zum Bearbeiten öffnen.

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

Fügen Sie den folgenden Code ein.

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

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Ändern Sie die Berechtigungen für die Aufgabendatei, um sie ausführbar zu machen.

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

Schritt 8 – Nginx und PHP konfigurieren

PHP-FPM konfigurieren

Öffnen Sie die Datei /etc/php/8.0/fpm/pool.d/www.conf .

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

Wir müssen den Unix-Benutzer/die Gruppe von PHP-Prozessen auf nginx setzen . Suchen Sie user=www-data und group=www-data Zeilen in der Datei und ändern Sie sie 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
...

Suchen Sie auch die Zeilen listen.owner=www-data und listen.group=www-data in der Datei und ändern Sie sie in nginx .

listen.owner = nginx
listen.group = nginx

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Der nächste Schritt besteht darin, die PHP-Opcache-Erweiterung zu deaktivieren.

Öffnen Sie die Datei /etc/php/8.0/fpm/conf.d/10-opcache.ini zum Bearbeiten.

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

Fügen Sie am Ende die folgende Zeile ein.

opcache.enable=0

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Starten Sie den PHP-fpm-Prozess neu.

$ sudo systemctl restart php8.0-fpm

Nginx konfigurieren

Erstellen und öffnen Sie die Datei /etc/nginx/conf.d/abantecart.conf zum Bearbeiten.

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

Fügen Sie den folgenden Code ein.

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;
}
zurück

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden, sobald Sie fertig sind.

Öffnen Sie die Datei /etc/nginx/nginx.conf zum Bearbeiten.

$ sudo nano /etc/nginx/nginx.conf

Fügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu .

server_names_hash_bucket_size  64;

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Überprüfen Sie die Syntax der Nginx-Konfigurationsdatei.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starten Sie den Nginx-Dienst, um die neue Konfiguration zu aktivieren.

$ sudo systemctl start nginx

Schritt 9 – Installation abschließen

Starten Sie https://abantecart.example.com in Ihrem Browser, und Ihnen wird der folgende Bildschirm angezeigt.

Aktivieren Sie das Kontrollkästchen, um der Lizenz zuzustimmen, und klicken Sie auf Weiter fortfahren. Als nächstes prüft das Installationsprogramm, ob alle Anforderungen erfüllt sind oder nicht.

Wenn alles in Ordnung ist, drücken Sie Weiter um zur nächsten Seite zu gelangen.

Sie werden aufgefordert, die Datenbankanmeldeinformationen einzugeben. Hier können Sie ein Administratorkonto und einen Sicherheitsschlüssel für den Zugriff auf das Control Panel erstellen. Wenn Sie Demodaten wünschen, lassen Sie das Kästchen aktiviert. Andernfalls lassen Sie es deaktiviert, wenn Sie von vorne beginnen möchten.

Drücken Sie Weiter um fortzufahren, wenn Sie fertig sind. Das Installationsprogramm fährt dann mit der Einrichtung fort und zeigt Ihnen nach Abschluss den folgenden Bildschirm.

Setzen Sie ein Lesezeichen für den Link zu Ihrem Bedienfeld, da Sie ihn benötigen werden. Führen Sie den folgenden Befehl aus, um die Installationsdateien zu löschen, da sie nicht benötigt werden und ein Sicherheitsrisiko darstellen.

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

Melden Sie sich bei der Systemsteuerung an und Sie werden aufgefordert, die Einrichtung Ihres Shops abzuschließen.

Sie können entweder den Schnellassistenten schließen und ihn über das unten gezeigte Bedienfeld konfigurieren oder mit dem Assistenten fortfahren, um grundlegende Einstellungen vorzunehmen.

Schlussfolgerung

Damit ist unser Tutorial zum Einrichten von AbanteCart auf einem Debian 11-basierten Server abgeschlossen. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.


Debian
  1. So installieren Sie Nginx unter Debian 9

  2. So installieren und konfigurieren Sie Drupal mit Apache unter Debian 9

  3. So installieren Sie Nginx unter Debian 8 (Jessie)

  4. So installieren Sie Nginx unter Debian 9 (Stretch)

  5. So installieren Sie WonderCMS mit Nginx unter Debian 11

So installieren Sie Drupal mit Nginx und Let’s Encrypt SSL unter Debian 11

So installieren Sie Joomla mit Nginx und Let’s Encrypt SSL unter Debian 11

So installieren Sie WordPress mit Nginx und Let’s Encrypt SSL unter Debian 11

Installieren Sie Nginx mit PHP und MySQL (LEMP) plus SSL unter Debian 10

So installieren Sie Nginx mit PHP-FPM unter Debian 10

So installieren Sie phpMyAdmin mit Nginx unter Debian 11