Cómo instalar OpenCart con Nginx y Let’s Encrypt en Debian 10
Opencart es una popular solución de carrito de la compra de código abierto que te ayuda a alojar tu propio sitio web de comercio electrónico totalmente funcional. Opencart proporciona una interfaz sencilla y fácil de usar para vender tus productos en línea, como Amazon y Flipcart. Está diseñado específicamente para pequeñas y medianas empresas y tiene todas las características estándar de comercio electrónico necesarias para las tiendas online. Ofrece un rico conjunto de funciones, como multidivisa, idioma, categorías ilimitadas, productos, revisiones de productos, multitienda y muchas más.
En este tutorial, te mostraremos cómo instalar OpenCart con Nginx en Debian 10 y asegurarlo con Let’s Encrypt SSL.
Requisitos previos
- Un servidor con Debian 10.
- Una contraseña de root configurada en tu servidor.
Cómo empezar
Primero, actualiza tu sistema a la última versión con el siguiente comando:
apt-get update -y
apt-get upgrade -y
Una vez actualizado tu servidor, reinícialo para aplicar los cambios.
Instalar el servidor LEMP
En primer lugar, instala el servidor web Nginx, el servidor de bases de datos MariaDB, PHP y otras extensiones PHP necesarias ejecutando el siguiente comando:
apt-get install nginx mariadb-server php-common php-cli php-fpm php-opcache php-gd php-mysql php-curl php-intl php-xsl php-mbstring php-zip php-bcmath php-soap unzip git -y
Una vez instalados todos los paquetes, edita el archivo php.ini y realiza algunos cambios:
nano /etc/php/7.3/fpm/php.ini
Cambia las siguientes líneas:
memory_limit = 256M upload_max_filesize = 100M opcache.save_comments=1 max_execution_time = 300 date.timezone = Asia/Kolkata
Guarda y cierra el archivo cuando hayas terminado.
Configurar la base de datos MariaDB
A continuación, tendrás que establecer una contraseña de root de MariaDB, ya que no está establecida en Debian 10.
Para ello, entra en el shell de MariaDB con el siguiente comando:
mysql
Una vez iniciada la sesión, establece una contraseña de root de MariaDB con el siguiente comando:
MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD("yournewrootpassword");
A continuación, establece el plugin de autenticación de MariaDB como mysql_native_password con el siguiente comando:
MariaDB [(none)]> SET GLOBAL innodb_fast_shutdown = 0;
MariaDB [(none)]> UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root';
A continuación, vacía los privilegios y sal del shell de MariaDB con el siguiente comando
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
A continuación, inicia sesión en MariaDB con el usuario root:
mysql -u root -p
Proporciona tu contraseña de root y crea una base de datos y un usuario para OpenCart con el siguiente comando
MariaDB [(none)]> CREATE DATABASE opencartdb;
MariaDB [(none)]> GRANT ALL ON opencartdb.* TO 'opencart'@'localhost' IDENTIFIED BY 'password';
A continuación, vacía los privilegios y sal del intérprete de comandos de MariaDB con el siguiente comando:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Una vez configurado MariaDB, puedes pasar al siguiente paso.
Descargar OpenCart
Puedes descargar la última versión de OpenCart desde el repositorio Git con el siguiente comando:
wget https://github.com/opencart/opencart/releases/download/3.0.3.2/opencart-3.0.3.2.zip
Después de descargar OpenCart, descomprime el archivo descargado con el siguiente comando:
unzip opencart-3.0.3.2.zip
A continuación, mueve el directorio de carga al directorio raíz de la web Nginx con el siguiente comando:
mv upload /var/www/html/opencart
A continuación, cambia el directorio a opencart y renombra el archivo config-dist.php:
cd /var/www/html/opencart/
mv config-dist.php config.php
mv admin/config-dist.php admin/config.php
A continuación, da los permisos adecuados al directorio opencart con el siguiente comando:
chown -R www-data:www-data /var/www/html/opencart/
chmod -R 775 /var/www/html/opencart/
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar Nginx para OpenCart
A continuación, tendrás que crear un archivo de configuración del host virtual Nginx para servir a OpenCart. Puedes crearlo con el siguiente comando:
nano /etc/nginx/sites-available/opencart.conf
Añade el siguiente contenido:
server { listen 80; server_name opencart.linuxbuz.com; root /var/www/html/opencart; index index.php; access_log /var/log/nginx/opencart_access.log; error_log /var/log/nginx/opencart_error.log; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.3-fpm.sock; } location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires max; log_not_found off; } }
Guarda y cierra el archivo y luego comprueba si Nginx tiene algún error de sintaxis con el siguiente comando:
nginx -t
Deberías obtener la siguiente salida:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
A continuación, habilita el archivo de host virtual de Nginx con el siguiente comando:
ln -s /etc/nginx/sites-available/opencart.conf /etc/nginx/sites-enabled/
A continuación, reinicia el servicio Nginx y PHP-FPM para aplicar los cambios:
systemctl restart nginx
systemctl restart php7.3-fpm
Una vez que hayas terminado, puedes pasar al siguiente paso.
Asegurar OpenCart con Let’s Encrypt SSL
A continuación, tendrás que instalar un cliente Certbot para instalar y configurar Let’s Encrypt para tu sitio web.
Por defecto, el Certbot no está disponible en el repositorio por defecto de Debian 10. Así que tendrás que añadir un repositorio de Certbot en tu sistema.
Puedes añadirlo con el siguiente comando:
echo "deb http://ftp.debian.org/debian buster-backports main" >> /etc/apt/sources.list
A continuación, actualiza el repositorio e instala el cliente Certbot para Nginx con el siguiente comando:
apt-get update -y
apt-get install python3-certbot-nginx -t buster-backports
Una vez instalado, ejecuta el siguiente comando para descargar Let’s Encrypt SSL y configurar Nginx para que utilice este SSL:
certbot --nginx -d opencart.linuxbuz.com
Se te pedirá que aceptes las condiciones del servicio y que proporciones tu dirección de correo electrónico válida, como se muestra a continuación:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for opencart.linuxbuz.com Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/nginx/sites-available/opencart-le-ssl.conf Enabled Apache socache_shmcb module Enabled Apache ssl module Deploying Certificate to VirtualHost /etc/nginx/sites-available/opencart-le-ssl.conf Enabling available site: /etc/nginx/sites-available/opencart-le-ssl.conf Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
A continuación, tendrás que elegir si quieres redirigir el tráfico HTTP a HTTPS, como se muestra a continuación:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Escribe 2 y pulsa Enter para continuar. Una vez completada la instalación, deberías obtener la siguiente salida:
Redirecting vhost in /etc/nginx/sites-enabled/opencart.conf to ssl vhost in /etc/nginx/sites-available/opencart-le-ssl.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://opencart.linuxbuz.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=opencart.linuxbuz.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/opencart.linuxbuz.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/opencart.linuxbuz.com/privkey.pem Your cert will expire on 2020-04-30. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
En este punto, OpenCart está protegido con Let’s Encrypt SSL.
Acceder a la interfaz web de OpenCart
Ahora, abre tu navegador web y escribe la URL https://opencart.linuxbuz.com. Serás redirigido a la página del Acuerdo de Licencia de OpenCart:
Haz clic en el botón Continuar para aceptar el Acuerdo de Licencia. Deberías ver la siguiente página:
Asegúrate de que todas las extensiones PHP necesarias están instaladas y luego haz clic en el botón CONTINUAR. Deberías ver la siguiente página:
Proporciona tus credenciales de la base de datos, nombre de usuario y contraseña de administrador y haz clic en el botón CONTINUAR. Una vez completada la instalación, deberías ver la siguiente página:
Ahora, abre tu terminal y elimina el directorio de instalación con el siguiente comando:
rm -rf /var/www/html/opencart/install/
A continuación, haz clic en el botón IR A TU TIENDA ONLINE. Deberías ver tu tienda OpenCart en la siguiente página:
A continuación, haz clic en el botón INGRESAR A TU ADMINISTRACIÓN. Deberías ver la página de inicio de sesión de OpenCart:
Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón Iniciar sesión. Deberías ver tu panel de administración de OpenCart en la siguiente página:
Conclusión
Enhorabuena! has instalado y asegurado con éxito OpenCart en Debian 10. Ahora puedes alojar tu propio carrito de la compra online con OpenCart. No dudes en preguntarme si tienes alguna duda.