Cómo instalar Shopware 6 con NGINX y Let’s Encrypt en CentOS 8

Shopware es una plataforma gratuita y de código abierto que te ayuda a crear tu propio sitio web de comercio electrónico para impulsar tu negocio online. Proporciona un montón de herramientas útiles que te ayudan a construir y personalizar una tienda online totalmente receptiva. Es muy similar a Magento. En comparación con Magento, Shopware es una aplicación muy potente, fácil de usar y flexible. Te ayuda a crear y gestionar contenidos y productos fácilmente desde cualquier dispositivo con su moderna interfaz de usuario.

En este tutorial, te mostraremos cómo instalar Shopware con Nginx y Let’s Encrypt SSL en CentOS 8.

Requisitos previos

  • Un servidor con CentOS 8.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada en tu servidor.

Instalar el servidor LEMP

Shopware se ejecuta en un servidor web y está construido sobre PHP con componentes Symfony y Zend, y utiliza MySQL o MariaDB como backend de la base de datos. Así que necesitarás instalar Nginx, MariaDB, PHP y otras extensiones en tu servidor. Puedes instalarlos todos con el siguiente comando:

dnf install nginx mariadb-server php php-cli php-intl php-fpm php-common php-mysqli php-curl php-json php-zip php-gd php-xml php-mbstring php-opcache unzip -y

Una vez instalados todos los paquetes, inicia el servicio Nginx, MariaDB y PHP-FPM y permite que se inicien al reiniciar el sistema con el siguiente comando:

systemctl start mariadb
systemctl enable mariadb
systemctl start nginx
systemctl start php-fpm
systemctl enable nginx
systemctl enable php-fpm

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

Configurar PHP-FPM

Por defecto, PHP-FPM está configurado para ejecutarse como usuario y grupo apache. Así que tendrás que configurarlo para que se ejecute como un usuario y grupo de Nginx. Puedes hacerlo editando el archivo /etc/php-fpm.d/www.conf:

nano /etc/php-fpm.d/www.conf

Cambia las siguientes líneas:

user = nginx 
group = nginx 

Guarda y cierra el archivo y luego crea un directorio de sesión y establece la propiedad adecuada con el siguiente comando:

mkdir -p /var/lib/php/session 
chown -R nginx:nginx /var/lib/php/session

A continuación, edita el archivo php.ini y modifica algunos ajustes recomendados:

nano /etc/php.ini

Cambia las siguientes líneas:

memory_limit = 512M
upload_max_filesize = 20M
date.timezone = Asia/Kolkata

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

systemctl restart php-fpm

Crear una base de datos para Shopware

A continuación, tendrás que crear una base de datos y un usuario para Shopware. En primer lugar, conéctate a MariaDB utilizando el siguiente comando:

mysql

Una vez conectado, crea una base de datos y un usuario con el siguiente comando:

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

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

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

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

Descarga el Shopware

A continuación, tendrás que descargar la última versión de Shopware de su sitio web oficial. Primero, crea un directorio para Shopware dentro del directorio raíz de Nginx:

mkdir /var/www/html/shopware

A continuación, descarga el Shopware con el siguiente comando:

wget https://www.shopware.com/en/Download/redirect/version/sw6/file/install_v6.3.5.0_ba08dbfc07784b5cefe7837f2abbda69dbf5b8b7.zip -O shopware.zip

Una vez completada la descarga, extrae el archivo descargado al directorio de Shopware:

unzip shopware.zip -d /var/www/html/shopware

A continuación, establece el permiso y la propiedad adecuados con el siguiente comando:

chown -R nginx:nginx /var/www/html/shopware
chmod -R 775 /var/www/html/shopware

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

Configurar Nginx para Shopware

A continuación, crea un archivo de configuración del host virtual Nginx para Shopware con el siguiente comando:

nano /etc/nginx/conf.d/shopware.conf

Añade las siguientes líneas:

server {
    listen 80;

    # Handle / to index.php
    index index.php;

    # Our server name
    server_name shopware.example.com;

    # Where the code is located
    root /var/www/html/shopware/public;

    # Needed for Shopware install / update
    location /recovery/install {
        index index.php;
        try_files $uri /recovery/install/index.php$is_args$args;
    }

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

    # Forward any not found file to index.php. Also allows to have beautiful urls like /homemade-products/
    location / {
        try_files $uri /index.php$is_args$args;
    }

    # Let php-fpm handle .php files
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi.conf;
        fastcgi_param HTTP_PROXY "";
        fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        fastcgi_read_timeout 300s;
        client_body_buffer_size 128k;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        http2_push_preload on;
    }
}

Guarda y cierra el archivo y luego verifica que Nginx no tenga ningú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 restart nginx

También puedes verificar el estado de Nginx con el siguiente comando:

systemctl status nginx

Deberías obtener la siguiente salida:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/nginx.service.d
           ??php-fpm.conf
   Active: active (running) since Tue 2021-02-02 00:40:04 EST; 19s ago
  Process: 76059 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 76057 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 76054 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 76060 (nginx)
    Tasks: 3 (limit: 12523)
   Memory: 5.5M
   CGroup: /system.slice/nginx.service
           ??76060 nginx: master process /usr/sbin/nginx
           ??76061 nginx: worker process
           ??76062 nginx: worker process

Feb 02 00:40:04 centos8 systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Feb 02 00:40:04 centos8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Feb 02 00:40:04 centos8 nginx[76057]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Feb 02 00:40:04 centos8 nginx[76057]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Feb 02 00:40:04 centos8 systemd[1]: Started The nginx HTTP and reverse proxy server.

Configurar SELinux y Firewall

Por defecto, SELinux está activado en CentOS 8. Así que tendrás que configurar el contexto de SELinux para Shopware. Puedes configurarlo con el siguiente comando:

setsebool httpd_can_network_connect on -P
chcon -R -u system_u -t httpd_sys_rw_content_t -r object_r /var/www/html/shopware

A continuación, permite los puertos 80 y 443 a través del firewalld con el siguiente comando:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

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

Accede a la interfaz web de Shopware

Ahora, abre tu navegador web y escribe la URL http://shopware.example.com.

Selecciona tu idioma y haz clic en el botón Siguiente. Asegúrate de que se cumplen todos los requisitos y haz clic en el botón Siguiente. Deberías ver la siguiente página:

Términos de la tienda

Acepta las CGC y haz clic en el botón Siguiente. Deberías ver la siguiente página:

Configurar la base de datos de Shopware

Proporciona tu base de datos, nombre de usuario y contraseña y haz clic en el botón Iniciar la instalación. Una vez completada la instalación, deberías ver la siguiente página:

Shopware 6 se ha instalado con éxito

Haz clic en la página Siguiente. Se te pedirá que proporciones el nombre de tu Tienda, la dirección de correo electrónico, la moneda, el país, el nombre de usuario del administrador, la contraseña y haz clic en el botón Siguiente. Serás redirigido al panel de control de Shopware:

Configurar el nombre de la tienda

Configuración de la moneda y del correo electrónico

Proporciona toda la información y haz clic en el botón Siguiente. Deberías ver la siguiente página:

Dashbaord Shopware

Instala los plugins de idioma que desees y haz clic en el botón Siguiente. Deberías ver la siguiente página:

Importación de datos

Instala los datos de demostración o sáltate esto y haz clic en el botón Siguiente. Deberías ver la siguiente página:

Configuración del correo electrónico

Haz clic en el botón Configurar después. Deberías ver la siguiente página:

Configuración de Paypal

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

Instalar plugins

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

Cuenta segura de shopware

Haz clic en el botón Omitir. Debes ver la siguiente página:

Instalación de Shopware con éxito

Haz clic en el botón Finalizar. Deberías ver la página de bienvenida de Shopware:

Bienvenido a Shopware 6

Asegura Shopware con Let’s Encrypt SSL

A continuación, tendrás que instalar la utilidad Certbot en tu sistema para descargar e instalar Let’s Encrypt SSL para el dominio de Let’s Chat.

Puedes instalar el cliente Certbot con el siguiente comando:

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

A continuación, obtén e instala un certificado SSL para tu dominio Let’s Chat con el siguiente comando:

certbot-auto --nginx -d shopware.example.com

El comando anterior instalará primero todas las dependencias necesarias en tu servidor. Una vez instalado, se te pedirá que proporciones una dirección de correo electrónico y que aceptes 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/conf.d/shopware.conf

A continuación, selecciona si quieres redirigir el tráfico HTTP a HTTPS, como se muestra a continuación:

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 continuar. Una vez finalizada la instalación, deberías ver el siguiente resultado:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/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 2021-04-2. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto 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

Ahora puedes acceder a Shopware de forma segura utilizando la URL https://shopware.example.com.

Conclusión

Enhorabuena! has instalado y configurado con éxito Shopware con Nginx y Let’s Encrypt SSL en CentOS 8. Ahora puedes alojar fácilmente tu propia tienda online con Shopware. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...