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.