Cómo instalar Zen Cart en Debian 9

Zen Cart es una plataforma gratuita de código abierto de gestión de contenidos de comercio electrónico y carrito de la compra. El software está escrito en lenguaje de programación PHP y suele instalarse en Linux bajo servidores web Apache/Nginx, PHP y el sistema de gestión de bases de datos MySQL/MariaDB, también conocido como pila LAMP o LEMP. La solución de comercio electrónico Zen Cart se utiliza para crear fácilmente tiendas online para diferentes negocios y anunciar y vender servicios y mercancías.

En esta guía, te mostraré cómo instalar y configurar la última versión de Zen Cart en Debian 9, para crear una tienda online gratuita.

Requisitos

  • Instalación mínima del servidor Debian 9 en una máquina bare-metal o en un servidor virtual privado
  • Una dirección IP estática configurada para una de las tarjetas de interfaz de red de tu sistema
  • Privilegios sudo root para una cuenta local o remota o acceso directo a la cuenta root
  • Un nombre de dominio, privado o público, dependiendo de tu implantación, con los registros DNS adecuados configurados para los servicios web. Si no tienes un nombre de dominio válido o registrado, puedes realizar la instalación y acceder al sitio web a través de la dirección IP de tu servidor
  • Si quieres utilizar el registro en el sitio web, la moderación de comentarios y otras funciones, debes tener un servidor de correo en funcionamiento correctamente configurado en tus instalaciones con acceso remoto a sus servicios IMAP y SMTP.

Requisitos previos

Antes de empezar a instalar y configurar Zen Cart desde las fuentes en tu propio servidor, asegúrate primero de que el sistema cumple todos los requisitos de software para compilar e instalar la aplicación. En el primer paso, actualiza los repositorios de tu sistema y los paquetes de software ejecutando el siguiente comando.

apt update
apt upgrade

A continuación, configura el nombre de tu sistema ejecutando el siguiente comando (sustituye tu variable hostname en consecuencia).

hostnamectl set-hostname zencart

Verifica el nombre de host de la máquina y el archivo hosts emitiendo los siguientes comandos.

hostnamectl 
cat /etc/hostname
hostname –s
hostname –f

En el siguiente paso, ejecuta el siguiente comando para instalar algunas utilidades necesarias que se utilizarán para seguir gestionando tu sistema desde la línea de comandos.

apt install wget bash-completion zip unzip curl

Por último, reinicia el servidor Debian para aplicar correctamente las actualizaciones del núcleo y los cambios en el nombre de host.

systemctl reboot

Instalar Apache y PHP

Zen Cart es una plataforma de comercio electrónico CMS basada en web y escrita principalmente en lenguaje de programación del lado del servidor PHP. Para poder ejecutar los scripts del archivo PHP de la aplicación, es necesario tener instalados y operativos en el sistema un servidor web, como el servidor HTTP Apache, y una pasarela de procesamiento PHP. Para instalar el servidor web Apache y el intérprete PHP junto con todos los módulos PHP necesarios para que la aplicación funcione correctamente, emite el siguiente comando en la consola de tu servidor.

apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-curl php7.0-gd php7.0-mbstring php7.0-xml

Una vez instalados Apache y PHP, comprueba si el servidor web está en funcionamiento y a la escucha de conexiones de red en el puerto 80 emitiendo el siguiente comando con privilegios de root.

netstat –tlpn

En caso de que la utilidad de red netstat no esté instalada por defecto en tu sistema Debian, ejecuta el siguiente comando para instalarla.

apt install net-tools

Inspeccionando la salida del comando netstat puedes ver que el servidor web Apache está a la escucha de conexiones de red entrantes en el puerto 80. Para la misma tarea también puedes utilizar el comando ss, que se instala automáticamente por defecto en Debian 9.

ss- tulpn

Configurar el cortafuegos

En caso de que tengas un cortafuegos habilitado en tu sistema, como la aplicación de cortafuegos UFW, debes añadir una nueva regla para permitir que el tráfico HTTP pase a través del cortafuegos emitiendo el siguiente comando.

ufw allow WWW

o

ufw allow 80/tcp

Si utilizas reglas iptables raw para gestionar las reglas del cortafuegos en tu servidor Debian, añade la siguiente regla para permitir el tráfico entrante del puerto 80 en el cortafuegos, de forma que los visitantes puedan navegar por la tienda online.

apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload

Configura Apache y SSL/TLS

A continuación, habilita y aplica los siguientes módulos de Apache necesarios para que la aplicación de comercio electrónico funcione correctamente, ejecutando el siguiente comando.

a2enmod rewrite expires env alias deflate mime
systemctl restart apache2

Por último, comprueba si la página web predeterminada del servidor web Apache puede mostrarse en los navegadores de tus clientes visitando la dirección IP de tu máquina Debian o el nombre de tu dominio o FQDN del servidor mediante el protocolo HTTP, como se muestra en la siguiente imagen. Si no conoces la dirección IP de tu máquina, ejecuta los comandos ifconfig o ‘ip a’ para revelar la dirección IP de tu servidor.

http://yourdomain.tld

Página por defecto de Apache

Para instalar y acceder al panel de administración web de Zen Cart respaldado y al sitio web frontend a través del protocolo HTTPS que asegurará el tráfico para tus clientes, ejecuta el siguiente comando para habilitar el módulo SSL del servidor web Apache y el archivo de configuración del sitio SSL.

a2enmod ssl
a2ensite default-ssl.conf

A continuación, abre el archivo de configuración del sitio SSL predeterminado de Apache con un editor de texto y habilita las reglas de reescritura de URL añadiendo las siguientes líneas de código después de la directiva DocumentRoot, como se muestra en el siguiente ejemplo:

nano /etc/apache2/sites-enabled/default-ssl.conf

Extracto del archivo de configuración del sitio SSL:

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

Además, realiza el siguiente cambio en la línea VirtualHost para que quede como se muestra en el siguiente extracto:

<VirtualHost *:443>

Vhost SSL

Cierra el archivo Apache SSL y abre el archivo /etc/apache2/sites-enabled/000-default.conf para editarlo y añade las mismas reglas de reescritura de URL que para el archivo de configuración SSL. Inserta las líneas de código después de la sentencia DocumentRoot como se muestra en el siguiente ejemplo.

 <Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

Configuración del directorio en el vhost

Por último, reinicia el demonio Apache para aplicar todas las reglas configuradas hasta ahora y visita tu dominio a través del protocolo HTTP. Como estás utilizando los pares de certificados autofirmados automáticamente emitidos por Apache en la instalación, debería aparecer una advertencia de error en el navegador.

systemctl restart apache2

https://yourdomain.tld

Página SSL

Acepta la advertencia relativa al certificado no fiable para continuar y ser redirigido a la página web predeterminada de Apache.

Página por defecto de Apache

En caso de que la aplicación cortafuegos UFW bloquee las conexiones de red entrantes al puerto HTTPS, debes añadir una nueva regla para permitir que el tráfico HTTPS pase a través del cortafuegos mediante el siguiente comando.

ufw allow 'WWW Full'

o

ufw allow 443/tcp

Si iptables es la aplicación de cortafuegos instalada por defecto para proteger tu sistema Debian a nivel de red, añade la siguiente regla para permitir el tráfico entrante del puerto 443 en el cortafuegos para que los visitantes puedan navegar por tu nombre de dominio.

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload

En el siguiente paso, tenemos que hacer algunos cambios más en el archivo de configuración por defecto de PHP para asegurarnos de que las siguientes variables de PHP están habilitadas y la configuración de la zona horaria de PHP está correctamente configurada y coincide con la ubicación geográfica de tu sistema. Abre el archivo /etc/php/7.0/apache2/php.ini para editarlo y asegúrate de que las siguientes líneas están configuradas como se indica a continuación. Además, inicialmente, haz una copia de seguridad del archivo de configuración PHP.

cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini

Busca, edita y cambia las siguientes variables enphp.iniarchivo de configuración:

file_uploads = On
memory_limit = 128 M
upload_max_file_size = 64M
post_max_size = 64M
date.timezone = Europe/London

Aumenta las variables post_max_size y upload_max_file_size según convenga para soportar archivos adjuntos de gran tamaño y sustituye la variable time.zone según tu hora física consultando la lista de zonas horarias proporcionada por PHP docs en el siguiente enlace http://php.net/manual/en/timezones.php.

Si quieres aumentar la velocidad de carga de las páginas de tu sitio web mediante el plugin OPCache disponible para PHP7, añade los siguientes ajustes de OPCache en la parte inferior del archivo de configuración del intérprete PHP, como se detalla a continuación:

opcache.enable=1 
opcache.enable_cli=1 
opcache.interned_strings_buffer=8 
opcache.max_accelerated_files=10000 
opcache.memory_consumption=128 
opcache.save_comments=1
opcache.revalidate_freq=1

Cierra el archivo de configuración php.ini y verifica el final del archivo de configuración PHP para comprobar si las variables se han añadido correctamente mediante el siguiente comando.

tail /etc/php/7.0/apache2/php.ini

Una vez que hayas realizado todos los cambios explicados anteriormente, reinicia el demonio apache para aplicar los nuevos cambios emitiendo el siguiente comando.

systemctl restart apache2

Por último, crea un archivo PHP info ejecutando el siguiente comando y comprueba si la zona horaria PHP se ha configurado correctamente visitando el archivo PHP info script desde un navegador en la siguiente URL, como se ilustra en la siguiente imagen. Desplázate hasta la configuración de la fecha para comprobar la configuración de la zona horaria de PHP.

echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php

https://yourdomain.tld/info.php

La aplicación web de comercio electrónico Zen Cart almacena diferentes configuraciones, como usuarios, sesiones, contactos, productos, catálogos y otros, en una base de datos RDBMS. En esta guía, configuraremos la aplicación Zen Cart para que utilice la base de datos MariaDB como backend. Ejecuta el siguiente comando para instalar la base de datos MariaDB y el módulo PHP necesario para acceder a la base de datos mysql.

apt install mariadb-server mariadb-client php7.0-mysql

Una vez que hayas instalado MariaDB, comprueba si el demonio se está ejecutando y escucha conexiones en localhost, puerto 3306, ejecutando el comando netstat.

netstat –tlpn | grep mysql

A continuación, accede a la consola MySQL y asegura la cuenta raíz de MariaDB ejecutando los siguientes comandos.

mysql -h localhost
use mysql;
update user set plugin='' where user='root';
flush privileges;
exit

En el siguiente paso, asegura MariaDB ejecutando el script mysql_secure_installation proporcionado por los paquetes de instalación de los repositorios stretch de Debian. Mientras se ejecuta, el script te hará una serie de preguntas diseñadas para asegurar la base de datos MariaDB, como: cambiar la contraseña de root de MySQL, eliminar los usuarios anónimos, desactivar los inicios de sesión de root remoto y eliminar la base de datos de prueba. Ejecuta el script emitiendo el siguiente comando y asegúrate de que escribes sí a todas las preguntas formuladas para asegurar completamente el demonio MySQL. Utiliza el siguiente extracto de la salida del script como guía.

sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

 

In order to log into MariaDB to secure it, we’ll need the current

password for the root user.  If you’ve just installed MariaDB, and

you haven’t set the root password yet, the password will be blank,

so you should just press enter here.

 

Enter current password for root (enter for none):

OK, successfully used password, moving on…

 

Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.

 

You already have a root password set, so you can safely answer ‘n’.

 

Change the root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

… Success!

 

By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

 

Remove anonymous users? [Y/n] y

… Success!

 

Normally, root should only be allowed to connect from ‘localhost’.  This

ensures that someone cannot guess at the root password from the network.

 

Disallow root login remotely? [Y/n] y

… Success!

 

By default, MariaDB comes with a database named ‘test’ that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

 

Remove test database and access to it? [Y/n] 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? [Y/n] y

… Success!

 

Cleaning up…

 

All done!  If you’ve completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

Para probar la seguridad de MariaDB, intenta acceder a la base de datos desde la consola sin contraseña de root. El acceso a la base de datos debería denegarse si no se proporciona una contraseña para la cuenta raíz, como se ilustra en el siguiente extracto del comando:

root@cubecart:~# mysql -h localhost -u root
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Si se proporciona la contraseña, el proceso de inicio de sesión debería concederse a la consola MySQL, como se muestra en el ejemplo de comando:

root@cubecart:~# mysql -h localhost -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> exit
Bye

A continuación, inicia sesión en la consola de la base de datos MariaDB, crea una base de datos para la aplicación Zen Cart y un usuario con contraseña que se utilizará para gestionar la base de datos de la aplicación, emitiendo los siguientes comandos. Sustituye el nombre de la base de datos, el usuario y la contraseña según corresponda.

mysql –u root -p
create database zencart;
grant SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP on zencart.* to 'zencart_user'@'localhost' identified by 'password1';
flush privileges;
exit

Para aplicar todos los cambios realizados hasta el momento, reinicia los demonios MySQL y Apache y comprueba si los demonios se están ejecutando emitiendo los siguientes comandos.

systemctl restart mysql apache2
systemctl status mysql apache2

Instalar Zen Cart

Una vez cumplidos todos los requisitos del sistema para la instalación de tu tienda online de comercio electrónico, visita la página oficial de descargas de SourceForge Zen Cart en https://sourceforge.net/projects/zencart/files/ y descarga el último archivo comprimido del paquete zip con la ayuda de la utilidad wget, como se muestra en el siguiente ejemplo.

wget https://downloads.sourceforge.net/project/zencart/CURRENT%20-%20Zen%20Cart%201.5.x%20Series/zen-cart-v1.5.5f-12312017b.zip

Una vez finalizada la descarga del archivo zip, extrae directamente el archivo comprimido Zen Cart y lista los archivos extraídos ejecutando los siguientes comandos. Además, elimina el archivo index.html instalado por defecto por el servidor web Apache en la ruta webroot y elimina también el archivo info.php creado anteriormente.

rm /var/www/html/index.html
rm /var/www/html/info.php
unzip zen-cart-v1.5.5f-12312017b.zip
ls

Los archivos de instalación de Zen Cart se encuentran en tu directorio de trabajo actual, en el directorio zen-cart extraído. Ejecuta el comando ls para ver los archivos del directorio zen-cart. Copia todo el contenido del directorio zen-cart-v1 a la ruta raíz del documento de tu servidor web ejecutando el siguiente comando.

ls -al zen-cart-v[tab]
cp -rf zen-cart-v1.5.5e-03082017/* /var/www/html/

Cambia el directorio a la raíz del documento del servidor web y ejecuta el siguiente comando para crear los archivos de configuración que necesita la aplicación Zen Cart para escribir la configuración de la tienda.

cd /var/www/html/
cp includes/dist-configure.php includes/configure.php
cp admin/includes/dist-configure.php admin/includes/configure.php

A continuación, ejecuta los siguientes comandos para conceder al usuario en tiempo de ejecución de Apache permisos completos de escritura en la ruta raíz web. Utiliza el comando ls para listar los permisos de los archivos instalados de la aplicación ubicados en el directorio /var/www/html/.

chown -R www-data:www-data /var/www/html/
ls –al /var/www/html/

ZenCart desempaquetado

Ahora, procede con el proceso de instalación de la tienda online Zen Cart abriendo un navegador y navegando por la dirección IP de tu servidor o el nombre de dominio o FQDN del servidor a través del protocolo HTTPS. En la primera pantalla de instalación el instalador de Zen Cart te presentará un resumen de una lista de problemas que te conciernen estás viendo la página . Como la aplicación aún no ha sido instalada, pulsa en el enlace Haz clic aquí para iniciar el proceso de instalación, tal y como se muestra en la siguiente imagen.

https://yourdomain.tld

Instalador web ZenCart

En la siguiente pantalla de instalación, el instalador realizará una serie de comprobaciones previas a la instalación en función de la configuración PHP del servidor y de la extensión PHP instalada, para determinar si se cumplen todos los requisitos del sistema para instalar la aplicación de comercio electrónico Zen Cart. También comprobará si el usuario de ejecución Apache HTTP puede escribir en una serie de directorios de la ruta webroot, como se muestra en las siguientes imágenes. Tras revisar todas las comprobaciones de inspección del sistema, pulsa el botón Continuar para seguir adelante con el proceso de instalación.

Inspección del sistemaEn la siguiente pantalla, configura tu tienda online Zen Cart. Primero, marca la casilla Acuerdo de licencia y verifica la dirección URL del Dominio del Servidor de Administración para redirigir a tu nombre de dominio a través del protocolo de aplicación HTTPS. A continuación, marca Habilitar SSL para la Tienda en Configuración del Catálogo (Tienda) y verifica las direcciones URL del dominio. En el último campo, comprueba si la ruta física de la tienda coincide con la ruta raíz del documento de tu servidor web y pulsa el botón Continuar para seguir con el proceso de instalación.

Configuración del sistema

En la siguiente pantalla de instalación, añade la dirección de la base de datos MySQL, el nombre y las credenciales creadas anteriormente para la base de datos Zen Cart. Deja sin marcar la opción Cargar Datos de Demostración y selecciona el juego de caracteres de tu base de datos a UTF8 y el prefijo a zen_. Elige el Método de Caché SQL a Archivo y pulsa el botón Continuar para pasar a la siguiente fase de instalación.

Configuración de la base de datos

A continuación, añade una cuenta de superusuario administrador para tu tienda online Zen Cart y una dirección de correo electrónico para la cuenta de administrador. Asegúrate de anotar la contraseña de administración de la tienda y el nombre del directorio de administración y pulsa el botón Continuar para iniciar el proceso de instalación.

Configuración administrativa

Una vez completada la instalación, el instalador mostrará dos botones para acceder al panel de administración respaldado por Zen Cart, que se utilizará para gestionar tu tienda online, y al enlace de la tienda Storefront, que se mostrará a tus clientes.

Configuración finalizada

Para visitar tu tienda online, primero pulsa el botón Ir a tu tienda y se mostrará la interfaz de tu aplicación de comercio electrónico en tu navegador, como se muestra en la siguiente captura de pantalla. También puedes visitar el frontend de la tienda navegando a la dirección IP o nombre de dominio de tu servidor a través del protocolo HTTPS.

https://www.yourdomain.tld

 

ZenCart instalado

Antes de iniciar sesión en el panel de administración respaldado de tu tienda, primero, vuelve a la consola del servidor y ejecuta el siguiente comando para eliminar el directorio de instalación de Zen Cart.

rm -rf /var/www/html/zc_install/

Para gestionar tu tienda online Zen Cart, pulsa en el enlace Admin Backend que te redirigirá al backend de la tienda. Utiliza las credenciales de administrador configuradas durante el proceso de instalación para iniciar sesión en el panel de administración de Zen Cart, como se muestra en la siguiente captura de pantalla.

También puedes visitar el panel web de administración de Zen Cart navegando a la dirección IP o nombre de dominio de tu servidor a través del protocolo HTTPS a la dirección URL del directorio de administración, cadena aleatoria configurada durante el proceso de instalación.

https://yourdomain.tld/random_string/login.php

Inicio de sesión en ZenCartTras acceder al panel de administración respaldado por Zen Cart, completa el asistente de configuración inicial con los detalles de tu propia tienda y pulsa el botón Actualizar para escribir los cambios, como se muestra en la siguiente captura de pantalla.

Asistente de configuración inicial de ZenCart

Para asegurar la aplicación Zen Cart, vuelve a la consola del servidor y emite los siguientes comandos para cambiar los permisos del archivo includes/configure.php y del archivo configure.php del directorio admin para que sean propiedad de la cuenta root.

chown root:root /var/www/html/includes/configure.php
chown root:root /var/www/html/brOil-QUl-cHain/includes/configure.php

Por último, para obligar a los visitantes a navegar por el sitio web del frontend de Zen Cart y acceder de forma segura a la interfaz del backend mediante el protocolo HTTPS que cifra el tráfico entre el servidor y los navegadores de los clientes, vuelve al terminal de tu servidor y crea un nuevo archivo .htaccess emitiendo el siguiente comando.

nano /var/www/html/.htaccess

Cambia la configuración de PHP para que coincida con los recursos de tu propio servidor y añade las reglas de redirección HTTPS como se muestra en el siguiente archivo .htaccess:

# Modify PHP settings
php_flag register_globals off
php_flag magic_quotes_gpc Off
php_value max_execution_time 200
php_value max_input_time 200
php_value upload_max_filesize 999M
php_value post_max_size 999M

 

# Redirect to HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>

¡Eso es todo! Has instalado y configurado correctamente la aplicación de comercio electrónico Zen Cart en Debian 9.2. Sin embargo, como el servidor HTTP Apache utiliza un certificado autofirmado no fiable para cifrar el tráfico entre el servidor y los navegadores de los visitantes, siempre se generará un mensaje de advertencia que se mostrará en sus navegadores. Esta advertencia es perjudicial para el negocio de tu tienda online. En este caso, deberías comprar un certificado emitido por una Autoridad de Certificación de confianza u obtener un par de certificados gratuitos de Let’s Encrypt CA.

Para otras configuraciones personalizadas relativas a la aplicación Zen Cart, visita la página de documentación en la siguiente dirección: https://www.zen-cart.com/wiki/index.php/Main_Page

También te podría gustar...