Zen Cart es una plataforma gratuita de gestión de contenido de comercio electrónico y carrito de la compra de código abierto. El software está escrito en el lenguaje de programación PHP y, a menudo, se instala en Linux bajo los servidores web Apache/Nginx, PHP y el sistema de gestión de bases de datos MySQL/MariaDB, también conocido como LAMP o LEMP stack. La solución de comercio electrónico Zen Cart se utiliza para crear fácilmente tiendas en línea para diferentes empresas y anunciar y vender servicios y mercancías.
En esta guía, le mostraré cómo instalar y configurar la última versión de Zen Cart en Debian 9 para crear una tienda de compras en línea gratuita.
Requisitos
- Instalación mínima del servidor Debian 9 en una máquina completa o en un servidor privado virtual
- Una dirección IP estática configurada para una de tarjetas de interfaz de red de su sistema
- privilegios de sudo root para una cuenta local o remota o acceso directo a la cuenta raíz
- Un nombre de dominio, privado o público, según su implementación, con los registros DNS adecuados configurados para servicios web. Si no tiene un nombre de dominio válido o registrado, puede realizar la instalación y acceder al sitio web a través de la dirección IP de su servidor
- Si desea utilizar el registro en el sitio web, la moderación de comentarios y otras funciones, debe tener un servidor de correo en ejecución correctamente configurado en sus instalaciones con acceso remoto a sus servicios IMAP y SMTP.
Requisitos previos
Antes de comenzar a instalar y configurar Zen Cart desde fuentes en su propio servidor, primero asegúrese de que el sistema cumpla con todos los requisitos de software para compilar e instalar la aplicación. En el primer paso, actualice los repositorios de su sistema y los paquetes de software emitiendo el siguiente comando.
apt update
apt update
hostnamectl set-hostname zencart
Verifique el nombre de host de la máquina y el archivo de hosts ejecutando los siguientes comandos.
hostnamectl
cat /etc/hostname
hostname –s
hostname –f
En el siguiente paso, ejecute el siguiente comando para instalar algunas utilidades necesarias que se utilizarán para administrar aún más su sistema desde la línea de comandos.
apt install wget bash-completion zip unzip curl
Finalmente, reinicie el servidor Debian para aplicar las actualizaciones del núcleo y el nombre de host cambie correctamente.
systemctl reboot
Instalar Apache y PHP
Zen Cart es una plataforma de comercio electrónico CMS basada en la web escrita principalmente en el lenguaje de programación del lado del servidor PHP. Para ejecutar los scripts de archivo PHP de la aplicación, se debe instalar y operar en el sistema un servidor web, como un servidor Apache HTTP, y una puerta de enlace 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, emita el siguiente comando en la consola de su servidor.
apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-curl php7.0-gd php7.0-mbstring php7.0-xml
Después de que se hayan instalado Apache y PHP, pruebe si el servidor web está funcionando y escuchando las conexiones de red en el puerto 80 emitiendo el siguiente comando con privilegios de raíz.
netstat –tlpn
En caso de que la utilidad de red netstat no esté instalada de forma predeterminada en su sistema Debian, ejecute el siguiente comando para instalarla.
apt install net-tools
ss- tulpn
Configurar el cortafuegos
ufw allow WWW
o
ufw allow 80/tcp
Si está utilizando reglas sin procesar de iptables para administrar las reglas del cortafuegos en su servidor Debian, agregue la siguiente regla para permitir el tráfico entrante del puerto 80 en el cortafuegos para que los visitantes puedan navegar por la tienda en línea.
apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload
Configurar Apache y SSL/TLS
a2enmod rewrite expires env alias deflate mime
systemctl restart apache2
Finalmente, pruebe si la página web predeterminada del servidor web Apache se puede mostrar en los navegadores de su cliente visitando la dirección IP de su máquina Debian o su nombre de dominio o servidor FQDN a través del protocolo HTTP, como se muestra en la siguiente imagen. Si no conoce la dirección IP de su máquina, ejecute los comandos ifconfig o 'ip a' para revelar la dirección IP de su servidor.
http://tudominio.tld
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 sus clientes, emita 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, abra el archivo de configuración del sitio SSL predeterminado de Apache con un editor de texto y habilite las reglas de reescritura de URL agregando 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
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
Además, realice el siguiente cambio en la línea VirtualHost para que se vea como se muestra en el siguiente extracto:
<VirtualHost *:443>
Cierre el archivo Apache SSL y abra el archivo /etc/apache2/sites-enabled/000-default.conf para editarlo y agregue las mismas reglas de reescritura de URL que para el archivo de configuración SSL. Inserte las líneas de código después de la instrucción DocumentRoot como se muestra en el siguiente ejemplo.
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
Finalmente, reinicie el demonio Apache para aplicar todas las reglas configuradas hasta el momento y visite su dominio a través del protocolo HTTP. Debido a que está utilizando los pares de certificados autofirmados automáticamente emitidos por Apache en la instalación, se debe mostrar una advertencia de error en el navegador.
systemctl restart apache2
https://tudominio.tld
Acepte la advertencia sobre el certificado no confiable para continuar y ser redirigido a la página web predeterminada de Apache.
En caso de que la aplicación de firewall UFW bloquee las conexiones de red entrantes al puerto HTTPS, debe agregar una nueva regla para permitir que el tráfico HTTPS pase a través del firewall emitiendo el siguiente comando.
ufw allow 'WWW Full'
o
ufw allow 443/tcp
Si iptables es la aplicación de firewall predeterminada instalada para proteger su sistema Debian a nivel de red, agregue la siguiente regla para permitir el tráfico entrante del puerto 443 en el firewall para que los visitantes puedan navegar por su 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, debemos realizar algunos cambios adicionales en el archivo de configuración predeterminado de PHP para garantizar que las siguientes variables de PHP estén habilitadas y que la configuración de la zona horaria de PHP esté configurada correctamente y coincida con la ubicación geográfica de su sistema. Abra el archivo /etc/php/7.0/apache2/php.ini para editarlo y asegúrese de que las siguientes líneas estén configuradas de la siguiente manera. Además, inicialmente, haga una copia de seguridad del archivo de configuración de PHP.
cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini
file_uploads = On
memory_limit = 128 M
upload_max_file_size = 64M
post_max_size = 64M
date.timezone = Europe/London
Aumente las variables post_max_size y upload_max_file_size según corresponda para admitir archivos adjuntos de gran tamaño y reemplace la variable time.zone de acuerdo con su hora física consultando la lista de zonas horarias proporcionada por los documentos de PHP en el siguiente enlace http://php.net/manual/en /timezones.php
Si desea aumentar la velocidad de carga de las páginas de su sitio web a través del complemento OPCache disponible para PHP7, agregue la siguiente configuración de OPCache en la parte inferior del archivo de configuración del intérprete de 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
Cierre el archivo de configuración php.ini y verifique el final del archivo de configuración de PHP para verificar si las variables se agregaron correctamente emitiendo el siguiente comando.
tail /etc/php/7.0/apache2/php.ini
Una vez que haya realizado todos los cambios explicados anteriormente, reinicie el demonio apache para aplicar los nuevos cambios emitiendo el siguiente comando.
systemctl restart apache2
echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php
https://tudominio.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 usar la base de datos MariaDB como backend. Ejecute 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
Después de instalar MariaDB, verifique si el demonio se está ejecutando y escucha las conexiones en el host local, puerto 3306, ejecutando el comando netstat.
netstat –tlpn | grep mysql
Luego, inicie sesión en la consola de MySQL y asegure la cuenta raíz de MariaDB emitiendo los siguientes comandos.
mysql -h localhost
use mysql;
update user set plugin='' where user='root';
flush privileges;
exit
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, intente iniciar sesión en la base de datos desde la consola sin contraseña de root. Se debe denegar el acceso a la base de datos si no se proporciona una contraseña para la cuenta raíz, como se ilustra en el siguiente extracto del comando:
[email protected]:~# mysql -h localhost -u root
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[email protected]:~# 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
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
systemctl restart mysql apache2
systemctl status mysql apache2
Instalar Zen Cart
Una vez que se cumplan todos los requisitos del sistema para la instalación de su tienda en línea de comercio electrónico, visite la página de descarga oficial de SourceForge Zen Cart en https://sourceforge.net/projects/zencart/files/ y descargue el archivo comprimido del paquete zip más reciente con la ayuda de la utilidad wget, como se ilustra 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
rm /var/www/html/index.html
rm /var/www/html/info.php
unzip zen-cart-v1.5.5f-12312017b.zip
ls
ls -al zen-cart-v[tab]
cp -rf zen-cart-v1.5.5e-03082017/* /var/www/html/
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, ejecute los siguientes comandos para otorgar al usuario de tiempo de ejecución de Apache permisos completos de escritura en la ruta raíz web. Use el comando ls para enumerar los permisos para 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/
Ahora, continúe con el proceso de instalación de la tienda en línea de Zen Cart abriendo un navegador y navegue por la dirección IP o el nombre de dominio o el FQDN del servidor a través del protocolo HTTPS. En la primera pantalla de instalación, el instalador de Zen Cart le presentará un resumen de una lista de problemas relacionados con usted que está viendo en la página. Debido a que la aplicación aún no se ha instalado, haga clic en el enlace Haga clic aquí para iniciar el proceso de instalación, como se ilustra en la siguiente imagen.
En la siguiente pantalla de instalación, el instalador realizará una serie de comprobaciones previas a la instalación en la configuración PHP del servidor y 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 verificará si el usuario del tiempo de ejecución HTTP de Apache puede escribir en una serie de directorios desde la ruta webroot, como se muestra en las imágenes a continuación. Después de revisar todas las comprobaciones de las inspecciones del sistema, presione el botón Continuar para continuar con el proceso de instalación.
En la siguiente pantalla, configure su tienda en línea Zen Cart. Primero, marque la casilla de verificación Acuerdo de licencia y verifique la dirección URL del dominio del servidor de administración para redirigir a su nombre de dominio a través del protocolo de aplicación HTTPS. A continuación, marque Habilitar SSL para Storefront en la configuración del catálogo (Storefront) y verifique las direcciones URL del dominio. En el último archivo, verifique si la ruta física de la tienda coincide con la ruta raíz del documento de su servidor web y presione el botón Continuar para continuar con el proceso de instalación.
En la siguiente pantalla de instalación, agregue la dirección de la base de datos MySQL, el nombre y las credenciales creadas anteriormente para la base de datos de Zen Cart. Deje Cargar datos de demostración sin marcar y seleccione el conjunto de caracteres de su base de datos en UTF8 y el prefijo en zen_. Elija el Método de caché SQL para archivar y presione el botón Continuar para pasar a la siguiente etapa de instalación.
A continuación, agregue una cuenta de superusuario de administrador para su tienda en línea Zen Cart y una dirección de correo electrónico para la cuenta de administrador. Asegúrese de anotar la contraseña de la tienda de administración y el nombre del directorio de administración y presione el botón Continuar para iniciar el proceso de instalación.
Una vez completada la instalación, el instalador mostrará dos botones para acceder al panel de administración respaldado por Zen Cart, que se usará para administrar su tienda en línea, y el enlace de la tienda Storefront, que se mostrará a sus clientes.
Para visitar su tienda en línea, primero presione el botón Ir a su tienda y la interfaz de su aplicación de comercio electrónico se mostrará en su navegador como se ilustra en la siguiente captura de pantalla. También puede visitar la interfaz de la tienda navegando a la dirección IP de su servidor o nombre de dominio a través del protocolo HTTPS.
Antes de iniciar sesión en el panel de administración respaldado por su tienda, primero regrese a la consola del servidor y emita el siguiente comando para eliminar el directorio de instalación de Zen Cart.
rm -rf /var/www/html/zc_install/
Para administrar su tienda en línea Zen Cart, presione el enlace Admin Backend que lo redirigirá al backend de la tienda. Utilice las credenciales de administrador configuradas durante el proceso de instalación para iniciar sesión en el panel back-end de Zen Cart, como se muestra en la siguiente captura de pantalla.
También puede visitar el panel web de administración de Zen Cart navegando a su servidor Dirección IP o nombre de dominio a través del protocolo HTTPS a la cadena aleatoria de la dirección URL del directorio de administración configurada durante el proceso de instalación.
https://yourdomain.tld/random_string/login.php
Después de iniciar sesión en el panel de administración respaldado por Zen Cart, complete el asistente de configuración inicial con los detalles de su propia tienda y comience el botón Actualizar para escribir los cambios, como se muestra en la siguiente captura de pantalla.
Para proteger la aplicación Zen Cart, regrese a la consola del servidor y emita los siguientes comandos para cambiar los permisos para el archivo include/configure.php y para que el archivo configure.php del directorio de administración sea propiedad de la cuenta raíz.
chown root:root /var/www/html/includes/configure.php
chown root:root /var/www/html/brOil-QUl-cHain/includes/configure.php
Finalmente, para obligar a los visitantes a navegar por el sitio web frontend de Zen Cart y acceder de forma segura a la interfaz backend a través del protocolo HTTPS que encripta el tráfico entre el servidor y los navegadores del cliente, regrese a la terminal de su servidor y cree un nuevo archivo .htaccess emitiendo lo siguiente comando.
nano /var/www/html/.htaccess
Cambie la configuración de PHP para que coincida con los recursos de su propio servidor y agregue las reglas de redirección HTTPS como se muestra en el siguiente extracto del 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! Ha instalado y configurado con éxito la aplicación de comercio electrónico Zen Cart en Debian 9.2. Sin embargo, debido a que el servidor Apache HTTP utiliza un certificado autofirmado que no es de confianza para cifrar el tráfico entre el servidor y los navegadores de los visitantes, siempre se generará y mostrará un mensaje de advertencia en sus navegadores. Esta advertencia es mala para su negocio de tienda en línea. En este caso, debe 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 con respecto a la aplicación Zen Cart, visite la página de documentación en la siguiente dirección:https://www.zen-cart.com/wiki/index.php/Main_Page