Cómo instalar Shopware 6 con Nginx y Let’s Encrypt SSL en Ubuntu 20.04

Shopware CE es una plataforma de comercio electrónico gratuita y de código abierto escrita en Symfony y Vue.js. Se basa en una pila tecnológica bastante moderna y es una muy buena alternativa a otra aplicación de comercio electrónico, como Magento. Es una aplicación muy potente y flexible y te da la libertad de aprovechar rápida y fácilmente tu potencial de crecimiento y centrarte en la experiencia perfecta del cliente. Ofrece una interfaz de administración sencilla y fácil de usar para gestionar los clientes y los pedidos. Te permite gestionar los precios de los productos, cambiar o actualizar los temas, diseñar plantillas de correo electrónico para comercializar tus productos y generar resultados estadísticos.

En este tutorial, te mostraremos cómo instalar Shopware CE con Nginx y Let’s Encrypt en Ubuntu 20.04.

Requisitos previos

  • Un servidor con Ubuntu 20.04 con un mínimo de 4 GB de RAM.
  • Un nombre de dominio válido apuntado con tu servidor.
  • Una contraseña de root configurada en tu servidor.

Instalar Nginx y MariaDB

En primer lugar, instala el servidor web Nginx y el servidor de bases de datos MariaDB mediante el siguiente comando:

apt-get install nginx mariadb-server -y

Una vez instalados ambos paquetes, inicia el servicio de Nginx y MariaDB, y haz que se inicien al arrancar el sistema:

systemctl start nginx
systemctl start mariadb
systemctl enable nginx
systemctl enable mariadb

Instalar PHP y otros componentes

Shopware 6 es compatible con versiones de PHP entre la 7.2 y la 7.3. Así que tendrás que instalar PHP junto con otras librerías en tu sistema.

Primero, añade el repositorio de PHP en tu sistema con el siguiente comando:

apt-get install software-properties-common -y
add-apt-repository ppa:ondrej/php

Una vez añadido el repositorio, instala PHP con otras librerías con el siguiente comando:

apt-get install php7.2 php7.2-cli php7.2-fpm php7.2-common php7.2-mysql php7.2-curl php7.2-json php7.2-zip php7.2-gd php7.2-xml php7.2-mbstring php7.2-intl php7.2-opcache git unzip socat curl bash-completion -y

Una vez instalados todos los paquetes, edita el archivo php.ini y modifica algunos ajustes deseados:

nano /etc/php/7.2/fpm/php.ini

Cambia las siguientes líneas:

memory_limit = 512M
upload_max_filesize = 20M
max_execution_time = 300

Guarda y cierra el archivo cuando hayas terminado.

A continuación, tendrás que instalar el cargador IonCube en tu sistema.

Primero, descárgalo con el siguiente comando:

wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz

Una vez descargado, extrae el archivo descargado con el siguiente comando:

tar xfz ioncube_loaders_lin_x86-64.tar.gz

A continuación, localiza la ruta del directorio de la extensión PHP:

php -i | grep extension_dir

Deberías ver la siguiente salida:

extension_dir => /usr/lib/php/20190902 => /usr/lib/php/20190902

A continuación, copia el cargador de IonCube al directorio de extensiones de PHP:

cp ioncube/ioncube_loader_lin_7.2.so /usr/lib/php/20180731/

A continuación, edita el archivo php.ini y define el cargador de IonCube:

nano /etc/php/7.2/fpm/php.ini

Añade la siguiente línea dentro de la sección [PHP]:

zend_extension = /usr/lib/php/20180731/ioncube_loader_lin_7.2.so

Guarda y cierra el archivo y reinicia el servicio PHP-FPM para aplicar los cambios.

systemctl restart php7.2-fpm

Configurar la base de datos MariaDB

En primer lugar, asegura la instalación de MariaDB y establece la contraseña de root utilizando el siguiente script:

mysql_secure_installation

Responde a todas las preguntas como se muestra a continuación:

Enter current password for root (enter for none): 
Set root password? [Y/n] Y
New password: 
Re-enter new password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Una vez que hayas terminado, entra en el shell de MariaDB con el siguiente comando:

mysql -u root -p

Proporciona tu contraseña de root de MariaDB y luego crea una base de datos y un usuario para Shopware:

MariaDB [(none)]> CREATE DATABASE shopwaredb;
MariaDB [(none)]> GRANT ALL ON shopwaredb.* TO 'shopware'@'localhost' IDENTIFIED BY 'password';

A continuación, vacía los privilegios y sal de MariaDB con el siguiente comando:

MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar Composer

Composer es un gestor de dependencias para PHP. Se utiliza para instalar todas las dependencias de PHP necesarias para instalar Shopware.

Puedes instalarlo utilizando el comando curl como se muestra a continuación:

curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer

Una vez instalado, verifica la versión de Composer con el siguiente comando:

composer --version

Deberías obtener la siguiente salida:

Composer version 1.10.7 2020-06-03 10:03:56

Descargar Shopware

Primero, crea un directorio para Shopware dentro del directorio raíz de la web Nginx:

mkdir /var/www/html/shopware

A continuación, cambia el directorio a shopware y descarga la última versión de Shopware con el siguiente comando:

cd /var/www/html/shopware
wget https://www.shopware.com/en/Download/redirect/version/sw6/file/install_6.2.2_1592398977.zip

Una vez descargado, descomprime el archivo descargado con el siguiente comando:

unzip install_6.2.2_1592398977.zip

A continuación, instala todas las dependencias de PHP con el siguiente comando:

composer install

A continuación, cambia la propiedad del directorio shopware y dale los permisos adecuados utilizando el siguiente comando:

chown -R www-data:www-data /var/www/html/shopware
chmod -R 755 /var/www/html/shopware

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar Nginx para Shopware

En primer lugar, crea un nuevo archivo de configuración del host virtual Nginx para Shopware:

nano /etc/nginx/sites-available/shopware.conf

Añade las siguientes líneas:

server {
    listen 80;

    index index.php index.html;
    server_name shopware.linuxbuz.com;
    root /var/www/html/shopware/public;

    location /recovery/install {
        index index.php;
        try_files $uri /recovery/install/index.php$is_args$args;
    }

    location /recovery/update/ {
        location /recovery/update/assets {
        }
        if (!-e $request_filename){
            rewrite . /recovery/update/index.php last;
        }
    }

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi.conf;
        fastcgi_param HTTP_PROXY "";
        fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        client_max_body_size 24M;
        client_body_buffer_size 128k;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        http2_push_preload on;
    }
}

Guarda y cierra el archivo y luego habilita el archivo de host virtual de Shopware con el siguiente comando:

ln -s /etc/nginx/sites-available/shopware.conf /etc/nginx/sites-enabled/

A continuación, comprueba si el 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, reinicia el servicio Nginx para aplicar los cambios:

systemctl reload nginx

Accede al asistente de instalación de Shopware

En este punto, Shopware está instalado en tu sistema. Ahora, abre tu navegador web y escribe la URL http://shopware.linuxbuz.com. Deberías ver el asistente de instalación web de Shopware:

Shopware 6

Selecciona tu idioma y haz clic en el botón Siguiente. Deberías ver la siguiente pantalla:

Comprobación de los requisitos del sistema

Asegúrate de que se han instalado todas las dependencias necesarias y haz clic en el botón Siguiente. Deberías ver la siguiente pantalla:

Acepta los términos y condiciones

Acepta los términos y condiciones y haz clic en el botón Siguiente. Deberías ver la siguiente pantalla:

Configurar la base de datos de Shopware

Proporciona los datos de tu base de datos y haz clic en el botón Iniciar la instalación. Una vez que la instalación se haya completado con éxito, deberías ver la siguiente pantalla:

Se ha instalado el Shopware

Ahora, haz clic en el botón Siguiente. Deberías ver la pantalla de configuración de Shopware:

Configuración de la tienda Shopware

Proporciona el nombre de tu tienda, el correo electrónico, el país, el correo electrónico del administrador, el nombre de usuario del administrador, la contraseña y haz clic en el botón Siguiente. Serás redirigido a la pantalla del panel de control de Shopware:

Tablero de mandos de Shopware

Haz clic en el botón Siguiente. Deberías ver la siguiente pantalla:

Importación de datos

Instala los datos que desees y haz clic en el botón Siguiente. Deberías ver la siguiente pantalla:

Configuración del correo electrónico

Selecciona el agente de correo electrónico que desees y haz clic en el botón Siguiente. Deberías ver la siguiente pantalla:

Agente de correo local

Selecciona la opción que desees y haz clic en el botón Siguiente. Deberías ver la siguiente pantalla:

Configurar los pagos de Paypal en Shopware

Configura tu PayPal o haz clic en el botón Omitir. Deberías ver la siguiente pantalla:

Modo Sandbox de Paypal

Configura tus credenciales de PayPal o haz clic en el botón Omitir. Deberías ver la siguiente pantalla:

Plugins recomendados

Selecciona tu región y haz clic en el botón Siguiente. Deberías ver la siguiente pantalla:

Cuenta Shopware

Haz clic en el botón Omitir. Una vez configurado el Shopware, deberías ver la siguiente pantalla:

La configuración de Shopware está terminada

Haz clic en el botón Finalizar. Deberías ver el panel de control de Shopware en la siguiente pantalla:

Shopware 6

Asegura el Shopware con Let’s Encrypt

Antes de empezar, necesitarás instalar el cliente Certbot en tu sistema para instalar y gestionar el SSL de Let’s Encrypt. Puedes instalarlo con el siguiente comando:

apt-get install certbot python3-certbot-nginx -y

Una vez instalado el cliente Certbot, ejecuta el siguiente comando para descargar e instalar Let’s Encrypt SSL para tu sitio web:

certbot --nginx -d shopware.linuxbuz.com

Proporciona tu dirección de correo electrónico y acepta las condiciones del servicio como se muestra a continuación:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
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 shopware.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/shopware.conf

Selecciona si quieres redirigir el tráfico HTTP a HTTPS o no:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 iniciar el proceso. Una vez completada la instalación, deberías ver el siguiente resultado:

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/shopware.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://shopware.linuxbuz.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=shopware.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/shopware.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/shopware.linuxbuz.com/privkey.pem
   Your cert will expire on 2020-09-22. 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"
 - 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, tu sitio web de Shopware está protegido con Let’s Encrypt SSL. Ahora puedes acceder a tu sitio web de forma segura utilizando la URL https://shopware.linuxbuz.com.

Conclusión

Enhorabuena! has instalado con éxito Shopware con Nginx y Let’s Encrypt SSL en Ubuntu 20.04. Ahora puedes empezar a montar tu propio negocio online con Shopware. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...