Cómo instalar Shopware con Nginx y Let’s Encrypt SSL gratis en Ubuntu 22.04

Shopware community edition es una plataforma de carrito de la compra gratuita y de código abierto que te permite crear tu propia tienda online en la web. Está escrita en Symfony y Vue.js y se basa en una pila tecnológica moderna. Es una solución alternativa a otras aplicaciones de comercio electrónico, como Magento. Ofrece una interfaz web bonita y fácil de usar para gestionar clientes y pedidos. Te permite gestionar los precios de los productos, cambiar o actualizar 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 22.04.

Requisitos previos

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

Instalar Nginx y MariaDB

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

apt-get install nginx mariadb-server -y

Una vez instalados ambos paquetes, inicia el servicio Nginx y MariaDB, y habilítalos para 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 comprendidas entre la 7.2 y la 7.3. Así que tendrás que instalar PHP junto con otras librerías en tu sistema.

En primer lugar, añade el repositorio de PHP a 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 junto con otras librerías mediante 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/20170718 => /usr/lib/php/20170718

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

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

A continuación, edita el archivo php.ini y define el cargador 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/20170718/ioncube_loader_lin_7.2.so

Guarda y cierra el archivo, luego 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, inicia sesión en el shell de MariaDB con el siguiente comando:

mysql -u root -p

Proporciona tu contraseña raíz de MariaDB y, a continuación, 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.

Descarga Shopware

En primer lugar, crea un directorio para Shopware dentro del directorio raíz web de Nginx:

mkdir /var/www/html/shopware

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

cd /var/www/html/shopware
wget http://releases.s3.shopware.com.s3.amazonaws.com/install_5.4.5_6847c0845f0f97230aa05c7294fa726a96dda3ff.zip?_ga=2.133696968.774684214.1529926951-1771999509.1528830594 -O shopware.zip

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

unzip shopware.zip

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 continuar con el siguiente paso.

Configurar Nginx para Shopware

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

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

Añade las siguientes líneas:

server {
    listen 80;

    server_name shopware.example.com; # Check this
    root /var/www/html/shopware; # Check this

    index shopware.php index.php;

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

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; # Check this
    }
}

Guarda y cierra el archivo, 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 Nginx tiene algún error de sintaxis utilizando 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

Para comprobar el estado de Nginx, ejecuta el siguiente comando:

systemctl status nginx

Deberías obtener el siguiente resultado:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-09-12 05:03:41 UTC; 5min ago
       Docs: man:nginx(8)
    Process: 29668 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS)
   Main PID: 17628 (nginx)
      Tasks: 3 (limit: 4579)
     Memory: 5.7M
        CPU: 63ms
     CGroup: /system.slice/nginx.service
             ??17628 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??29669 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ??29670 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Sep 12 05:03:41 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 12 05:03:41 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.
Sep 12 05:09:28 ubuntu2204 systemd[1]: Reloading A high performance web server and a reverse proxy server...
Sep 12 05:09:28 ubuntu2204 systemd[1]: Reloaded A high performance web server and a reverse proxy server.

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.example.com. Deberías ver el asistente de instalación web de Shopware:

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

Asegúrate de que están instaladas todas las dependencias necesarias y pulsa el botón Siguiente. Deberías ver la siguiente pantalla:

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

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

Ahora, haz clic en el botón Iniciar instalación. Deberías ver la siguiente pantalla:

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

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

Introduce 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. Se te redirigirá a la pantalla del panel de control de Shopware:

Haz clic en el botón Ir al backend de la tienda. Deberías ver la siguiente pantalla:

Introduce tu nombre de usuario y contraseña y haz clic en el botón Iniciar sesión. Deberías ver la siguiente página:

Ahora, completa la configuración de tu tienda y empieza a vender online utilizando la plataforma Shopware.

Proteger Shopware con Let’s Encrypt

Antes de empezar, necesitarás instalar el cliente Certbot en tu sistema para instalar y gestionar el SSL Let’s Encrypt. Puedes instalarlo utilizando 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.example.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.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/shopware.conf

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

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 intro 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.example.com

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

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

Conclusión

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

También te podría gustar...