console

LAMP Server | Instalación con WSL2 en Windows 10 (2da Parte)

Video de Youtube
URL de Video remoto
Texto

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

Paso 5 Configuración del Virtual Host y el SSL

          Ahora que ya tenemos todos los requisitos previos a nuestra instalación de Drupal, que aprendimos en el artículo anterior Cómo Instalar LAMP usando WSL2 en Windows 10 (1era Parte), ha llegado el momento de comenzar los preparativos, para que podamos instalar en nuestro servidor local, cualquier tipo de web, en nuestro caso, desarrollada con Drupal 9, funcionando con un certificado SSL.

          Aunque en realidad, nuestro certificado será sólo para uso local, ya que no está autorizado, por ninguna de las entidades reales creadas con este propósito, nos permitirá realizar todo tipo de pruebas relacionadas con la seguridad como requisito, o por ejemplo, para el desarrollo de webs del tipo Progressive Web App (PWA), utilizando el módulo de Drupal, donde el certificado es obligatorio. 

         Existen varias herramientas y métodos con los que podríamos generar certificados SSL, una de las más conocidas es Certbot, que se puede instalar en Linux y que ofrece la posibilidad de generar certificados autofirmados, para utilizar en entornos locales, que es el tipo que vamos a emplear en esta ocasión. Pero en lugar de usarlo, he preferido utlizar Openssl, que ya viene instalado dentro de la distribución de Ubuntu que hemos seleccionado para este artículo, así que empecemos:

Cómo Instalar un Certificado SSL y activar HTTPS en Drupal 9

     1.- Ubicación de los certificados

          Como ya hemos dicho, el programa OpenSSL viene instalado en la distribución de Ubuntu 20.04, que es la que estamos utilizando. Para comprobarlo vamos a colocarnos en la carpeta donde se guardan los certificados de este programa y la utilizaremos como ubicación para los nuestros también. 

          Ejecutaremos los siguientes comandos, para ir hasta la carpeta y luego listar su contenido:

cd /etc/ssl
sudo ls

 

LAMP Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     2.- Generar los certificados

          Ahora que tenemos decidida la ubicación para nuestro certificado, y que ya hemos decidido el nombre que vamos a registrar, como dominio para nuestra web, lo siguiente que tendremos que hacer es ejecutar el siguiente comando sustituyendo drupal9.localhost, por el nombre o dominio con el que vamos a trabajar.

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/drupal9.localhost.key -out /etc/ssl/drupal9.localhost.crt

         Explicación: 

              Este código nos generará la clave privada drupal9.localhost.key, que se utiliza para generar el certificado drupal9.localhost.crt, con una duración de un año  -days 365, y guarda dichos certificados en este caso en la ubicación que le hemos especificado, o sea dentro de /etc/ssl/.

         Una vez ejecutado el código, se mostrarán en pantalla varias preguntas que tendremos que rellenar e ir haciendo clic en aceptar, por cada respuesta que hayamos introducido:

LAMP Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     3.- Permisos y descarga de Drupal

          Lo primero que tendremos que hacer en esta ocasión, es crear la carpeta donde se alojará nuestro Drupal 9, que instalaremos usando Composer, y que colocaremos dentro de la carpeta publica html del Apache, para ello ejecutaremos el siguiente comando:

sudo mkdir -p /var/www/html/drupal9.localhost

     A continuación, daremos los permisos necesarios a nuestro usuario de apache para que podamos realizar la instalación sin compliacaiones:

cd /var/www/html/
sudo chown -R www-data:www-data drupal9.localhost/

  Ya podremos empezar la descarga de nuestros archivos de instalación de Drupal 9 con Composer utilizando el siguiente comando y sustituyendo la última parte por el nombre de nuestra carpeta recién creada.

composer create-project drupal/recommended-project drupal9.localhost

     De inmediato debería comenzar la descarga de los archivos de instalación desde el repositorio de Drupal.

     4.- Configuración del Virtual Host

          Una vez terminada la descarga de los archivos de Drupal, tendremos que configurar el acceso para poder comenzar con la instalación usando el navegador, para ello, crearemos el archivo de configuración correspondiente.

sudo nano /etc/apache2/sites-available/drupal9.localhost.conf

     A continuación copiamos dentro el siguiente código:

<VirtualHost *:80>
                ServerName www.drupal9.localhost
                DocumentRoot /var/www/html/drupal9.localhost/web

                # Redirect http to https
                RedirectMatch 301 (.*) https://www.drupal9.localhost$1
        </VirtualHost>

        <VirtualHost _default_:443>

                # Server Info
                ServerName www.drupal9.localhost
                ServerAlias drupal9.localhost
                ServerAdmin admin@drupal9.localhost

                # Web root
                DocumentRoot /var/www/html/drupal9.localhost/web

                # Log configuration
                ErrorLog ${APACHE_LOG_DIR}/drupal9.localhost-error.log
                CustomLog ${APACHE_LOG_DIR}/drupal9.localhost-access.log combined

                #   Enable/Disable SSL for this virtual host.
                SSLEngine on

                # Self signed SSL Certificate file
                SSLCertificateFile      /etc/ssl/drupal9.localhost.crt
                SSLCertificateKeyFile /etc/ssl/drupal9.localhost.key

                <Directory "/var/www/html/drupal9.localhost/web">
                        Options FollowSymLinks
                        AllowOverride All
                        Require all granted
                </Directory>

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>

                BrowserMatch "MSIE [2-6]" \
                                nokeepalive ssl-unclean-shutdown \
                                downgrade-1.0 force-response-1.0
                # MSIE 7 and newer should be able to use keepalive
                BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

        </VirtualHost>

     Reemplace el nombre de dominio www.drupal9.localhost con el nombre de dominio de su sitio web Drupal.

     Guarda el archivo y cierra.

     Ahora comprueba si todo está correcto, ejecutando el siguiente comando:

apachectl configtest

    Si ves el mensaje "Syntax ok", entonces la configuración de Apache es correcta.

    Entonces podremos activar el Host Virtual de Drupal y reiniciar el servidor para que se ejecuten los cambios:

a2ensite drupal9.localhost
sudo service apache2 restart

LAMP Server | Instalación con WSL2 en Windows 10 (1era Parte)

Video de Youtube
URL de Video remoto
Texto

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

      Antes de trabajar en cualquier proyecto web, deberíamos contar con un entorno completo, que incluya todo lo necesario para que nuestra aplicación funcione correctamente, además de ofrecernos un lugar estable donde podamos realizar todo tipo de pruebas y procedimientos.

     Aunque ya hemos explicado en otro artículo todo lo que necesitas saber sobre Cómo instalar Drupal 9 usando Docker en Windows 10 Home, hoy te voy a contar cómo realizar la instalación completa de un servidor Linux que incluya, además, el Apache, Mysql y PHP, con la respectiva configuración del dominio para que puedas instalar Drupal en tu servidor local.

   Cómo Instalar LAMP usando WSL2 en Windows 10

      Paso 1 Instalación y configuración de WSL2 en Windows

          Para no repetirme, puedes leer todo el proceso de instalación y configuración del WSL2 para Windows 10, en el artículo Cómo instalar Drupal 9 usando Docker en Windows 10 Home (1era Parte), y una vez hayas realizado la instalación podrás continuar con el siguiente paso.

LAMP Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          Además, antes de continuar, te recomiendo instalar la nueva terminal de Windows 10, para que puedas realizar operaciones simultáneas usando diferentes pestañas, te cuento cómo hacerlo en este artículo Instalación y configuración de Terminal Windows

LAMP Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Ahora, antes de continuar, debe saber que puede omitir casi todos los pasos a continuación y simplemente hacer: sudo apt install lamp-server ^ phpmyadmin. Sin embargo, yo intenté hacerlo de esta forma y me dio varios errores, por lo que, en mi opinión recomiendo la opción "Larga", que además te dará control total sobre tu servidor y servicios instalados. 

      Paso 2 - crear un usuario No Root para la ejecución del código:

          El usuario root es el usuario administrativo en un entorno Linux que tiene privilegios muy amplios. Debido a su inmenso poder, no se recomienda usarlo de forma regular. 

          El siguiente paso es configurar una cuenta de usuario alternativa, con un alcance de influencia reducido para el trabajo diario. Y podremos usar el la opción SUDO, cuando necesitemos permisos especiales sin tener que cambiar de usuario.

          Con el siguiente código, voy a crear un usuario nuevo, que no será root, y que utilizaremos de aquí en adelante para el resto de la configuración.

          Como por defecto en la instalación de ubuntu hemos creado el usuario root, ejecutaremos el siguiente comando con el prefijo sudo, y una vez complementada la información del nuevo usuario, que si no quieres rellenar la info puedes presionar ENTER en cada pregunta, como he hecho para este ejemplo.

          Luego abriremos otra pestaña en la terminal de windows, si no la tienes instalada aprende cómo hacerlo en Instalación y configuración de Terminal Windows,  para no perder, de momento los accesos como root y luego continuaremos con el procedimiento:

adduser noroot_user

 

LAMP Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

          Una vez creado el nuevo usuario, abriremos la nueva pestaña en la terminal y ejecutaremos el siguiente código, que nos permitirá acceder con los datos de nuestro nuevo usuario:

su - noroot_user

 

LAMP Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Paso 3 - Otorgarle privilegios root a nuestro nuevo usuario:     

          Ahora, tenemos una nueva cuenta de usuario con privilegios de cuenta regulares. Sin embargo, es posible que a veces necesitemos realizar tareas administrativas. Para evitar tener que cerrar la sesión de nuestro usuario normal y volver a iniciarla como la cuenta root, podemos configurar lo que se conoce como "superusuario" o privilegios de root para nuestra cuenta normal. Esto permitirá a nuestro usuario normal ejecutar comandos con privilegios administrativos poniendo la palabra sudo antes de cada comando.

          Como todavía tenemos abierta la pestaña de la terminal, donde habíamos iniciado sesión como root, vamos a ejecutar desde allí el siguiente código para otorgar los nuevos privilegios a nuestro usuario noroot_user:

usermod -aG sudo noroot_user

          Una vez otorgados los permisos de root, tendremos que cerrar la otra pestaña, donde está el usuario noroot_user, para poder comenzar a utilizarlos con los permisos recién adquiridos.

LAMP Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Paso 4 - Instalación del Servidor Apache

         Para instalar apache, vamos a necesitar dos comando:

sudo apt install apache2
sudo service apache2 start

     Una vez instalado el servidor Apache, probemos que todo funciona, accediendo en el navegador a la url http://localhost. Deberíamos ver en pantalla la siguiente imagen:

 

LAMP Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Si todo es correcto, entonces podremos continuar y habilitaremos los módulos que vamos a necesitar, como el "Rewirte" o el "SSL"

sudo a2enmod rewrite
sudo a2enmod ssl

     Y a continuación, para que se efectúen los cambios en el servidor, necesitaremos reiniciarlo usando el comando:

sudo service apache2 restart

     Llegado a este punto, te recomendaría ajustar la configuración de Apache para que los permisos coincidan con su nombre de usuario. En otras palabras, cuando hagas una lista de archivos, esta configuración de nombre de usuario que ingrese en Apache será la misma que la del propietario de los archivos en su sistema de archivos Linux. De esa forma, Apache tendrá permisos para modificar los archivos y carpetas de tu sitio. Si no lo haces, es posible que elementos como Grav y WP no funcionen correctamente o no funcionen en absoluto. Así que dirígete a este archivo y haz el siguiente cambio:

sudo nano /etc/apache2/envvars
export APACHE_RUN_USER=your_user
export APACHE_RUN_GROUP=your_user

     Y a continuación, una vez hayas editado el archivo envvars, para que se efectúen los cambios en el servidor, necesitaremos reiniciarlo usando el comando:

sudo service apache2 restart

     Ahora podemos comprobar si ambos módulos han sido activados correctamente, ejecutando el siguiente comando:

apache2ctl -M | egrep 'ssl|rewrite'

     Entonces en nuestra consola, si todo está correcto, deberíamos ver el siguiente mensaje:

#Enabled
 rewrite_module (shared)
 ssl_module (shared

     Paso 5 - Instalación y configuración del Servidor de Base de datos MariaDB

          Lo primero que necesitaremos es instalar el servidor, ejecutando el siguiente comando:

sudo apt install mariadb-server mariadb-client

     Importante: No se le pedirá que cree una contraseña, pero en una instalación local está bien. Y técnicamente no es inseguro de todos modos, ya que significa que solo aquellos con privilegios de sudo pueden acceder al servidor MySQL.

     Ahora necesitamos iniciar el servidor MySQL ejecutando el siguiente comando:

sudo service mysql start

     Paso 6 - Instalación y configuración PHP

          En el caso de PHP, además de instalar la versión que vamos a utilizar, tendremos que realizar algunas modificaciones, como la activación de varias librerías, y otras modificaciones recomendadas para trabajar con Drupal, como el tiempo de ejecución o el máximo de tamaño de subida de archivos, pero vamos por partes, primero instalaremos php y activaremos algunas librerías necesarias:

sudo apt install php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-dev php7.4-imap php7.4-mbstring php7.4-opcache php7.4-soap php7.4-zip php7.4-intl -y

          Es posible que también deba instalar módulos según los requisitos de su aplicación. Utilice el siguiente comando para buscar módulos PHP 7 disponibles en el repositorio de paquetes.

sudo apt-cache search php7*

          En nuestro caso, vamos a instalar los siguientes "módulos" de php:

sudo apt install php php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd  php-mbstring php-curl php-xml php-pear php-bcmath

     Por últimos, vamos a realizar algunos de los cambios de configuración del PHP.ini que nos ayudarán y evitarán posibles errores una vez instalemos nuestro Drupal. Para ello, abriremos el archivo de configuración de php "php.ini" y realizaremos las modificaciones correspondientes:

sudo nano /etc/php/7.4/apache2/php.ini
  • max_execution_time = 600
  • post_max_size = 64M
  • short_open_tag
       Default Value: On
  • memory_limit = -1
  • upload_max_filesize = 100M

     Una vez actualizados los cambios en el archivo de configuración de apache, volveremos a reiniciar nuestro servidor para que se guarden dichos cambios, para ello ejecutaremos el comando:

sudo service apache2 restart

     Ahora que PHP está instalado, para probar si está funcionando, cree un archivo de prueba llamado phpinfo.php en el directorio raíz predeterminado de Apache2…. (/ var / www / html /)

sudo nano /var/www/html/phpinfo.php

     Luego, escriba el contenido a continuación y guarde el archivo.

<?php phpinfo( ); ?>

     A continuación, abra su navegador y busque el nombre de host o la dirección IP del servidor seguido de phpinfo.php

http://localhost/phpinfo.php

Debería ver la página de prueba predeterminada de PHP, como esta:

LAMP Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Una vez comprobado que todo está correcto, tendremos que borrar este archivo ya que es información que implica riesgos de seguridad, para ello ejecutaremos el siguiente comando:

rm -f /var/www/html/info.php

      Paso 7 - Instalación Interfaz Usuario para administrar MySql

          Aunque según los requerimientos de tu aplicación, puede que no te haga falta un entorno gráfico, para la administración de tus bases de datos y tablas, porque lo realizarás usando comandos de tu consola, te recomiendo instalar esta pequeña aplicación que te servirá de ayuda:

sudo apt install adminer

     Casi hemos terminado. Hay un problema para todos aquellos que cambiaron la configuración de usuario / grupo de Apache anterior. El administrador accede y escribe en su carpeta de sesiones de PHP, por lo que debe otorgarle a su usuario (el usuario que configuró en Apache) los permisos de la carpeta correspondiente a esa carpeta. Puedes realizar el cambio ejecutando el siguiente comando:

cd /var/lib/php
sudo chown -R your_user:your_user sessions

     Ahora sí, lo último que nos faltará es activar Adminer, reiniciar Apache nuevamente, por supuesto, y luego verlo. Comience con estos dos comandos:

sudo a2enconf adminer.conf
sudo service apache2 restart

     Para comprobar el Adminer funciona correctamente escribe en el navegador la url http://localhost/adminer/

     ¡Pero necesitamos un nombre de usuario para iniciar sesión ahora! Así que sigamos adelante y hagamos eso. Recuerde que todo esto es solo para desarrolladores locales, por lo que las preocupaciones de seguridad habituales relacionadas con la creación de un superusuario no se aplican realmente. Nunca hagas esto en un sitio en vivo. Siempre.

     Así que inicie MySQL así:

sudo mysql

    Luego ingrese los siguientes comandos, Primero creamos el usuario que funcionará como root, luego le daremos los permisos para que pueda hacer cualquier tarea con las bases de datos, a continuación reseteamos la tabla de permisos y por último, saldremos de servidor de base de datos:

CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON * . * TO 'user_name'@'localhost';
flush privileges;
exit

     Ahora que haz creado un superusuario, ya podrás iniciar sesión en Adminer y comenzar a trabajar con tus bases de datos y tablas.

* Usuario con permisos específicos

     Aunque tenemos un Super usuario con el cuál podremos realizar, todas las operaciones en nuestro servidor de base de datos, es muy recomendable limitar los accesos a la base de datos específica en cada proyecto. Por esta razón, a continuación vamos a crear un usuario y una base de datos específica para nuestro proyecto.

     Primero nos vamos a loguear como Super usuario y una vez dentro, ejecutaremos cada una de las líneas siguientes, en las que primero crearemos la base de datos, luego el usuario con sus datos de acceso, a continuación le daremos todos los permisos, específicos para la tabla en concreto y por último el reseteo de la tabla de permisos:

sudo mysql;
CREATE DATABASE drupaldb;
CREATE USER drupaluser@localhost IDENTIFIED BY 'drupaluser@';
GRANT ALL PRIVILEGES ON drupaldb.* to drupaluser@localhost identified by 'drupaluser@';
FLUSH PRIVILEGES;
EXIT

     Si queremos ver el listado de las bases de datos que tenemos creadas al momento, entraremos a MySql y luego ejecutamos el siguiente comando:

SHOW DATABASES;

     Para borrar una base de datos (Cuidado porque se perderá toda la información), ejecutaremos:

DROP DATABASE mi_bd_para_borrar;

     Para ver el listado de usuarios creados, ejecutaremos el siguiente comando:

SELECT User FROM mysql.user;

     Para borrar un usuario específico:

DROP USER 'usuario'@'localhost';

     Paso 8 - Configuración del Virtual Host y el SSL

          Para poder trabajar con certificados SSL, es necesario prestar atención en varios detalles previos, por eso, he preferido hacerlo en otro artículo con su video propio, que podrás leer y ver haciendo clic aqui  Ver siguiente artículo

Cannot communicate with server: Post http://localhost/v2/apps: dial unix /run/snapd.socket: connect: no such file or directory

     A los que estamos trabajando con WSL2 en Windows 10, nos puede pasar este error de conexión entre nuestra consola y el servidor para descargar las aplicaciones. En mi caso me sucedió al intentar instalar cerbot.

    Al parecer Ubuntu 20.04 LTS reemplazó el software de ubuntu con snapcraft por completo. Entonces, es obvio que el snap se está convirtiendo en el 'predeterminado' de la distribución.

     El problema es que snap no parece funcionar actualmente en wsl2 debido a que depende de systemd. Si lo entiendo correctamente, el servicio snapd debería estar ejecutándose en segundo plano para que funcione, que snapd ya viene preinstalado, sin embargo snapd no puede iniciarse debido a que WSL2 no tiene systemd.

error: cannot communicate with server: Post http://localhost/v2/snaps/hello-world: dial unix /run/snapd.socket: connect: no such file or directory

    Por eso, si intentáramos ejecutar el comandosudo service snapd start, nos saldría en pantalla algo parecido a esto:

snapd: unrecognized service