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.