GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar AbanteCart con Nginx y SSL en Debian 11

Abantecart es una aplicación de comercio electrónico gratuita, de código abierto y rica en funciones. Está escrito en PHP y funciona con las últimas tecnologías como HTML5, Bootstrap, MVC y más. Puede crear múltiples tiendas en línea usando una sola instalación con soporte para productos digitales y físicos, integración con múltiples pasarelas de pago y monedas, múltiples idiomas, cupones, créditos de tienda y un panel de control para el cliente. Puede ejecutar una campaña de marketing por correo electrónico a través de él o crear pancartas para aumentar la participación del usuario. Además, está optimizado para SEO con soporte para URL amigables, se integra con múltiples plataformas de análisis y admite complementos.

En este tutorial, aprenderá cómo instalar Abantecart en un servidor basado en Debian 11.

Requisitos

  • Un servidor que ejecuta Debian 11.

  • Un usuario no root con privilegios sudo.

  • Todo está actualizado.

    $ sudo apt update && sudo apt upgrade
    
  • Pocos paquetes que tu sistema necesita.

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

    Es posible que algunos de estos paquetes ya estén instalados en su sistema.

Paso 1:configurar el cortafuegos

El primer paso es configurar el cortafuegos. Debian viene con ufw (cortafuegos sin complicaciones).

Compruebe si el cortafuegos se está ejecutando.

$ sudo ufw status

Deberías obtener el siguiente resultado.

Status: inactive

Permita el puerto SSH para que el cortafuegos no interrumpa la conexión actual al habilitarlo.

$ sudo ufw allow OpenSSH

Permitir puertos HTTP y HTTPS también.

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

Habilitar el cortafuegos

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

Vuelva a comprobar el estado del cortafuegos.

$ sudo ufw status

Debería ver un resultado similar.

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)

Paso 2 - Instalar PHP

Abantecart es compatible con PHP 8.0. Para instalarlo utilizaremos el repositorio PHP de Ondrej. Ejecute el siguiente comando para agregar el repositorio.

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

Agregue la clave GPG asociada con el repositorio.

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

Actualice los repositorios de Debian.

$ sudo apt update

Instale PHP 8.0 y las extensiones requeridas.

$ 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

Paso 3:instalar MySQL

Para instalar el servidor MySQL, el primer paso es agregar la clave GPG para el paquete

Hay un error en Debian en el que debe ejecutar el comando GPG por separado para configurar .gpg directorio.

$ sudo gpg

Presiona Ctrl + C para salir del comando anterior. Importe la clave GPG y guárdela en /usr/share/keyrings directorio.

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

Agregue el repositorio oficial de 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

Actualice los repositorios de Debian.

$ sudo apt update

Instale MySQL.

$ sudo apt install mysql-server

Será recibido con una pantalla de configuración que le pedirá que establezca una contraseña de root. Elija una contraseña segura.

Se le pedirá que confirme la contraseña. A continuación, se le presentará una pantalla que describe el nuevo sistema de autenticación. Seleccione Aceptar para proceder.

Finalmente, se le pedirá que seleccione el método de autenticación. Elija el Cifrado de contraseña fuerte y seleccione Aceptar para finalizar la configuración.

Paso 4:instalar Nginx

Debian se envía con una versión anterior de Nginx. Debe descargar el repositorio oficial de Nginx para instalar la última versión.

Importe la clave de firma oficial de Nginx.

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

Agregue el repositorio para la versión estable 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

Actualice los repositorios de Debian.

$ sudo apt update

Instala Nginx.

$ sudo apt install nginx

Verifique la instalación. Asegúrate de usar sudo cada vez que ejecuta el comando Nginx en Debian. De lo contrario, no funcionará.

$ sudo nginx -v
nginx version: nginx/1.20.2

Habilite el servicio Nginx.

$ sudo systemctl enable nginx

Paso 5:configurar MySQL para AbanteCart

Instalación segura de MySQL.

$ sudo mysql_secure_installation

Para el primer paso, se le pedirá su contraseña de root. A continuación, se le preguntará si desea configurar el complemento de validación de contraseña, que puede usar para probar la seguridad de su contraseña de MySQL. Elija Y para proceder. Se le pedirá que elija el nivel de validación de la contraseña en el siguiente paso. Elige 2 que es el nivel más fuerte y requerirá que su contraseña tenga al menos ocho caracteres e incluya una combinación de mayúsculas, minúsculas, números y caracteres especiales.

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

En el siguiente paso, se le preguntará si desea o no cambiar la contraseña de root. Presione N para continuar.

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

Presiona Y y luego ENTER clave para todas las siguientes indicaciones para eliminar usuarios anónimos y la base de datos de prueba, deshabilitar los inicios de sesión raíz y cargar las reglas recién establecidas.

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

Ingrese el shell de MySQL. Ingrese su contraseña raíz para continuar.

$ mysql -u root -p

Crear abcart usuario. Asegúrese de que la contraseña cumpla con los requisitos establecidos anteriormente.

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

Crear abantecart base de datos.

mysql> CREATE DATABASE abantecart;

Concede al usuario privilegios sobre el abantecart base de datos.

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

Salga del caparazón.

mysql> exit

Paso 6 - Instalar AbanteCart

Descarga la última versión de AbanteCart desde Github.

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

Extraiga el archivo.

$ unzip master.zip

Cree el directorio raíz web público para Abantecart.

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

Copie el abantecart-src-master/public_html extraído directorio al directorio webroot. Tenga en cuenta la barra diagonal (/ ) al final del siguiente comando.

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

Establezca los permisos adecuados para el directorio webroot.

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

Por ahora, la instalación básica está terminada. A continuación, debemos configurar SSL y Nginx antes de finalizar la instalación.

Paso 7:instalar SSL

Para instalar un certificado SSL usando Let's Encrypt, necesitamos instalar la herramienta Certbot.

Usaremos el instalador del paquete Snapd para eso. Dado que la mayoría de los servidores Debian no lo incluyen, instale Snap.

$ sudo apt install snapd

Asegúrese de que su versión de Snapd esté actualizada.

$ sudo snap install core && sudo snap refresh core

Instale Certbot.

$ sudo snap install --classic certbot

Use el siguiente comando para asegurarse de que el comando Certbot se pueda ejecutar creando un enlace simbólico al /usr/bin directorio.

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

Verifique la instalación.

$ certbot --version
certbot 1.22.0

Genere el certificado SSL.

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

El comando anterior descargará un certificado en /etc/letsencrypt/live/abantecart.example.com directorio en su servidor.

Generar un grupo Diffie-Hellman certificado.

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

Cree un directorio webroot de desafío para la renovación automática de Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Cree un trabajo cron para renovar el SSL. Se ejecutará todos los días para verificar el certificado y renovarlo si es necesario. Para eso, primero crea el archivo /etc/cron.daily/certbot-renew y ábralo para editarlo.

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

Pegue el siguiente código.

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

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Cambie los permisos en el archivo de tareas para que sea ejecutable.

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

Paso 8:Configurar Nginx y PHP

Configurar PHP-FPM

Abra el archivo /etc/php/8.0/fpm/pool.d/www.conf .

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

Necesitamos configurar el usuario/grupo de procesos PHP de Unix en nginx . Encuentra el user=www-data y group=www-data líneas en el archivo y cámbielas a 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
...

Además, busque las líneas listen.owner=www-data y listen.group=www-data en el archivo y cámbielos a nginx .

listen.owner = nginx
listen.group = nginx

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

El siguiente paso es deshabilitar la extensión opcache de PHP.

Abra el archivo /etc/php/8.0/fpm/conf.d/10-opcache.ini para editar.

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

Pegue la siguiente línea al final.

opcache.enable=0

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Reinicie el proceso PHP-fpm.

$ sudo systemctl restart php8.0-fpm

Configurar Nginx

Crea y abre el archivo /etc/nginx/conf.d/abantecart.conf para editar.

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

Pegue el siguiente código en él.

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

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite una vez terminado.

Abra el archivo /etc/nginx/nginx.conf para editar.

$ sudo nano /etc/nginx/nginx.conf

Agregue la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size  64;

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Verifique la sintaxis del archivo de configuración de 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

Inicie el servicio Nginx para habilitar la nueva configuración.

$ sudo systemctl start nginx

Paso 9:finalizar la instalación

Inicie https://abantecart.example.com en su navegador, y se le presentará la siguiente pantalla.

Marque la casilla para aceptar la licencia y presione Continuar para proceder. A continuación, el instalador comprobará si se cumplen o no todos los requisitos.

Si todo está bien, presione Continuar para pasar a la página siguiente.

Se le pedirá que complete las credenciales de la base de datos. Aquí puede crear una cuenta de administrador y una clave de seguridad para acceder al panel de control. Si desea datos de demostración, mantenga la casilla marcada; de lo contrario, déjela sin marcar si desea comenzar desde cero.

Presiona Continuar para continuar cuando haya terminado. El instalador procederá a configurar todo y, una vez que haya terminado, le presentará la siguiente pantalla.

Marque el enlace a su panel de control porque lo necesitará. Ejecute el siguiente comando para eliminar los archivos del instalador porque no son necesarios y representan un riesgo para la seguridad.

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

Inicie sesión en el Panel de control y se le pedirá que termine de configurar su tienda.

Puede cerrar el asistente rápido y configurarlo desde el Panel de control que se muestra a continuación o continuar con el asistente para configurar los ajustes básicos.

Conclusión

Esto concluye nuestro tutorial sobre cómo configurar AbanteCart en un servidor basado en Debian 11. Si tiene alguna pregunta, publíquela en los comentarios a continuación.


Debian
  1. Cómo instalar Nginx en Debian 9

  2. Cómo instalar y configurar Drupal con Apache en Debian 9

  3. Cómo instalar Nginx en Debian 8 (Jessie)

  4. Cómo instalar Nginx en Debian 9 (Stretch)

  5. Cómo instalar WonderCMS con Nginx en Debian 11

Cómo instalar Drupal con Nginx y Let's Encrypt SSL en Debian 11

Cómo instalar Joomla con Nginx y Let's Encrypt SSL en Debian 11

Cómo instalar WordPress con Nginx y Let's Encrypt SSL en Debian 11

Instale Nginx con PHP y MySQL (LEMP) más SSL en Debian 10

Cómo instalar Nginx con PHP-FPM en Debian 10

Cómo instalar phpMyAdmin con Nginx en Debian 11