GNU/Linux >> Tutoriels Linux >  >> Debian

Comment installer AbanteCart avec Nginx et SSL sur Debian 11

Abantecart est une application de commerce électronique gratuite, open source et riche en fonctionnalités. Il est écrit en PHP et est alimenté par les dernières technologies comme HTML5, Bootstrap, MVC et plus encore. Il peut créer plusieurs boutiques en ligne à l'aide d'une seule installation avec prise en charge des produits numériques et physiques, intégration avec plusieurs passerelles de paiement et devises, plusieurs langues, coupons, crédits de magasin et un tableau de bord client. Vous pouvez y lancer une campagne de marketing par e-mail ou créer des bannières pour augmenter l'engagement des utilisateurs. De plus, il est optimisé pour le référencement avec la prise en charge d'URL conviviales, s'intègre à plusieurs plates-formes d'analyse et prend en charge les plug-ins.

Dans ce tutoriel, vous apprendrez à installer Abantecart sur un serveur basé sur Debian 11.

Prérequis

  • Un serveur exécutant Debian 11.

  • Un utilisateur non root avec des privilèges sudo.

  • Tout est mis à jour.

    $ sudo apt update && sudo apt upgrade
    
  • Peu de packages dont votre système a besoin.

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

    Certains de ces packages sont peut-être déjà installés sur votre système.

Étape 1 - Configurer le pare-feu

La première étape consiste à configurer le pare-feu. Debian est livré avec ufw (pare-feu non compliqué).

Vérifiez si le pare-feu est en cours d'exécution.

$ sudo ufw status

Vous devriez obtenir le résultat suivant.

Status: inactive

Autorisez le port SSH afin que le pare-feu n'interrompe pas la connexion actuelle en l'activant.

$ sudo ufw allow OpenSSH

Autorisez également les ports HTTP et HTTPS.

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

Activer le pare-feu

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

Vérifiez à nouveau l'état du pare-feu.

$ sudo ufw status

Vous devriez voir une sortie similaire.

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)

Étape 2 - Installer PHP

Abantecart prend en charge PHP 8.0. Pour l'installer, nous utiliserons le dépôt PHP d'Ondrej. Exécutez la commande suivante pour ajouter le référentiel.

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

Ajoutez la clé GPG associée au dépôt.

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

Mettez à jour les dépôts Debian.

$ sudo apt update

Installez PHP 8.0 et les extensions requises.

$ 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

Étape 3 - Installer MySQL

Pour installer le serveur MySQL, la première étape consiste à ajouter la clé GPG pour le package

Il y a un bogue dans Debian où vous devez exécuter la commande GPG séparément pour configurer le .gpg répertoire.

$ sudo gpg

Appuyez sur Ctrl + C pour quitter la commande ci-dessus. Importez la clé GPG et enregistrez-la dans le /usr/share/keyrings répertoire.

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

Ajoutez le référentiel MySQL officiel.

$ 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

Mettez à jour les dépôts Debian.

$ sudo apt update

Installez MySQL.

$ sudo apt install mysql-server

Vous serez accueilli par un écran de configuration vous demandant de configurer un mot de passe root. Choisissez un mot de passe fort.

Il vous sera demandé de confirmer le mot de passe. Ensuite, un écran décrivant le nouveau système d'authentification vous sera présenté. Sélectionnez OK pour continuer.

Enfin, il vous sera demandé de sélectionner la méthode d'authentification. Choisissez le chiffrement fort du mot de passe et sélectionnez OK pour terminer la configuration.

Étape 4 - Installer Nginx

Debian est livré avec une ancienne version de Nginx. Vous devez télécharger le dépôt officiel Nginx pour installer la dernière version.

Importez la clé de signature officielle Nginx.

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

Ajoutez le référentiel pour la version stable de 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

Mettez à jour les dépôts Debian.

$ sudo apt update

Installez Nginx.

$ sudo apt install nginx

Vérifiez l'installation. Assurez-vous d'utiliser sudo chaque fois que vous exécutez la commande Nginx sur Debian. Sinon, cela ne fonctionnera pas.

$ sudo nginx -v
nginx version: nginx/1.20.2

Activez le service Nginx.

$ sudo systemctl enable nginx

Étape 5 - Configurer MySQL pour AbanteCart

Installation sécurisée de MySQL.

$ sudo mysql_secure_installation

Pour la première étape, il vous sera demandé votre mot de passe root. Ensuite, il vous sera demandé si vous souhaitez configurer le plugin Validate Password, que vous pouvez utiliser pour tester la force de votre mot de passe MySQL. Choisissez Y procéder. Il vous sera demandé de choisir le niveau de validation du mot de passe à l'étape suivante. Choisissez 2 qui est le niveau le plus fort et exigera que votre mot de passe comporte au moins huit caractères et inclue un mélange de caractères majuscules, minuscules, numériques et spéciaux.

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

À l'étape suivante, il vous sera demandé si vous souhaitez ou non modifier le mot de passe root. Appuyez sur N pour continuer.

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

Appuyez sur Y puis ENTER clé pour toutes les invites suivantes pour supprimer les utilisateurs anonymes et la base de données de test, désactiver les connexions root et charger les règles nouvellement définies.

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

Entrez dans le shell MySQL. Entrez votre mot de passe root pour continuer.

$ mysql -u root -p

Créer abcart utilisateur. Assurez-vous que le mot de passe répond aux exigences définies auparavant.

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

Créer abantecart base de données.

mysql> CREATE DATABASE abantecart;

Accordez les privilèges d'utilisateur sur le abantecart base de données.

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

Quittez le Shell.

mysql> exit

Étape 6 - Installer AbanteCart

Téléchargez la dernière version d'AbanteCart depuis Github.

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

Extrayez le fichier.

$ unzip master.zip

Créez le répertoire racine Web public pour Abantecart.

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

Copiez le abantecart-src-master/public_html extrait répertoire vers le répertoire webroot. Notez la barre oblique (/ ) à la fin de la commande suivante.

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

Définissez les autorisations appropriées sur le répertoire Webroot.

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

Pour l'instant, l'installation de base est terminée. Ensuite, nous devons configurer SSL et Nginx avant de terminer l'installation.

Étape 7 - Installer SSL

Pour installer un certificat SSL avec Let's Encrypt, nous devons installer l'outil Certbot.

Nous utiliserons le programme d'installation du package Snapd pour cela. Comme la plupart des serveurs Debian ne sont pas livrés avec, installez Snap.

$ sudo apt install snapd

Assurez-vous que votre version de Snapd est à jour.

$ sudo snap install core && sudo snap refresh core

Installez Certbot.

$ sudo snap install --classic certbot

Utilisez la commande suivante pour vous assurer que la commande Certbot peut être exécutée en créant un lien symbolique vers /usr/bin répertoire.

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

Vérifiez l'installation.

$ certbot --version
certbot 1.22.0

Générez le certificat SSL.

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

La commande ci-dessus téléchargera un certificat sur /etc/letsencrypt/live/abantecart.example.com répertoire sur votre serveur.

Générer un groupe Diffie-Hellman certificat.

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

Créez un répertoire racine Web de défi pour le renouvellement automatique de Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Créez une tâche Cron pour renouveler le SSL. Il s'exécutera tous les jours pour vérifier le certificat et le renouveler si nécessaire. Pour cela, créez d'abord le fichier /etc/cron.daily/certbot-renew et ouvrez-le pour le modifier.

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

Collez le code suivant.

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

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Modifiez les autorisations sur le fichier de tâche pour le rendre exécutable.

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

Étape 8 - Configurer Nginx et PHP

Configurer PHP-FPM

Ouvrez le fichier /etc/php/8.0/fpm/pool.d/www.conf .

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

Nous devons définir l'utilisateur/groupe Unix de processus PHP sur nginx . Trouvez le user=www-data et group=www-data lignes dans le fichier et changez-les en 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
...

Recherchez également les lignes listen.owner=www-data et listen.group=www-data dans le fichier et changez-les en nginx .

listen.owner = nginx
listen.group = nginx

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

L'étape suivante consiste à désactiver l'extension PHP opcache.

Ouvrez le fichier /etc/php/8.0/fpm/conf.d/10-opcache.ini pour l'édition.

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

Collez la ligne suivante à la fin.

opcache.enable=0

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Redémarrez le processus PHP-fpm.

$ sudo systemctl restart php8.0-fpm

Configurer Nginx

Créez et ouvrez le fichier /etc/nginx/conf.d/abantecart.conf pour l'édition.

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

Collez-y le code suivant.

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

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité une fois terminé.

Ouvrez le fichier /etc/nginx/nginx.conf pour l'édition.

$ sudo nano /etc/nginx/nginx.conf

Ajoutez la ligne suivante avant la ligne include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size  64;

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Vérifiez la syntaxe du fichier de configuration 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

Démarrez le service Nginx pour activer la nouvelle configuration.

$ sudo systemctl start nginx

Étape 9 - Terminer l'installation

Lancez https://abantecart.example.com dans votre navigateur, et l'écran suivant s'affichera.

Cochez la case pour accepter la licence et appuyez sur Continuer procéder. Ensuite, le programme d'installation vérifiera si toutes les exigences sont remplies ou non.

Si tout va bien, appuyez sur Continuer pour passer à la page suivante.

Il vous sera demandé de remplir les informations d'identification de la base de données. Ici, vous pouvez créer un compte administrateur et une clé de sécurité pour accéder au panneau de contrôle. Si vous voulez des données de démonstration, laissez la case cochée sinon, laissez-la décochée si vous voulez repartir de zéro.

Appuyez sur Continuer pour continuer une fois terminé. Le programme d'installation procédera ensuite à tout configurer et, une fois terminé, vous présentera l'écran suivant.

Marquez le lien vers votre panneau de contrôle car vous en aurez besoin. Exécutez la commande suivante pour supprimer les fichiers du programme d'installation, car ils ne sont pas nécessaires et présentent un risque pour la sécurité.

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

Connectez-vous au panneau de configuration et vous serez invité à terminer la configuration de votre boutique.

Vous pouvez soit fermer l'assistant rapide et le configurer à partir du panneau de configuration ci-dessous, soit continuer avec l'assistant pour configurer les paramètres de base.

Conclusion

Ceci conclut notre tutoriel sur la configuration d'AbanteCart sur un serveur basé sur Debian 11. Si vous avez des questions, postez-les dans les commentaires ci-dessous.


Debian
  1. Comment installer Nginx sur Debian 9

  2. Comment installer et configurer Drupal avec Apache sur Debian 9

  3. Comment installer Nginx sur Debian 8 (Jessie)

  4. Comment installer Nginx sur Debian 9 (Stretch)

  5. Comment installer WonderCMS avec Nginx sur Debian 11

Comment installer Drupal avec Nginx et Let's Encrypt SSL sur Debian 11

Comment installer Joomla avec Nginx et Let's Encrypt SSL sur Debian 11

Comment installer WordPress avec Nginx et Let's Encrypt SSL sur Debian 11

Installer Nginx avec PHP et MySQL (LEMP) plus SSL sur Debian 10

Comment installer Nginx avec PHP-FPM sur Debian 10

Comment installer phpMyAdmin avec Nginx sur Debian 11