entornos https://drupaladicto.com/ es Migración Drupal 7 | Configuración de entornos https://drupaladicto.com/curso/migracion-drupal-7/migracion-drupal-7-configuracion-de-entornos-0 <span class="field field--name-title field--type-string field--label-hidden">Migración Drupal 7 | Configuración de entornos</span> <div class="field field--name-field-contenidos-cap-gratis field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><h2>   Configuración de entornos locales para migración</h2> <p>     Actualmente existen innumerables herramientas, que facilitan la instalación de entornos de desarrollo locales; como cada vez ganan más terreno, soluciones basadas en contenedores virtuales de Docker, para nuestro  ejercicio, hemos decidido utilizar Lando, debido a lo fácil y sencillo que resulta poner en marcha cualquier proyecto.</p> <p>     De esta forma, podremos configurar, rápidamente, todos los requermientos necesarios, para cada uno de los Drupales, con los que vamos a trabajar de aquí en adelante.</p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--image-only paragraph--view-mode--default" id="imgly-1324"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-10/lando-oficial.png?itok=x5WLRVWk" class="img-fluid" alt="Lando Drupal 9 | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="" style="" > </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><p>   Si todavía no haz trabajado con Lando, <a href="/curso/entornos-locales/lando-instalacion-en-wsl2-con-windows-10-o-superiores" target="_blank">HAZ CLIC AQUÍ</a></p> <h2>   Cómo instalar ambos entornos para la migración.</h2> <p>     Para que podamos acceder a las dos instancias de Drupal, que utilizaremos para realizar la migración, será necesario generar un archivo de Lando, por cada uno de los proyectos y a continuación, realizar las modificaciones específicas para cada uno de los casos.</p> <h2>   Pasos previos a la instalación del Drupal 7 en local.</h2> <p>     Al tratarse de una migración desde un proyecto Drupal 7, asumimos que vas a descargarlo desde tu servidor de producción, para instalarlo en tu entorno local, así que lo primero que deberás verificar son los detalles relacionados con la versión de PHP, Mysql y Memoria, que econtrarás en el apartado de "/informes", y que deberás ajustar en tu archivo de configuración de lando, para que todo funcione tal y como se espera.</p> <p>     Antes de comenzar con el resto de procesos relacionados con la migración, asegúrate de que todas las páginas, usuarios, taxonomías, imágenes y otros elementos, se comportan y se muestran sin ninguna alteración.</p> <p>     Recuerda que si vas a trabajar con un Drupal que ya está en funcionamiento, deberías comprobar si tienes los siguientes archivos y/o carpetas:</p> <ul><li>Carpeta <strong>files</strong>, con imágenes, archivos de cache, etc. (Ubicación: sites/default/files)</li> <li>Carpeta <strong>libraries</strong> (Si haz descargado el módulo)</li> <li>Carpeta <strong>modules</strong> (Ubicación: sites/all/modules)</li> <li>Carpeta <strong>themes</strong> (Ubicación: sites/all/themes)</li> <li>Archivo <strong>settings.php</strong> (Ubicación: sites/default/settings.php)</li> </ul><p>     Para este ejemplo, hemos descargado los archivos de Drupal 7, desde la <a href="https://www.drupal.org/project/drupal/releases/7.0">Web Oficial de Drupal</a>, es por esta razón que, en la siguiente imagen, ves como se repiten las carpetas <strong>modules</strong> y <strong>themes</strong>, ya que se han ido recolocando, preparando la estructura, de acuerdo con el estandar que se empleó a partir de Drupal 8.</p> <p> </p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--image-only paragraph--view-mode--default" id="imgly-1326"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-10/drupal7-oficial.png?itok=OXU-HUaS" class="img-fluid" alt="Drupal 7 | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="" style="" > </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><p> </p> <pre class="text-align-center"> Es probable, que en tu proyecto de Drupal 7, solo tengas las carpetas que aparecen dentro de "<strong>sites/all".</strong></pre> <p> </p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--image-only paragraph--view-mode--default" id="imgly-1328"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-10/carpetas-drupal7.png?itok=NiDCKf8A" class="img-fluid" alt="Drupal 7 | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="" style="" > </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><p> Una vez configurado el archivo de lando, deberías acceder al sitio de Drupal en local para continuar con el proceso de migración. <strong>(Recuerda modificar el puerto para evitar conflictos entre ambas instalaciones)</strong></p> <h2>   Pasos previos a la instalación del Drupal Destino (8, 9 o superior)</h2> <p>     En el caso del Drupal Destino (8, 9 o superior), lo recomendable es que instales el proyecto utilizando el gestor de paquetes Composer, para asegurarte de que la estructura te permitirá realizar acciones de mantenimiento o actualizaciones, siguiendo los parámetros necesarios y evitando posibles fallos futuros.</p> <p>     Una vez configurado el archivo de lando, deberías acceder al sitio de Drupal en local para continuar con el proceso de migración. <strong>(Recuerda modificar el puerto para evitar conflictos entre ambas instalaciones)</strong></p> <h2><strong>   </strong>Siguientes pasos</h2> <p>     En el siguiente capítulo, instalaremos el proyecto de Drupal, basándonos en la estructura base que hemos descargado desde <a href="https://www.drupal.org/project/drupal/releases/7.0">www.drupal.org</a>, además, para que el ejemplo sea lo más parecido a la realidad, añadiremos un módulo custom, equivalente a los que te encontrarás en tu proyecto y generaremos algunos contenidos, utilizando el módulo devel.</p> <p>     Por último, descargaremos algunos módulos que sufrieron cambios importantes en versiones posteriores a Drupal 7, como Views, que se integró en el Core de Drupal o el módulo FieldCollection, que fue sustituido por Paragraphs, así podrás apreciar mejor, cómo analizar tu estrategia de migración, para el proyecto que migrarás a la versión que elijas.</p> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Vie, 06/10/2023 - 10:22</span> Fri, 06 Oct 2023 08:22:32 +0000 webmaster 470 at https://drupaladicto.com Migración Drupal 7 | Configuración de entornos https://drupaladicto.com/curso/migracion-drupal-7/migracion-drupal-7-configuracion-de-entornos <span class="field field--name-title field--type-string field--label-hidden">Migración Drupal 7 | Configuración de entornos</span> <div class="field field--name-field-contenido-premium field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1308" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><h2>   Configuración de entornos locales para migración</h2> <p>     Actualmente existen innumerables herramientas, que facilitan la instalación de entornos de desarrollo locales; como cada vez ganan más terreno, soluciones basadas en contenedores virtuales de Docker, para nuestro  ejercicio, hemos decidido utilizar Lando, debido a lo fácil y sencillo que resulta poner en marcha cualquier proyecto.</p> <p>     De esta forma, podremos configurar, rápidamente, todos los requermientos necesarios, para cada uno de los Drupales, con los que vamos a trabajar de aquí en adelante.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 49.58%;" data-ratio="49.58" data-b-token="b-52b91fa79e4" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img class="img-fluid media__element b-lazy b-filter" data-entity-uuid="d4f7f0ad-c1b8-4d3d-95b7-f6cf81109b47" alt="lando | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/lando%5B1%5D.png?itok=tyV8WIia" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1069" height="530" typeof="foaf:Image" /></div></div> <p>     Si todavía no haz trabajado con Lando, <a href="/curso/entornos-locales/lando-instalacion-en-wsl2-con-windows-10-o-superiores" target="_blank">HAZ CLIC AQUÍ</a></p> <h2>   Cómo instalar ambos entornos para la migración.</h2> <p>     Para que podamos acceder a las dos instancias de Drupal, que utilizaremos para realizar la migración, será necesario generar un archivo de Lando, por cada uno de los proyectos y a continuación, realizar las modificaciones específicas para cada uno de los casos.</p> <h2>   Pasos previos a la instalación del Drupal 7 en local.</h2> <p>     Al tratarse de una migración desde un proyecto Drupal 7, asumimos que vas a descargarlo desde tu servidor de producción, para instalarlo en tu entorno local, así que lo primero que deberás verificar son los detalles relacionados con la versión de PHP, Mysql y Memoria, que econtrarás en el apartado de "/informes", y que deberás ajustar en tu archivo de configuración de lando, para que todo funcione tal y como se espera.</p> <p>     Antes de comenzar con el resto de procesos relacionados con la migración, asegúrate de que todas las páginas, usuarios, taxonomías, imágenes y otros elementos, se comportan y se muestran sin ninguna alteración.</p> <p>     Recuerda que si vas a trabajar con un Drupal que ya está en funcionamiento, deberías comprobar si tienes los siguientes archivos y/o carpetas:</p> <ul><li>Carpeta <strong>files</strong>, con imágenes, archivos de cache, etc. (Ubicación: sites/default/files)</li> <li>Carpeta <strong>libraries</strong> (Si haz descargado el módulo)</li> <li>Carpeta <strong>modules</strong> (Ubicación: sites/all/modules)</li> <li>Carpeta <strong>themes</strong> (Ubicación: sites/all/themes)</li> <li>Archivo <strong>settings.php</strong> (Ubicación: sites/default/settings.php)</li> </ul><p>     Para este ejemplo, hemos descargado los archivos de Drupal 7, desde la <a href="https://www.drupal.org/project/drupal/releases/7.0">Web Oficial de Drupal</a>, es por esta razón que, en la siguiente imagen, ves como se repiten las carpetas <strong>modules</strong> y <strong>themes</strong>, ya que se han ido recolocando, preparando la estructura, de acuerdo con el estandar que se empleó a partir de Drupal 8.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 62.96%;" data-ratio="62.96" data-b-token="b-36ceeb651fa" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img class="img-fluid media__element b-lazy b-filter" data-entity-uuid="75ce262d-e4dd-42d3-a9d0-143c729816a1" alt="Migracion Drupal 7 | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/drupal7-oficial.png?itok=lu6EbsVR" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1242" height="782" typeof="foaf:Image" /></div></div> <pre> Es probable, que en tu proyecto de Drupal 7, solo tengas las carpetas que aparecen dentro de "<strong>sites/all".</strong></pre> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 49.6%;" data-ratio="49.6" data-b-token="b-0d890ac232e" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img class="img-fluid media__element b-lazy b-filter" data-entity-uuid="3f08d625-2937-44b3-ac5b-1e27d1c5d02b" alt="Migracion Drupal 7 | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/carpetas-drupal7.png?itok=iwrnU9O_" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1010" height="501" typeof="foaf:Image" /></div></div> <p> </p> <p>   Una vez configurado el archivo de lando, deberías acceder al sitio de Drupal en local para continuar con el proceso de migración. <strong>(Recuerda modificar el puerto para evitar conflictos entre ambas instalaciones)</strong></p> <h2>   Pasos previos a la instalación del Drupal Destino (8, 9 o superior)</h2> <p>     En el caso del Drupal Destino (8, 9 o superior), lo recomendable es que instales el proyecto utilizando el gestor de paquetes Composer, para asegurarte de que la estructura te permitirá realizar acciones de mantenimiento o actualizaciones, siguiendo los parámetros necesarios y evitando posibles fallos futuros.</p> <p>     Una vez configurado el archivo de lando, deberías acceder al sitio de Drupal en local para continuar con el proceso de migración. <strong>(Recuerda modificar el puerto para evitar conflictos entre ambas instalaciones)</strong></p> <h2><strong>   </strong>Siguientes pasos</h2> <p>     En el siguiente capítulo, instalaremos el proyecto de Drupal, basándonos en la estructura base que hemos descargado desde <a href="https://www.drupal.org/project/drupal/releases/7.0">www.drupal.org</a>, además, para que el ejemplo sea lo más parecido a la realidad, añadiremos un módulo custom, equivalente a los que te encontrarás en tu proyecto y generaremos algunos contenidos, utilizando el módulo devel.</p> <p>     Por último, descargaremos algunos módulos que sufrieron cambios importantes en versiones posteriores a Drupal 7, como Views, que se integró en el Core de Drupal o el módulo FieldCollection, que fue sustituido por Paragraphs, así podrás apreciar mejor, cómo analizar tu estrategia de migración, para el proyecto que migrarás a la versión que elijas.</p> </div> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Jue, 28/09/2023 - 14:52</span> Thu, 28 Sep 2023 12:52:15 +0000 webmaster 463 at https://drupaladicto.com Nginx para Drupal | Archivo de configuración para el dominio. https://drupaladicto.com/snippet/nginx-para-drupal-archivo-de-configuracion-para-el-dominio <span class="field field--name-title field--type-string field--label-hidden">Nginx para Drupal | Archivo de configuración para el dominio.</span> <div class="clearfix text-formatted field field--name-field-snippet-descripcion field--type-text-long field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>Si estás instalando Drupal, en un servidor VPS con Nginx, este es el archivo completo que deberías utilizar, para Drupal 10</p> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 11/09/2023 - 13:14</span> <div class="clearfix text-formatted field field--name-field-instrucciones field--type-text-long field--label-above"> <div class="field__label">Instrucciones</div> <div class="field__item"><ul><li>Una vez configurado tu servidor Nginx, deberás generar el archivo dentro de /etc/nginx/sites-available/MIDOMINIO.COM</li> <li>También los archivos access.log y error.log en la ubicación correspondiente.</li> <li>Este archivo está sacado desde la <a href="https://www.nginx.com/resources/wiki/start/topics/recipes/drupal/">Página Oficial de Nginx</a>  y modificado, para que esté actualizado con Drupal 10.</li> </ul></div> </div> <div class="clearfix text-formatted field field--name-field-codigo field--type-text-long field--label-hidden field__item"><pre> server {     server_name  lnd4all.com  www.lnd4all.com;     root /var/www/lnd4all/web; ## &lt;-- Your only path $     access_log /srv/www/lnd4all.com/logs/access.log;     error_log /srv/www/lnd4all.com/logs/error.log;     location = /favicon.ico {         log_not_found off;         access_log off;     }     location = /robots.txt {         allow all;         log_not_found off;         access_log off;     }     # Very rarely should these ever be accessed outside of your lan     location ~* \.(txt|log)$ {         allow 192.168.0.0/16;         deny all;     }     location ~ \..*/.*\.php$ {         return 403;     }     location ~ ^/sites/.*/private/ {         return 403;     }     # Block access to "hidden" files and directories whose names begin with a     # period. This includes directories used by version control systems such     # as Subversion or Git to store control files.     location ~ (^|/)\. {         return 403;     }     location / {         # try_files $uri @rewrite; # For Drupal &lt;= 6         try_files $uri /index.php?$query_string; # For Drupal &gt;= 7     }     location @rewrite {         rewrite ^/(.*)$ /index.php?q=$1;     }     # In Drupal 8, we must also match new paths where the '.php' appears in the middle,     # such as update.php/selection. The rule we use is strict, and only allows this pattern     # with the update.php front controller.  This allows legacy path aliases in the form of     # blog/index.php/legacy-path to continue to route to Drupal nodes. If you do not have     # any paths like that, then you might prefer to use a laxer rule, such as:     #   location ~ \.php(/|$) {     # The laxer rule will continue to work if Drupal uses this new URL pattern with front     # controllers other than update.php in a future release.     location ~ '\.php$|^/update.php' {         fastcgi_split_path_info ^(.+?\.php)(|/.*)$;         #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini         include fastcgi_params;         include snippets/fastcgi-php.conf;         fastcgi_param SCRIPT_FILENAME $request_filename;         fastcgi_intercept_errors on;         fastcgi_pass unix:/run/php/php8.1-fpm.sock;     } #SI TE FALLAN LOS ESTILOS AL PASAR DRUPAL A PRODUCCIÓN BORRA LAS LINEAS QUE ESTÁN ENTRE ESTA Y     # Fighting with Styles? This little gem is amazing.     # location ~ ^/sites/.*/files/imagecache/ { # For Drupal &lt;= 6     location ~ ^/sites/.*/files/styles/ { # For Drpal &gt;= 7         try_files $uri @rewrite;     }     location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {         expires max;         log_not_found off;    } #HASTA ESTA LINEA, VIGILA NO CARGARTE LA LLAVE DE CIERRE QUE ESTA DEBAJO. }</pre> </div> <div class="clearfix text-formatted field field--name-field-notas field--type-text-long field--label-above"> <div class="field__label">Notas</div> <div class="field__item"><p>Aunque en Local funcionó sin nigún fallo, cuando lo desplegué a Producción y actualicé a la versión más reciente de Drupal 10 y Drush 12, las líneas se rompieron todos los estilos, hasta que, investigando, encontré que el error era producido por las líneas que he comentado.</p> <p>El archivo completo funcionaba sin problemas, antes de la última actualización de Drupal 10 y Drush.</p> </div> </div> <div class="field field--name-field-snippet-paginador field--type-image field--label-above"> <div class="field__label">Paginador</div> <div class="field__item"> <img src="/sites/default/files/default_images/snippet-pager.png" width="100" height="100" alt="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> <div class="field field--name-field-categoria-snippet field--type-entity-reference field--label-above"> <div class="field__label">Categoría</div> <div class="field__items"> <div class="field__item"><a href="/categoria/server" hreflang="es">server</a></div> <div class="field__item"><a href="/categoria/dominio" hreflang="es">dominio</a></div> <div class="field__item"><a href="/categoria/configuracion" hreflang="es">configuración</a></div> <div class="field__item"><a href="/categoria/configuraciones" hreflang="es">configuraciones</a></div> <div class="field__item"><a href="/categoria/entorno" hreflang="es">entorno</a></div> <div class="field__item"><a href="/categoria/entornos" hreflang="es">entornos</a></div> <div class="field__item"><a href="/categoria/nginx" hreflang="es">nginx</a></div> </div> </div> <div class="field field--name-field-portada-snippet field--type-entity-reference field--label-above"> <div class="field__label">Portada</div> <div class="field__item"><article class="media media--type-imagen media--view-mode-default"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img src="/sites/default/files/styles/max_325x325/public/imagenes/portada-snippet-grande.png?itok=JZyTAbRq" width="325" height="176" alt="Snippet | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid image-style-max-325x325" /> </div> </div> </article> </div> </div> Mon, 11 Sep 2023 11:14:51 +0000 webmaster 457 at https://drupaladicto.com Drupal con Docker | Configuración entorno local https://drupaladicto.com/curso/drupal-con-symfony/drupal-con-docker-configuracion-entorno-local <span class="field field--name-title field--type-string field--label-hidden">Drupal con Docker | Configuración entorno local</span> <div class="field field--name-field-contenidos-cap-gratis field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <style>#video-only-1303 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-1303 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-1303 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-1303"> <section id="video-only-1303" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-08/portada-drupal-symfony.png?itok=VjHrzo7E" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-775-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-775-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-775-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/3Y_IHAQit2Y&amp;max_width=0&amp;max_height=0&amp;hash=tAQFOSq2PK1yo2jv9nhsK1K0cgCqIq-ov587ujQAovk" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-775-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1274" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p>Si haz decidido dedicarte profesionalmente al desarrollo de aplicaciones web, lo ideal es que comiences a experimentar con las herramientas y opciones más actuales que existen en el mercado. Una de mis recomendaciones es el uso de contenedores Docker, que nos permitirá configurar, replicar y/o compartir, entornos de trabajo, evitando los históricos fallos de versión del lenguaje, o del servidor con el que estemos trabajando en nuestros proyectos.</p> <p>En el caso de Drupal, no basta con añadir un archivo Dockerfile, para contar con todos los requerimientos necesarios, pero ya existen varias alternativas disponibles, facilitándonos esa parte del proceso. Una de ellas es la conocida como <a href="https://github.com/wodby/docker4drupal">Docker4Drupal</a>, cuyo mantenimiento continuo y permanente, nos permite realizar las instalaciones de Drupal, en cada nueva versión publicada.</p> <p>Docker4Drupal, tiene múltiples funcionalidades, que podremos activar, personalizar y utilizar, dependiendo de las necesidades del proyecto, como son el administrador de base de datos <strong>Adminer</strong>, <strong>Xdebug</strong>, servidor para correos locales <strong>Mailhog</strong>, servidor de base de datos <strong>Postgres, </strong>servidor <strong>Apache Solr</strong>, entre otros.</p> <p>Además de utilizar las variables de entorno, que nos pueden servir para realizar comprobaciones sobre el comportamiento de nuestras aplicaciones, sin la necesidad de realizar despliegues en otros entornos adicionales a nuestro local.</p> <p>Aunque no profundizaremos en todas las opciones y configuraciones disponibles con Docker4Drupal, te animo a que visites su página oficial <a href="https://github.com/wodby/docker4drupal">https://github.com/wodby/docker4drupal </a>y eches un vistazo a su documentación, para que conozcas un poco más acerca de todo lo que tiene para ofrecernos.</p> </div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--image-only paragraph--view-mode--default" id="imgly-1278"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-08/22.png?itok=TFqB7BF1" class="img-fluid" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="" style="" > </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1279" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><h2>   Cómo instalar un entorno local con Docker4Drupal</h2> <h3>     Requisitos:</h3> <p>          - Entorno Linux: Yo he utilizado el subsistema WSL2, con Ubuntu 2204, dentro de una máquina Windows 11. <a class="btn btn-lite" href="https://drupaladicto.com/curso/entornos-locales/lamp-server-instalacion-con-wsl2-en-windows-10-1era-parte" target="_blank">HAZ CLIC AQUI</a></p> <p>          - Docker Desktop: Para las instrucciones desde su página oficial. <a class="btn btn-lite" href="https://www.docker.com/products/docker-desktop/" target="_blank">HAZ CLIC AQUI</a></p> <p>     Para este curso, utilizaremos Docker4Drupal, dentro de un entorno Linux (Ubuntu 2204), con WSL2 y Windows 11, de esta manera no tendremos que configurar máquinas virtuales adicionales, que podrían consumir muchos más recursos de los necesarios en nuestra máquina. Aunque si lo deseas, también puedes aplicar los mismos pasos en la distribución de Linux que prefieras.</p> <p>     Si quieres reproducir exactamente los ejercicios que vamos a detallar en este curso, sólo necesitarás descargar y configurar DockerDesktop y WSL2 en tu ordenador y a continuación, abrir la consola para continuar con el resto de la instalación que verás en el video.</p> </div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--image-only paragraph--view-mode--default" id="imgly-1280"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-08/docker-desktop.png?itok=oT2ZymRj" class="img-fluid" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="" style="" > </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1281" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><h3>   Descarga y configuración del Docker4Drupal</h3> <p>      Ahora que ya tienes configurado el entorno Linux donde vas a trabajar, abriremos nuestra consola y nos colocaremos en la ubicación donde instalaremos nuestro Drupal 10, a continuación, abriremos la url del respositorio de Docker4Drupal y lo clonaremos, para comenzar con la descarga de los archivos que vamos a necesitar.</p> <p>     Si quieres, puedes aprovechar el proceso de clonación para configurar el nombre de tu carpeta, al mismo tiempo que realiza la descarga, para ello, tendrás que añadir una línea como la siguiente:</p> <pre> git clone https://github.com/wodby/docker4drupal.git/ drupal_10</pre> <p>     Esto creará la carpeta con el nombre drupal_10 en la ubicación que hayas seleccionado y dentro de ella colocará todos los archivos descargados desde el repositorio, donde podremos continuar con otros cambios necesarios, antes de descargar el esqueleto o estructura principal de nuestro proyecto de Drupal.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 23.24%;" data-ratio="23.24" data-b-token="b-d6e47d5792b" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img class="img-fluid media__element b-lazy b-filter" data-entity-uuid="19aaafda-7a76-49bc-aba8-93dc3115378b" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/clonar-proyecto.jpg?itok=y654Zp3y" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="921" height="214" typeof="foaf:Image" /></div></div> </div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1283" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><h3>   Configuración inicial del servidor</h3> <p>     Una vez terminada la descarga de los archivos para nuestro servidor, el siguiente paso será la personalización de algunas opciones, para que podamos descargar, arrancar y acceder a nuestro proyecto de Drupal, que descargaremos, una vez terminados estos primeros cambios.</p> <p>     Así que, con nuestro IDE favorito, abriremos la carpeta donde hemos descargado los archivos del repositorio, para comenzar con las primeras configuraciones.</p> <h4>   Paso 1 - Eliminar <strong>docker-compose.override.yml</strong></h4> <p>     Eliminaremos el archivo <strong>docker-compose.override.yml</strong>, para que podamos controlar el comportamiento del servidor a través de la configuración en la variable de entorno.</p> <h4>   Paso 2 - Ajustes en la variable de entorno.</h4> <p>     Por el momento, el archivo que necesitamos conocer y ajustar es el responsable de nuestro entorno de trabajo, conocido como <strong>.env</strong>, donde podremos personalizar los siguientes detalles:</p> <h3>    Nombre del proyecto, url y puerto de conexión</h3> <ul><li>Nombre del proyecto: PROJECT_NAME=<strong>my_drupal10_project</strong></li> <li>Url del proyecto: PROJECT_BASE_URL=<strong>drupal.docker.localhost </strong></li> <li>El puerto de conexión: PROJECT_PORT=<strong>8000</strong></li> </ul><p>    Cuando hayamos realizado el cambio en la url del proyecto y el puerto, podremos acceder a nuestro Drupal, una vez descargado, escribiendo en el navegador </p> <p><strong>http://drupal.docker.localhost:8000</strong></p> <h3>   Nombre de usuario, base de datos y contraseña</h3> <ul><li>Nombre de la base de datos:<strong> </strong>DB_NAME=<strong>drupal</strong><strong> </strong></li> <li>Nombre del usuario para la base de datos: DB_USER=<strong>drupal</strong><strong> </strong></li> <li>Contraseña del usuario de base de datos:<strong> </strong>DB_PASSWORD=<strong>drupal</strong><strong>    </strong></li> </ul></div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1286" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><h2>   Arrancando nuestros contenedores Docker</h2> <p>     Un servidor basado Docker que ejecuta varios contenedores, conectados entre sí, que permiten ejecutar nuestro código sin la necesidad de instalar ningún archivo extra en nuestra máquina, esto es lo que se conoce como virtualización del entorno.</p> <p>     En otra palabras, en lugar de arrancar un servidor tipo XAMPP, con todo incluido y administrable desde un panel de control, como hacíamos años atrás, con Docker, tendremos varios servicios independientes, que podremos modificar y/o ajustar, según nuestras necesidades. </p> <p>     Si exploras un poco más, dentro del archivo .env, que modificamos hace un momento, podrás comprobar que tienes varias opciones de versión y configuración, que podrás activar o desacticar, añadiendo o quitando, el símbolo de almohadilla (#), que acompaña cada una de las definiciones:</p> <pre> ### --- MARIADB ---- MARIADB_TAG=10.11-3.26.3 #MARIADB_TAG=11.0-3.26.3 #MARIADB_TAG=10.10-3.26.3 #MARIADB_TAG=10.9-3.26.3 #MARIADB_TAG=10.6-3.26.3 #MARIADB_TAG=10.5-3.26.3 #MARIADB_TAG=10.4-3.26.3 ### --- VANILLA DRUPAL ---- DRUPAL_TAG=10-4.58.1 #DRUPAL_TAG=9-4.58.1 #DRUPAL_TAG=7-4.58.1 ### --- PHP ---- # Linux (uid 1000 gid 1000) PHP_TAG=8.2-dev-4.47.1 #PHP_TAG=8.1-dev-4.47.1 #PHP_TAG=8.0-dev-4.47.1</pre> </div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><p>Para arrancar nuestros contenedores, tenemos dos opciones:</p> <pre> docker compose up -d</pre> <p>O también puedes utilizar el paquete Make, que viene por defecto instalado con la distribución de Ubuntu, en este caso el comando para arrancar los contenedores sería:</p> <pre> make up</pre> <p>Una vez ejecutado cualquiera de los anteriores comandos, si todo va bien, deberías ver en tu consola, algo parecido a la siguiente imagen:</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 29.06%;" data-ratio="29.06" data-b-token="b-f75ffe52deb" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img class="img-fluid media__element b-lazy b-filter" data-entity-uuid="871233d4-e8e0-465e-be4e-36fafb095931" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/contenedores.png?itok=t0NoLhZt" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="912" height="265" typeof="foaf:Image" /></div></div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><h2>   Descargando Drupal en nuestro servidor con Docker</h2> <p>     Gracias a que hemos eliminado previamente, el archivo <strong>docker-compose.override.yml, </strong>que reescribe la configuración de nuestros contenedores, podremos descargar el esqueleto de un proyecto Drupal 10, en este caso, para colocarlo dentro de nuestra carpeta del rood y así tener todos los archivos listos, por si en un futuro queremos compartir nuestro código, con otros miembros del equipo o trasladarlo a otra máquina.</p> <h3>   Pasos para descargar el Esqueleto de Drupal</h3> <h4>       Paso 1 - Acceder al contenedor PHP</h4> <p>          A partir de Drupal 8, es recomendable utilizar el gestor de paquetes Composer, para garantizar la descarga total de las dependencias y facilitar las tareas de actualización y/o mantenimiento de Drupal, una vez esté en funcionamiento.</p> <p>          Composer está disponible dentro del contenedor encargado de ejecutar PHP, así que primero comprobaremos los nombres de todos los contenedores y luego accederemos al contenedor de PHP. Para conocer los contenedores que tenemos funcionando actualmente, ejecutaremos el siguiente comando en la consola:</p> <pre> docker ps</pre> <p>        Esto nos debería devolver el listado con todos los contenedores que estén en funcionamiento:</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 15.07%;" data-ratio="15.07" data-b-token="b-f5466f94d3b" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="448dc6f1-f6c6-4083-9363-cde926d0ac92" class="img-fluid media__element b-lazy b-filter" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/lista-contenedores.png?itok=pPpqqEXh" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1254" height="189" typeof="foaf:Image" /></div></div> <p> </p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><p>En nuestro caso, el contenedor de php se llama <strong>my_drupal10_project_php</strong>, para acceder dentro del contenedor y poder ejecutar el comando composer, escribiremos lo siguiente en la consola:</p> <pre> docker exec -it my_drupal10_project_php bash</pre> <p>Esto nos colocará dentro de la carpeta ROOT del servidor:</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 6.7%;" data-ratio="6.7" data-b-token="b-3f50cbc8aef" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img class="img-fluid media__element b-lazy b-filter" data-entity-uuid="7f5b8585-b715-4479-9482-7d9af909a62f" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/dentro-de-php.png?itok=MJcsQfxc" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="955" height="64" typeof="foaf:Image" /></div></div> <p>A continuación, podremos descargar el esqueleto de Drupal 10, añadiendo el siguiente comando:</p> <pre> composer create-project drupal/recommended-project vaciar</pre> <p>Este comando descargará todos los arhivos necesarios para una instalación de Drupal 10, dentro de la carpeta que yo he llamado <strong>VACIAR</strong>, para que recordemos que no debemos dejar nada dentro una vez termine la descarga.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 46.15%;" data-ratio="46.15" data-b-token="b-c0e9aebd315" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img class="img-fluid media__element b-lazy b-filter" data-entity-uuid="7262cc31-b651-43ef-8374-24d7c1dd921b" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/nueva-vaciar.png?itok=IXHqbS7v" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="921" height="425" typeof="foaf:Image" /></div></div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><h2>   Añadiendo archivos no deseados al .gitignore</h2> <p>     Antes de sacar los archivos de la carpeta VACIAR, para evitar que se suban por error, cualquiera de los archivos de Docker, que sólo deberían estar en nuestro servidor local, tendremos que añadir esos archivos al .gitignore que nos viene por defecto al descargar Docker4Drupal, así que, lo abriremos con nuestro editor, y a continuación, añadiremos todos los archivos correspondientes a Docker y sus contenedores:</p> <p>     El archivo .gitignore, quedaría de la siguiente manera, con nuestros cambios añadidos:</p> <pre> .idea/ mutagen.yml.lock .vscode #ignoramos los archivos de Docker y el servidor tests .dockerignore .env docker-compose.yml docker.mk LICENSE.md Makefile README.md traefik.yml</pre> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 38.19%;" data-ratio="38.19" data-b-token="b-b70aa16e775" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="695da0f5-1f80-4c44-b781-a2f70ea0c511" class="img-fluid media__element b-lazy b-filter" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/gitignore.png?itok=rK4Y1xDo" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1050" height="401" typeof="foaf:Image" /></div></div> <p> </p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><h2>   Moviendo los archivos de Drupal a la raiz del  servidor</h2> <p>      Ya que tenemos configurado el archivo .gitignore, procederemos a extraer todos los archivos de la carpeta vaciar, para colocarlos en la carpeta raíz de nuestro servidor y de esta forma iniciar el proceso de instalación del Drupal. Para ello, no hace falta que estemos dentro del contenedor:</p> <pre> mv vaciar/* .</pre> <pre> mv vaciar/.* .</pre> <p>     Con esto, quedarán fuera de la carpeta vaciar, todos los archivos de Drupal y a continuación, podremos eliminar la carpeta.</p> <pre> sudo rm -rf vaciar</pre> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 18.46%;" data-ratio="18.46" data-b-token="b-31a8f08021f" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="e6129d5e-ac3e-45b1-a33b-78986ff6e0a5" class="img-fluid media__element b-lazy b-filter" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/vaciar-carpeta.png?itok=TWeGzHEN" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1002" height="185" typeof="foaf:Image" /></div></div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><h2>   Arrancando el instalador de Drupal</h2> <p>     Ahora que ya hemos colocado todos los archivos necesarios para instalar Drupal, podremos proceder con el instalador, pero antes, para estar seguros de que tenemos todo actualizado a la versión más reciente disponible, ejecutaremos el comando update de Composer, desde nuestro contenedor php:</p> <p>composer update</p> <p>     El resultado, debería ser algo parecido a la siguiente imagen:</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 56.88%;" data-ratio="56.88" data-b-token="b-9138869be4d" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="9018df60-2f74-4ba2-bcd6-200c573c09f0" class="img-fluid media__element b-lazy b-filter" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/update-composer.png?itok=S8hqIRNs" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1104" height="628" typeof="foaf:Image" /></div></div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><p>     Para comprobar que podremos instalar nuestro Drupal 10, abriremos el navegador y escribiremos los datos que constan en la variable de entorno, y que explicamos al principio de este ejercicio, si no has cambiado ninguno de los valores por defecto, deberías escribir esto en tu navegador :</p> <pre> http://drupal.docker.localhost:8000/</pre> <p>     El resultado, será que se pondrá en marcha el instalador de Drupal 10.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 48.92%;" data-ratio="48.92" data-b-token="b-5cb8db9114e" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="6de7be6a-5d5a-4fc3-8b4a-33ffa1b5316a" class="img-fluid media__element b-lazy b-filter" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/instalador-drupal.png?itok=hj5kQL-X" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1300" height="636" typeof="foaf:Image" /></div></div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><h2>   Proceso de instalación</h2> <p>     Al hacer clic en la primera pantalla del instalador, es posible que nos encontremos con algunos mensajes, relacionados con archivos que nos faltan por descargar, crear o configurar. El primero de ellos, en mi caso es una alerta que me advierte de la ausencia de la carpeta <em>translations, encargada de alojar los archivos relacionados con las traducciones de Drupal, ya que nuestra instalación será en Español. </em></p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 80.94%;" data-ratio="80.94" data-b-token="b-d33229828b0" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img class="img-fluid media__element b-lazy b-filter" data-entity-uuid="e463a2a7-a784-4239-adab-ae72fc3ba3ab" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/error-translations.png?itok=AumuRzvC" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1128" height="913" typeof="foaf:Image" /></div></div> <p><em>     Para corregir el error, creaemos la carpeta <strong>files</strong>, dentro de la ubicación: <strong>web/sites/default/</strong>, y acontinuación, daremos permisos de escritura a la carpeta <strong>files</strong></em>...</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 14.87%;" data-ratio="14.87" data-b-token="b-93cff4d3dc1" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="ebe6e277-c990-401d-b8a3-19400951a933" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/carpeta-files.png?itok=esMRlnw_" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="948" height="141" typeof="foaf:Image" /></div></div> <p>     Si volvemos al navegador y refrescamos, veremos que nos deja continuar con el proceso de instalación, hasta la siguiente pantalla:</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 48.92%;" data-ratio="48.92" data-b-token="b-05696e67cd4" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="890b63a6-6e03-4ae9-b106-04fd65394d00" class="img-fluid media__element b-lazy b-filter" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/seleccionar-perfil.png?itok=ViAOKHt3" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1300" height="636" typeof="foaf:Image" /></div></div> <p> </p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><p>     Al hacer clic en el botón Guardar y continuar, nos encontraremos con otro mensaje de alerta: </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 64.69%;" data-ratio="64.69" data-b-token="b-870a4865ca4" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img class="img-fluid media__element b-lazy b-filter" data-entity-uuid="77f70c55-cacc-4987-8b61-2a067a85c56a" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/settings-error.png?itok=uxmGnPwg" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1045" height="676" typeof="foaf:Image" /></div></div> <p>     El instalador Drupal <strong>necesita que se cree un archivo <em>./sites/default/settings.php</em></strong> como parte del proceso de instalación. Así que simplemente, seguiremos las instrucciones, copiaremos el archivo <strong>default.settings.php</strong> y lo renombraremos a<strong> <em>settings.php</em></strong>, asegurándonos de otorgarle permisos de escritura, que serán necesarios durante el resto de la instalación, para que Drupal pueda configurar los datos de acceso a la base de datos y la carpeta para la sincronización.</p> <pre> cp web/sites/default/default.settings.php web/sites/default/settings.php chmod -R 777 web/sites/default/settings.php</pre> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><p>     Esta vez, cuando hayamos refrescado el navegador, veremos la pantalla donde tendremos que añadir los datos de acceso a la base de datos, que son los que podremos confirmar en nuestra variable de entorno <strong>.env</strong>, es muy importate que en lugar de dejar<strong> localhost</strong>, cambiemos el servidor de la base de datos por<strong> mariadb</strong>, o nos devolverá un error de permisos.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 80.02%;" data-ratio="80.02" data-b-token="b-ac58e67c646" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="f66dec36-65f6-4a40-ba37-3788bb027421" class="img-fluid media__element b-lazy b-filter" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/configuracion-final.png?itok=R58HSuhm" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="921" height="737" typeof="foaf:Image" /></div></div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 59.08%;" data-ratio="59.08" data-b-token="b-30cb3c62f19" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="3030ec4b-8144-4020-850d-60d5344b0aba" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/traducciones_0.png?itok=SA23YQTR" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1178" height="696" typeof="foaf:Image" /></div></div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><p>     Tan pronto como se terminen de descargar las traducciones, debido a que nuestra instalación es en Español, veremos la pantalla final, donde debemos rellenar los detalles del usuario administrador, el correo electrónico que utilizará Drupal, para comunicarse con los usuarios que interactuén, el lenguaje, horario y pais... </p> <p>     Rellenaremos todo, presionaremos el botón continuar, y por fin, hemos terminado el proceso completo de instalación de un proyecto Drupal 10, con Docker.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 83.51%;" data-ratio="83.51" data-b-token="b-eef83da31db" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="38b17023-2ce1-4fb8-8a03-95f9436f0f7c" class="img-fluid media__element b-lazy b-filter" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/casi-final.png?itok=-QprPJBU" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1055" height="881" typeof="foaf:Image" /></div></div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><p>     Ahora ya podremos comenzar a trabajar con nuestro Drupal.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 56.38%;" data-ratio="56.38" data-b-token="b-6b5a61210b8" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="15a4c945-ef6e-489b-9ae6-845c6a44643b" class="img-fluid media__element b-lazy b-filter" alt="Docker Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/bienvenida10.png?itok=nMF2sEgo" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1300" height="733" typeof="foaf:Image" /></div></div> <p> </p> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><h2>   Añadiendo archivos al repositorio</h2> <p>     Como hemos comentado al principio, por lo general, cuando estás trabajando con algún proyecto de desarrollo, en algún momento tendrás que realizar el despliegue al entorno de producción, por lo cual es muy recomendable, que desde el principio, te acostumbres a trabajar con un repositorio, añadiendo y comiteando tus cambios, a medida que vayas avanzando en el proceso.</p> <p>     Para evitar que se añadan archivos innecesarios de Drupal, como vendor o files, actualizaremos el archivo .gitignore, antes de realizar nuestro primer commit.</p> <p>     Accede a este enlace y copia todo su contenido, justo debajo de nuestros últimos cambios en el <strong>.gitignore</strong>:</p> <p>     <a href="https://drupaladicto.com/snippet/git-ignore-para-drupal">https://drupaladicto.com/snippet/git-ignore-para-drupal</a></p> <p>     Una vez actualizado tu archivo, podemos añadir y comentar nuestros cambios:</p> <pre> git init git add . git commit -m "Archivos base para instalar Drupal 10"</pre> <p>     Así nos aseguramos de que, al ejecutar el comando de subida a nuestro repositorio, <strong>git pull</strong>, sólo subamos lo necesario para no ocupar espacio innecesario en nuestro repositorio final.</p> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 28/08/2023 - 17:57</span> Mon, 28 Aug 2023 15:57:09 +0000 webmaster 454 at https://drupaladicto.com Certbot MisconfigurationError: nginx restart failed https://drupaladicto.com/snippet/certbot-misconfigurationerror-nginx-restart-failed <span class="field field--name-title field--type-string field--label-hidden">Certbot MisconfigurationError: nginx restart failed</span> <div class="clearfix text-formatted field field--name-field-snippet-descripcion field--type-text-long field--label-above"> <div class="field__label">Descripción</div> <div class="field__item">En algunos casos, cuando estás trabajando con subdominios o varios dominios, dentro de tu VPS o servidor con Nginx, puede que te encuentres con este error, que impide reiniciar Nginx y generar nuevamente los certificados para tus dominios. </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sáb, 12/08/2023 - 22:28</span> <div class="clearfix text-formatted field field--name-field-instrucciones field--type-text-long field--label-above"> <div class="field__label">Instrucciones</div> <div class="field__item"><p>Para solucionarlo, sigue las siguientes instrucciones:</p> <ol><li>Acceder a tu consola como administrador o con un usuario que te permita ejecutar comandos sudo</li> <li>A continuación, ejecutar los siguientes comandos, en el mismo orden planteado:</li> </ol></div> </div> <div class="clearfix text-formatted field field--name-field-codigo field--type-text-long field--label-hidden field__item"><pre> <code>sudo fuser -k 443/tcp sudo fuser -k 80/tcp sudo service nginx restart sudo certbot --nginx</code></pre> </div> <div class="field field--name-field-snippet-paginador field--type-image field--label-above"> <div class="field__label">Paginador</div> <div class="field__item"> <img src="/sites/default/files/default_images/snippet-pager.png" width="100" height="100" alt="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> <div class="field field--name-field-categoria-snippet field--type-entity-reference field--label-above"> <div class="field__label">Categoría</div> <div class="field__items"> <div class="field__item"><a href="/categoria/nginx" hreflang="es">nginx</a></div> <div class="field__item"><a href="/categoria/vps" hreflang="es">vps</a></div> <div class="field__item"><a href="/categoria/sever" hreflang="es">sever</a></div> <div class="field__item"><a href="/categoria/servidor" hreflang="es">servidor</a></div> <div class="field__item"><a href="/categoria/infraestructura" hreflang="es">infraestructura</a></div> <div class="field__item"><a href="/categoria/entorno" hreflang="es">entorno</a></div> <div class="field__item"><a href="/categoria/entornos" hreflang="es">entornos</a></div> <div class="field__item"><a href="/categoria/servidores" hreflang="es">servidores</a></div> <div class="field__item"><a href="/categoria/linux" hreflang="es">linux</a></div> <div class="field__item"><a href="/categoria/ubuntu" hreflang="es">ubuntu</a></div> </div> </div> <div class="field field--name-field-portada-snippet field--type-entity-reference field--label-above"> <div class="field__label">Portada</div> <div class="field__item"><article class="media media--type-imagen media--view-mode-default"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img src="/sites/default/files/styles/max_325x325/public/imagenes/portada-snippet-grande.png?itok=JZyTAbRq" width="325" height="176" alt="Snippet | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid image-style-max-325x325" /> </div> </div> </article> </div> </div> Sat, 12 Aug 2023 20:28:44 +0000 webmaster 451 at https://drupaladicto.com Drupal 8 | Instalación con Lando https://drupaladicto.com/curso/drupal-8-paso-paso/drupal-8-instalacion-con-lando <span class="field field--name-title field--type-string field--label-hidden">Drupal 8 | Instalación con Lando</span> <div class="field field--name-field-contenidos-cap-gratis field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <style>#video-only-878 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-878 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-878 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-878"> <section id="video-only-878" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/portada-gratuito-grande_2.jpg?itok=8dBQYXT7" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-598-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-598-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-598-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/NMiDZgnRNi8&amp;max_width=0&amp;max_height=0&amp;hash=7gbzgVK0TxYGhXVoWIFJOPQr-FLDREpwM0RWzXaeBIQ" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-598-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1190" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><h2><strong>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... <a href="https://youtu.be/NMiDZgnRNi8" target="_blank">HAZ CLIC AQUI</a></strong></h2> <p>     Si quieres dedicarte al desarrollo de aplicacione web, y además te gustaría probar con Drupal 8, estás de suerte, porque en esta ocasión podrás acceder a un repositorio y descargarte todo lo que necesitarás para comenzar a trabajar con este potente CMS.</p> <h2>   Contenido del repositorio Drupal 8 - Lando</h2> <ul><li>Todos los archivos de un proyecto Drupal 8 Base, listo para funcionar</li> <li>Los archivos para un tema personalizado, basado en Bartik, para que puedas comenzar a jugar con los CSS</li> <li>La base de datos de un proyecto Drupal nuevo</li> <li>Los módulos principales activados y configurados: (Admin Toolbar, Pathauto)</li> <li>El archivo de Lando, para que puedas poner en marcha en pocos minutos tu proyecto y además podrás ejecutar lando drush y lando composer, entre otros.</li> </ul><h2>   Instalación y configuración del Proyecto Drupal 8 Lando</h2> <ol><li> <h3>Descargar y configurar Lando en tu entorno local.</h3> <p>   Yo soy usuario Windows, así que para poder trabajar con Linux, he instalado WLS2, con una distribución de Ubuntu 22.04, dentro de mi ordenador con Windows 11. De esta forma, puedo tener ambos entornos, sin la necesidad de complejas configuraciones, ni que se ralentice mi máquina.<br />    Así que lo único que necesitaremos en este caso será descargar los archivos de Lando, si todavía no sabes cómo hacerlo, puedes ver el video y la documentación <a href="https://bit.ly/3EcE39z" target="_blank">HACIENDO CLIC AQUÍ</a>.<br />    Ahora que ya tenemos instalado Lando, crearemos la carpeta donde estará nuestro Drupal 8 y a continuación, vamos a generar nuestro archivo de configuración de Lando, ejecutando el siguiente comando:</p> <pre> lando init</pre> <p>   En cuanto hayamos terminado con el proceso, podremos arrancar Lando, para poder ejecutar el Composer, que necesitaremos en el siguiente paso.</p> </li> <li> <h3>Clonar el repositorio y arrancar Lando</h3> <p>   Ya que tenemos Lando instalado y listo para comenzar, nos colocaremos en la ubicación donde estará nuestro proyecto y a continuación, vamos a clonar el repositorio, para que descargue los primeros archivos del Drupal que vamos a necesitar.</p> <pre> git clone https://github.com/drupaladicto/drupal8-lando.git</pre> <p>   En el repositorio, además de los archivos de Drupal, encontraremos una carpeta llamada Extras, dentro estarán el archivo settings.php, que tendremos que copiar a la ubicación: “<strong><em>sites/default/settings.php</em></strong>” y la base de datos que importaremos más adelante, donde tendrás configurado el subtheme y algunos módulos adicionales.</p> </li> <li> <h3>Descargar las dependencias de Drupal</h3> <p>   Ahora que ya tenemos los primeros archivos en nuestro entorno local, podremos arrancar nuestro servidor de Lando, para ello ejecutaremos el siguiente comando:</p> <pre> lando start</pre> <p>    A continuación descargaremos el resto de dependencias de Drupal 8, para esto necesitaremos Composer, así que ejecutaremos el siguiente comando:</p> <pre> lando composer update</pre> </li> <li> <h3>Configuración de settings.php y la base de datos</h3> <p>   Ya casi hemos terminado, como hemos mencionado anteriormente, necesitaremos colocar el settings.php, en la ubicación correcta para que Drupal pueda funcionar, pero además de esto, tendremos que añadir nuestra base de datos. <br />    Los detalles de la base de datos están configurados en el archivo de configuración de lando .lando.yml, para asegurarte, puedes ejecutar el comando lando info y verás en pantalla, toda la información que necesitarás relacionada con tu proyecto:</p> </li> </ol><p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 25.23%;" data-ratio="25.23" data-b-token="b-eb240a0a54f" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Instalacion Drupal 8 Lando | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Instalacion Drupal 8 Lando | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-62f8af28aa866.png?itok=Z1vjgdJh" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="164" typeof="foaf:Image" /></div></div> <p>Así que nos moveremos a la carpeta Extras y ejecutaremos el siguiente comando:</p> <pre> lando db-import nuestrabase.sql</pre> <h3>5.- Accediendo a nuestro Drupal 8</h3> <p>   Ya estamos listos para acceder a nuestro Drupal 8 y comenzar en nuestro viaje de exploración.<br />     Pero antes nos aseguraremos de que todo esté correcto, por eso ejecutaremos el siguiente comando de Lando:</p> <pre> lando rebuild </pre> <p> </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 24.77%;" data-ratio="24.77" data-b-token="b-357c75a2071" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Curso Drupal 8 | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Curso Drupal 8 | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-62f8af89e1e5c.png?itok=0_DuQjyp" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="161" typeof="foaf:Image" /></div></div> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 48.46%;" data-ratio="48.46" data-b-token="b-926768c8f67" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Curso Drupal 8 | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Curso Drupal 8 | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-62f8afaceaff7.png?itok=htGdk_-x" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="315" typeof="foaf:Image" /></div></div> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 52%;" data-ratio="52" data-b-token="b-3a8317ab6fb" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Curso Drupal 8 | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Curso Drupal 8 | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-62f8b00b3c1d9.png?itok=pPWHHerq" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="338" typeof="foaf:Image" /></div></div> <h3>   Cómo acceder a la administración del Drupal 8</h3> <p>     Cuando ya tengas funcionando el Drupal 8, necesitarás acceder como administrador para poder comenzar a evaluar, explorar y crear tus propios cambios en dentro del proyecto. Para ello, sólo tendrás que ejecutar el siguiente comando y luego copiar en el navegador a partir de "/user":</p> <p>lando drush:uli</p> <p>     Si nunca haz hecho esto de recuperar el acceso utilizando Drush, puedes ver el ejemplo <a href="https://www.drupaladicto.com/curso/drush-introduccion-y-comandos-mas-utiles" target="_blank">HACIENDO CLIC AQUÍ</a></p> </div> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sáb, 18/03/2023 - 18:22</span> Sat, 18 Mar 2023 17:22:13 +0000 webmaster 401 at https://drupaladicto.com LEMP VPS | Guía Completa https://drupaladicto.com/curso/lemp-vps-guia-completa-resumen <span class="field field--name-title field--type-string field--label-hidden">LEMP VPS | Guía Completa</span> <div class="field field--name-field-portada-ce field--type-entity-reference field--label-hidden field__item"><article class="media media--type-imagen media--view-mode-default"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"><svg xmlns="http://www.w3.org/2000/svg" id="a" viewBox="0 0 650 650"> <rect width="650" height="650" style="fill:#1d1d1b; stroke:#1d1d1b; stroke-miterlimit:10;"></rect> <text transform="translate(183.61 309.27)" style="fill:#fff; font-family:Montserrat-Light, Montserrat; font-size:99.05px; font-weight:300; stroke:#1d1d1b; stroke-miterlimit:10;"> <tspan x="0" y="0" style="letter-spacing:-.02em;">C</tspan> <tspan x="69.04" y="0">u</tspan> <tspan x="135.3" y="0" style="letter-spacing:0em;">r</tspan> <tspan x="174.03" y="0">so</tspan> <tspan x="-92.56" y="90" style="letter-spacing:-.03em;">P</tspan> <tspan x="-24.31" y="90" style="letter-spacing:-.01em;">r</tspan> <tspan x="13.32" y="90">emium</tspan> </text> </svg></div> </div> </article> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sáb, 18/03/2023 - 12:34</span> <div class="clearfix text-formatted field field--name-field-descripcion-ce field--type-text-long field--label-hidden field__item">En este curso aprenderás todos los pasos necesarios, para configurar un Servidor VPS (Linux, Nginx, MySQL y PHP), con el proveedor de hosting OVH.</div> <div class="field field--name-field-tipo-ce field--type-list-string field--label-hidden field__item">Curso Premium</div> <div class="field field--name-field-suscribete-youtube field--type-link field--label-hidden field__item"><a href="https://www.youtube.com/drupaladicto">Suscríbete al canal</a></div> <div class="field field--name-field-categoria-ce field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><a href="/categoria/server" hreflang="es">server</a></div> <div class="field__item"><a href="/categoria/vps" hreflang="es">vps</a></div> <div class="field__item"><a href="/categoria/nginx" hreflang="es">nginx</a></div> <div class="field__item"><a href="/categoria/mariadb" hreflang="es">mariadb</a></div> <div class="field__item"><a href="/categoria/php" hreflang="es">php</a></div> <div class="field__item"><a href="/categoria/servidor" hreflang="es">servidor</a></div> <div class="field__item"><a href="/categoria/entorno" hreflang="es">entorno</a></div> <div class="field__item"><a href="/categoria/entornos" hreflang="es">entornos</a></div> <div class="field__item"><a href="/categoria/dominio" hreflang="es">dominio</a></div> <div class="field__item"><a href="/categoria/hosting" hreflang="es">hosting</a></div> <div class="field__item"><a href="/categoria/produccion" hreflang="es">produccion</a></div> </div> Sat, 18 Mar 2023 11:34:08 +0000 webmaster 383 at https://drupaladicto.com Docker for Drupal | Importar proyecto existente https://drupaladicto.com/curso/entornos-locales/docker-drupal-importar-proyecto-existente <span class="field field--name-title field--type-string field--label-hidden">Docker for Drupal | Importar proyecto existente</span> <div class="field field--name-field-contenidos-cap-gratis field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <style>#video-only-874 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-874 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-874 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-874"> <section id="video-only-874" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/portada-gratuito-grande_2.jpg?itok=8dBQYXT7" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-594-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-594-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-594-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/w-xb55iUKkg&amp;max_width=0&amp;max_height=0&amp;hash=QKMppvHS30J8GFtO-KJvYtW5HgNLuyXcSADWM5vCT3A" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-594-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1156" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><h2><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 48.45%;" data-ratio="48.45" data-b-token="b-1fcbee1b6fc" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="6e78e462-f431-4d4c-ba13-4888fb6977b1" alt="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/docker-for-drupal-portada.png?itok=5OK9TMIp" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1063" height="515" typeof="foaf:Image" /></div></div> </h2> <h2><strong>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... <a href="https://youtu.be/w-xb55iUKkg" target="_blank">HAZ CLIC AQUI</a></strong></h2> <p>     Si estás trabajando con Drupal, en muchas ocasiones te verás en la necesidad de instalar y poner en marcha, en tu entorno local, proyectos que han sido creados previamente por otros desarrolladores o miembros de tu equipo de trabajo, para que puedas realizar la implementación de algunos cambios, analizar el código del código o simplemente realizar tareas de testing en un entorno seguro.</p> <p>     Tienes disponibles varios métodos de configuración para entornos locales <a href="https://www.drupaladicto.com/trabajando-con-servidores-locales">HACIENDO CLIC AQUÍ</a></p> <p>     Hoy te quiero mostrar, cómo trabajar en tu entorno local, basándonos en contenedores Docker y un proyecto existente de Drupal 9, para que puedas entender todos los pasos necesarios y activar cualquier proyectos sin la necesidad de invertir demasiado tiempo en el proceso.</p> <h2>   Activar un proyecto Drupal 9 existente utilizando Docker for Drupal</h2> <h3>     Requisitos:</h3> <p>        - Tener instalado Docker y Docker compose en tu entorno local. <a href="https://docs.docker.com/desktop/install/mac-install/">HAZ CLIC AQUI</a></p> <p>        - Tener los archivos del proyecto Drupal con el que vas a trabajar. Para descargar la estructura base vacía <a href="https://github.com/drupal-composer/drupal-project" target="_blank">HAZ CLIC AQUÍ</a></p> <p>        - Tener la base de datos del proyecto Drupal con el vas a trabajar</p> <p> </p> <h3>     Paso 1 - Descargar archivos servidor</h3> <p>     Antes de poder comenzar con el proceso de instalación del proyecto Drupal, necesitaremos poder ejecutar código PHP, acceder a nuestra base de datos por medio de Mysql y acceder a un servidor Apache o NGNIX.</p> <p>     La buena noticia, es que exite un repositorio, en el que podremos encontrar todo lo necesario, se llama DockerForDrupal, desarrollado por el equipo de Wodby.</p> <p>     Así que abriremos nuestra consola y, a continuación, clonaremos el respositorio, para tener disponibles todos los archivos:</p> <pre> git clone https://github.com/wodby/docker4drupal.git/ server</pre> <p>     Esto descargará todos los archivos en la carpeta server, y de esta manera, podremos copiar los archivos necesarios para cualquier proyecto de Drupal, sin la necesidad de tener que descargarlos nuevamente en el futuro.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 27.33%;" data-ratio="27.33" data-b-token="b-02eb8e6d2e3" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-635c56d557757.jpg?itok=_jmZ_y1J" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1200" height="328" typeof="foaf:Image" /></div></div> <p>     Para que no tengamos ningún tipo de conflicto, una vez copiemos los archivos necesarios en cualquier proyecto de Drupal, eliminaremos el directorio <strong>.git </strong>y el archivo <strong>docker-compose.override.yml</strong></p> <p><strong>     </strong>Así que nos colocaremos dentro de la carpeta server y a continuación, ejecutaremos los siguientes comandos en nuestra consola:</p> <pre> sudo rm -rf .git</pre> <pre> sudo rm -f docker-compose.override.yml</pre> <p>     Con estos dos comandos habremos eliminado cualquier posibilidad de conflicto en el futuro.</p> <h3>     Paso 2 - Copiar los archivos desde el servidor hacia Drupal</h3> <p>     En este punto, lo próximo que necesitaremos realizar el la copia de todos los archivos ubicados en la carpeta server, hacia la carpeta raíz del nuestro proyecto Drupal, puedes hacerlo por consola o desde el explorador de archivos de windows, arrastrándolos.</p> <pre> sudo cp -R server/ drupal9</pre> <h3>     Paso 3 - Ajuste de configuración en el archivo .env</h3> <p>     Antes de poder comenzar a trabajar con los contenedores relacionados con nuestro proyecto Drupal, tendremos que explorar y modificar algunos ajustes, relacionados principalmente con el nombre del proyecto, la conexión con MySQL, entre otros.</p> <p>     Para ello, abriremos el archivo (.env), que veremos en nuestra carpeta raiz, al haber copiado los archivos desde la carpetar server; en él encontraremos todas las definiciones por defecto, paa trabajar con un proyecto Drupal, incluyendo el nombre del proyecto, datos de conexión al servidor mysql, entre otros.</p> <p>     Como la idea es trabajar con un proyecto que ya existe, deberíamos modificar algunos de estos datos, o simplemente, dejar los mismos y actualizar los datos de conexión en el archivo de Drupal llamado settings.php, dentro de la carpeta "<strong>web/sites/default/</strong>"</p> <pre> ### PROJECT SETTINGS PROJECT_NAME=drupal9_existente PROJECT_BASE_URL=drupal9_existente.docker.localhost PROJECT_PORT=8000 DB_NAME=drupal9_existente DB_USER=drupal9_existente DB_PASSWORD=drupal9_existente DB_ROOT_PASSWORD=password DB_HOST=mariadb DB_PORT=3306 DB_DRIVER=mysql</pre> <h3>     Paso 4 - Arranque y comprobación de contenedores Docker </h3> <p>     Si todos los pasos anteriores no han devuelto ningún error o si ya los hemos corregido, entonces, podremos poner en marcha todos los contenedores, para continuar con el proceso de instalación de Drupal.</p> <p>     El primer comando que tendremos que ejecutar para el arranque será el siguiente:</p> <pre> docker-compose up -d</pre> <p>     Si tienes instalado Make, también puedes utilizar este comando :</p> <pre> make up</pre> <p>     Si quieres saber qué es Make y cómo instalarlo, <a href="/snippet/como-instalar-make-en-ubuntu" target="_blank">HAZ CLIC AQUÍ</a></p> <p>     Esto se iniciará el proceso de activación de todos los cotenedores en segundo plano, para que podamos continuar en la misa ventana de nuestra consola, sin entrar en conflicto cada vez que ejecutemos código posteriormente.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 14.08%;" data-ratio="14.08" data-b-token="b-37831a8a230" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-635c57128fa05.jpg?itok=FcI9M39G" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1200" height="169" typeof="foaf:Image" /></div></div> <h3> Paso 5 - Importación de la base de datos</h3> <p>     Ya tenemos todo lo necesario para que podamos acceder a nuestro proyecto de Drupal, los contenedores ya están funcionando, por lo que, si escribimos el dominio, configurado en el archivo .evn, dentro de nuesto navegador, lo siguiente que tendríamos que ver es nuesto proyecto funcionando, pero todavía no hemos importado la base de datos para que esto ocurra.</p> <p>     Para importar la base de datos dentro de nuestro contenedor y que podamos ver luego el proyecto, tendremos que acceder directamente dentro del contenedor adecuado, para eso, ejecutaremos el comando que nos devolverá el nombre y estatus de todos los contenedores:</p> <pre> docker ps</pre> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 10.54%;" data-ratio="10.54" data-b-token="b-b89961241a9" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-635c574536ce4.png?itok=wOzYLsmD" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1300" height="137" typeof="foaf:Image" /></div></div> <p>     A continuacióbn, buscaremos el Identificador único para el contenedor de Mysql, y luego escribiremos el siguiente comando, sustituyendo los datos necesarios:</p> <pre> docker exec -it ID_CONTENEDOR bash</pre> <p>     Con esto podremos acceder al interior del contenedor seleccionado, que en este caso será el encargado de gestionar nuestra base de datos y a continuación, podremos ejecutar cualquiera de los comando de mysql.</p> <p>     Para acceder al servidor Mysql y consultar, podremos ejecutar algo parecido al siguiente comando:</p> <pre> mysql -udrupal9_existente -pdrupal9_existente</pre> <p>     Con la anterior líneas, estaremos dentro de MySql y podremos ver el listado de bases de datos, de usuarios, permisos, etc.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 22.83%;" data-ratio="22.83" data-b-token="b-070bb1b0575" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-635c577450186.jpg?itok=1xFkNhyE" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1200" height="274" typeof="foaf:Image" /></div></div> <p>     En nuestro caso, ya tenemos listo el archivo que vamos a importar, colocado dentro de la carpeta raíz de nuestro proyecto Drupal, por lo tanto, para accedere al contenedor y realizar la importación, bastará con ejecutar el siguiente comando, sustituyendo los datos por los correspondientes a tus propios contenedores:</p> <pre> docker exec -i f8e957b6b019 mysql -udrupal9_existente -pdrupal9_existente drupal9_existente &lt; backup_existente.sql</pre> <h3>   Ejecución de comandos con Composer y Drush</h3> <p>     Ya tenemos nuestro proyecto Drupal, listo para continuar trabajando, pero quizás necesitaremos realizar algunas actualizaciones, ya sea mediante el uso del gestor de paquetes Composer, o de la herramienta Drush.</p> <p>     En estos casos, el contenedor desde el cual tendremos que ejecutar ambas operaciones, será el encargado de php, por lo que buscaremos nuevamente el nombre, con el comando docker ps, y una vez lo sepamos, la operación será muy parecida:</p> <pre> docker exec -it ID_CONTENEDOR bash</pre> <p>     Y posteriormente, podremos ejecutar cualquiera de los comandos de Composer o Drush.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 22.83%;" data-ratio="22.83" data-b-token="b-ddaafc7121e" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-635c582015d08.jpg?itok=G8PrrnGv" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1200" height="274" typeof="foaf:Image" /></div></div> <h3>     Posibles fallos durante el proceso:</h3> <p><em><strong>       Permisos de Docker</strong></em></p> <p>     Es posible que al ejecutar el comando para levantar los contenedores de Docker <em><strong>docker-compose up - d, </strong></em> la primera vez, te encuentres con un error relacionados con los permisos de ejecucion de los contenedores</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 21.75%;" data-ratio="21.75" data-b-token="b-eaafa5909b0" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-635c584f96a34.jpg?itok=7BPbDgwL" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1200" height="261" typeof="foaf:Image" /></div></div> <p>     Para solucionarlo, ejecuta el siguiente comando, ubicándote dentro de la carpeta en la que quieres levantar los contenedores:</p> <pre> sudo chmod 777 /var/run/docker.sock</pre> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 21.75%;" data-ratio="21.75" data-b-token="b-4df56ca7896" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-635c587d4a4a4.jpg?itok=drL7I4ON" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1200" height="261" typeof="foaf:Image" /></div></div> <p><em><strong>   Permisos en las carpetas</strong></em></p> <p><em><strong>     </strong></em>Aunque estemos trabajando con los archivos de un proyecto existente, al momento de trasladar esos archivos dentro de los contenedores, es posible que tengamos que volver a otorgar permisos de escritura y lectura a la carpeta root.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 48.42%;" data-ratio="48.42" data-b-token="b-842a1d4cd1d" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Docker for Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-635c58a502268.jpg?itok=123-mp8z" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1200" height="581" typeof="foaf:Image" /></div></div> <p>     Para otorgar todos los permisos, nos colocaremos dentro de nuestra carpeta raiz y a continuación, ejecutaremos el comando siguiente:</p> <pre> sudo chmod -R 777 ./</pre> </div> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mié, 08/03/2023 - 18:13</span> Wed, 08 Mar 2023 17:13:50 +0000 webmaster 267 at https://drupaladicto.com Symfony | Entorno de desarrollo WSL2 en Windows https://drupaladicto.com/curso/entornos-locales/symfony-entorno-de-desarrollo-wsl2-en-windows <span class="field field--name-title field--type-string field--label-hidden">Symfony | Entorno de desarrollo WSL2 en Windows</span> <div class="field field--name-field-contenidos-cap-gratis field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1155" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 41.73%;" data-ratio="41.73" data-b-token="b-80c05e5581c" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="1a1f6f20-173b-4bfb-b118-a70412542ebe" alt="Symfony | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/symfony-portada.png?itok=1fArXJE_" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1112" height="464" typeof="foaf:Image" /></div></div>   <p>   Ahora que ya sabemos <a href="https://www.drupaladicto.es/actualidad/como-instalar-drupal-9-usando-docker-en-windows-10-home">Cómo instalar una distribución Linux dentro de Windows 10 usando el WSL</a>, podemos pasar al siguiente nivel y explorar tantas opciones como nos hagan falta, para trabajar con cualquier proyecto, sin tener que cambiarnos de ordenador o trabajar con máquinas virtuales.</p> <p>     La idea es facilitarnos la vida y que podamos implementar todas las herramientas necesarias sin la necesidad de invertir demasiado tiempo en ello.</p> <p>     Por esta razón, hoy vamos a explicar cómo podremos configurar un entorno PHP para desarrollar un proyecto utilizando <a href="https://symfony.com/doc/current/index.html" target="_blank">Symfony</a>; uno de los Frameworks más potentes, robustos y seguros  que existen en el mercado.</p> <p><strong>     Aclaración antes de seguir</strong></p> <p>     Al momento de crear este artículo, existe <a href="https://github.com/microsoft/WSL/issues/4898">un conocido error</a> relacionado con el reloj en tiempo real con Ubuntu 20.04 y WSL2. Para evitar que surja este error, configuramos APT para congelar nuestra versión libc6 instalada a la de la distribución original emitiendo el siguiente comando:</p> <pre> sudo apt-mark hold libc6</pre> <p>     Tan pronto como hayamos ejecutado el anterior comando, podremos actualizar los paquetes de ubuntu ejecutando los siguiente:</p> <pre> sudo apt update</pre> <pre> sudo apt upgrade</pre> <p>     Lo próximo que instalemos son las dependencias centrales para ejecutar la plataforma eZ (y muchas otras aplicaciones Symfony):</p> <pre> sudo apt install composer php-xml php-intl php-gd php-curl php-fpm</pre> <p>     En la línea anterior, he omitido el servicio de base de datos para aclarar que la plataforma eZ es compatible con las bases de datos MySQL / MariaDB y PostgreSQL. ASí que podrás elegir lo que mejor se adapte a tus necesidades. En nuestro caso usaremos MariaDB para este tutorial. Instala el servidor MariaDB y la extensión PHP MySQL:</p> <pre> sudo apt install mariadb-server php-mysql</pre> <p>     Ya estamos listos para arrancar la instancia del servidor MariaDB e iniciar sesión como usuario root:</p> <pre> sudo service mysql start</pre> <pre> sudo mysql</pre> <p>     Vamos a añadir una base de datos para la plataforma eZ, Por lo que ejecutamos las siguientes declaraciones SQL:</p> <pre> CREATE DATABASE ezp; GRANT ALL ON ezp.* TO 'ezp'@'localhost' IDENTIFIED BY 'wsl2ezp'; FLUSH PRIVILEGES; EXIT;</pre> <p>     Y ahora comprobamos que podemos acceder a la base de datos:</p> <pre> mysql -uezp -pwsl2ezp ezp</pre> <p>     Ahora ya tenemos un entorno Linux con PHP, MariaDB y el administrador de paquetes Composer listo para funcionar:</p> <p> </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 34.47%;" data-ratio="34.47" data-b-token="b-648f1a924d1" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img loading="lazy" alt="comprobacion consola" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/comprobacion.png?itok=3-J-JoIr" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="882" height="304" typeof="foaf:Image" /></div></div> <p>     Ya que vamos a utilizar Symfony Encore para gestionar los activos de front-end, instalaremos el administrador de paquetes Yarn desde el repositorio del proyecto. De esta forma también instalará Node.js como dependencia:</p> <pre> curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt update sudo apt install yarn</pre> <h3>     Instalando el CLI de Symfony</h3> <p>     A estas alturas, puede que hayas notado que falta en el procedimiento de instalación anterior es la A en LAMP y la E en LEMP. En lenguaje sencillo: nuestra pila no tiene un servidor web instalado. Tradicionalmente, una pila PHP ha incluido un servidor web separado. Un servidor HTTP completo sigue siendo para instalaciones de producción, pero como estamos en desarrollo utilizaremos una opción más simple: Symfony Local Web Server</p> <p>     Symfony CLI es una aplicación de línea de comandos independiente que podremos instalar desde nuestra terminal WSL. Recuerda seguir las instrucciones de Linux, NO las de Windows:</p> <pre> wget https://get.symfony.com/cli/installer -O - | bash</pre> <p>     El código anterior lo instalará en nuestra carpeta de usuario, pero  podremos hacerlo disponible de forma global si ejecutamos el siguiente código, cambiando el NOMBRE DEL USUARIO por el tuyo:</p> <pre> sudo mv /home/nombre_usuario/.symfony/bin/symfony /usr/local/bin/symfony</pre> <p>     Ahora podemos verificar que nuestra pila está funcionando creando una nueva aplicación Symfony hello world y ejecutando el servidor web:</p> <pre> symfony new hola-mundo cd hola-mundo symfony serve</pre> <p>     Ha llegado el momento de abrir una ventana del navegador en <strong>http: // localhost: 8000 / </strong>para ver la aplicación en ejecución. La primera vez que lo ejecutes, es posible que Windows te pregunte si este tráfico está permitido. Ahora debería tener una aplicación Symfony básica ejecutándose en Windows usando WSL2 como se muestra en la captura de pantalla a continuación.</p> <p> </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 45.77%;" data-ratio="45.77" data-b-token="b-d41f0f03931" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img loading="lazy" alt="symfony funcionando correctamente" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/funcionando_symfony.png?itok=tFPN5lRW" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1300" height="595" typeof="foaf:Image" /></div></div> <p>     Para obtener más detalles sobre cómo configurar TLS, múltiples versiones de PHP, etc., diríjase a los <a href="https://symfony.com/doc/current/setup/symfony_server.html" target="_blank">documentos de Symfony</a>.</p> <h3>     Instalación de la Plataforma eZ y acceso a archivos</h3> <p>     El siguiente paso es instalar y ejecutar una aplicación Symfony completa. Esto funciona como en cualquier entorno Linux (¡porque es uno!). Así que vamos a <a href="https://doc.ezplatform.com/en/latest/getting_started/install_ez_platform/" target="_blank">instalar una copia de la plataforma eZ </a> y para ello utilizaremos. Éste se encargará de clonar los archivos desde el <a href="https://github.com/ezsystems/ezplatform" target="_blank">repositorio</a>, verificará por nosotros <a href="https://github.com/ezsystems/ezplatform/releases" target="_blank" title="">las actualizaciones disponibles</a> y a continuación instalar los paquetes necesarios usando:</p> <pre> composer create-project ezsystems/ezplatform ezplatform ^3 cd ezplatform</pre> <p>     Lo siguiente será instalar nuestra base de datos y para ello, necesitamos definir la configuración de la base de datos y ejecutar el instalador:</p> <pre> echo "DATABASE_URL=mysql://ezp:wsl2ezp@127.0.0.1:3306/ezp?serverVersion=10.3" &gt; .env.local composer run-script ezplatform-install</pre> <p>Cuando se haya completado el proceso de instalación,  podremos ingresar al directorio del proyecto e iniciar el servidor web Symfony:</p> <pre> symfony serve</pre> <p>     El resultado mostrará que el servidor web Symfony detecta y usa la copia instalada de PHP-FPM:</p> <p>     Ahora, si abrimos un navegador (en Windows) y nos dirigimos a http: // localhost: 8000 /, podremos ver la aplicación en ejecución. Para acceder a los archivos desde Windows, puede ejecutar el siguiente comando para abrir una ventana del Explorador de Windows en su directorio de trabajo actual:</p> <pre> explorer.exe .</pre> <p>     Desde aquí, podrás recoger las cosas y usar cualquier IDE en Windows (¡o incluso notepad.exe!) Que necesites usar para tu desarrollo.</p> </div> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mié, 08/03/2023 - 18:11</span> Wed, 08 Mar 2023 17:11:11 +0000 webmaster 266 at https://drupaladicto.com Configurar un entorno de desarrollo PHP para Symfony con Windows y WSL2 https://drupaladicto.com/actualidad/configurar-un-entorno-de-desarrollo-php-para-symfony-con-windows-y-wsl2 <span class="field field--name-title field--type-string field--label-hidden">Configurar un entorno de desarrollo PHP para Symfony con Windows y WSL2</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mié, 08/03/2023 - 18:06</span> <div class="field field--name-field-contenidos-post field--type-entity-reference-revisions field--label-visually_hidden"> <div class="field__label visually-hidden">Contenidos</div> <div class="field__items"> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1134" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p>     Ahora que ya sabemos <a href="/actualidad/como-instalar-drupal-9-usando-docker-en-windows-10-home">Cómo instalar una distribución Linux dentro de Windows 10 usando el WSL</a>, podemos pasar al siguiente nivel y explorar tantas opciones como nos hagan falta, para trabajar con cualquier proyecto, sin tener que cambiarnos de ordenador o trabajar con máquinas virtuales.</p> <p>     La idea es facilitarnos la vida y que podamos implementar todas las herramientas necesarias sin la necesidad de invertir demasiado tiempo en ello.</p> <p>     Por esta razón, hoy vamos a explicar cómo podremos configurar un entorno PHP para desarrollar un proyecto utilizando <a href="https://symfony.com/doc/current/index.html" target="_blank">Symfony</a>; uno de los Frameworks más potentes, robustos y seguros  que existen en el mercado.</p> <p><strong>     Aclaración antes de seguir</strong></p> <p>     Al momento de crear este artículo, existe <a href="https://github.com/microsoft/WSL/issues/4898">un conocido error</a> relacionado con el reloj en tiempo real con Ubuntu 20.04 y WSL2. Para evitar que surja este error, configuramos APT para congelar nuestra versión libc6 instalada a la de la distribución original emitiendo el siguiente comando:</p> <pre> sudo apt-mark hold libc6</pre> <p>     Tan pronto como hayamos ejecutado el anterior comando, podremos actualizar los paquetes de ubuntu ejecutando los siguiente:</p> <pre> sudo apt update</pre> <pre> sudo apt upgrade</pre> <p>     Lo próximo que instalemos son las dependencias centrales para ejecutar la plataforma eZ (y muchas otras aplicaciones Symfony):</p> <pre> sudo apt install composer php-xml php-intl php-gd php-curl php-fpm</pre> <p>     En la línea anterior, he omitido el servicio de base de datos para aclarar que la plataforma eZ es compatible con las bases de datos MySQL / MariaDB y PostgreSQL. ASí que podrás elegir lo que mejor se adapte a tus necesidades. En nuestro caso usaremos MariaDB para este tutorial. Instala el servidor MariaDB y la extensión PHP MySQL:</p> <pre> sudo apt install mariadb-server php-mysql</pre> <p>     Ya estamos listos para arrancar la instancia del servidor MariaDB e iniciar sesión como usuario root:</p> <pre> sudo service mysql start</pre> <pre> sudo mysql</pre> <p>     Vamos a añadir una base de datos para la plataforma eZ, Por lo que ejecutamos las siguientes declaraciones SQL:</p> <pre> CREATE DATABASE ezp; GRANT ALL ON ezp.* TO 'ezp'@'localhost' IDENTIFIED BY 'wsl2ezp'; FLUSH PRIVILEGES; EXIT;</pre> <p>     Y ahora comprobamos que podemos acceder a la base de datos:</p> <pre> mysql -uezp -pwsl2ezp ezp</pre> <p>     Ahora ya tenemos un entorno Linux con PHP, MariaDB y el administrador de paquetes Composer listo para funcionar:</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 34.47%;" data-ratio="34.47" data-b-token="b-648f1a924d1" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img class="img-fluid media__element b-lazy b-filter" data-entity-uuid="cb53b28d-5595-4943-8e59-401e09a5793d" data-responsive-image-style="" alt="comprobacion consola" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/comprobacion.png?itok=3-J-JoIr" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="882" height="304" typeof="foaf:Image" /></div></div> <p>     Ya que vamos a utilizar Symfony Encore para gestionar los activos de front-end, instalaremos el administrador de paquetes Yarn desde el repositorio del proyecto. De esta forma también instalará Node.js como dependencia:</p> <pre> curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt update sudo apt install yarn</pre> <h3>     Instalando el CLI de Symfony</h3> <p>     A estas alturas, puede que hayas notado que falta en el procedimiento de instalación anterior es la A en LAMP y la E en LEMP. En lenguaje sencillo: nuestra pila no tiene un servidor web instalado. Tradicionalmente, una pila PHP ha incluido un servidor web separado. Un servidor HTTP completo sigue siendo para instalaciones de producción, pero como estamos en desarrollo utilizaremos una opción más simple: Symfony Local Web Server</p> <p>     Symfony CLI es una aplicación de línea de comandos independiente que podremos instalar desde nuestra terminal WSL. Recuerda seguir las instrucciones de Linux, NO las de Windows:</p> <pre> wget https://get.symfony.com/cli/installer -O - | bash</pre> <p>     El código anterior lo instalará en nuestra carpeta de usuario, pero  podremos hacerlo disponible de forma global si ejecutamos el siguiente código, cambiando el NOMBRE DEL USUARIO por el tuyo:</p> <pre> sudo mv /home/nombre_usuario/.symfony/bin/symfony /usr/local/bin/symfony</pre> <p>     Ahora podemos verificar que nuestra pila está funcionando creando una nueva aplicación Symfony hello world y ejecutando el servidor web:</p> <pre> symfony new hola-mundo cd hola-mundo symfony serve</pre> <p>     Ha llegado el momento de abrir una ventana del navegador en <strong>http: // localhost: 8000 / </strong>para ver la aplicación en ejecución. La primera vez que lo ejecutes, es posible que Windows te pregunte si este tráfico está permitido. Ahora debería tener una aplicación Symfony básica ejecutándose en Windows usando WSL2 como se muestra en la captura de pantalla a continuación.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 45.77%;" data-ratio="45.77" data-b-token="b-d41f0f03931" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img class="img-fluid media__element b-lazy b-filter" data-entity-uuid="e3374cfa-56c1-43dd-b856-9de3b933077a" data-responsive-image-style="" alt="symfony funcionando correctamente" decoding="async" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/funcionando_symfony.png?itok=tFPN5lRW" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1300" height="595" typeof="foaf:Image" /></div></div> <p>     Para obtener más detalles sobre cómo configurar TLS, múltiples versiones de PHP, etc., diríjase a los <a href="https://symfony.com/doc/current/setup/symfony_server.html" target="_blank">documentos de Symfony</a>.</p> <h3>     Instalación de la Plataforma eZ y acceso a archivos</h3> <p>     El siguiente paso es instalar y ejecutar una aplicación Symfony completa. Esto funciona como en cualquier entorno Linux (¡porque es uno!). Así que vamos a <a href="https://doc.ezplatform.com/en/latest/getting_started/install_ez_platform/" target="_blank">instalar una copia de la plataforma eZ </a> y para ello utilizaremos. Éste se encargará de clonar los archivos desde el <a href="https://github.com/ezsystems/ezplatform" target="_blank">repositorio</a>, verificará por nosotros <a href="https://github.com/ezsystems/ezplatform/releases" target="_blank" title="">las actualizaciones disponibles</a> y a continuación instalar los paquetes necesarios usando:</p> <pre> composer create-project ezsystems/ezplatform ezplatform ^3 cd ezplatform</pre> <p>     Lo siguiente será instalar nuestra base de datos y para ello, necesitamos definir la configuración de la base de datos y ejecutar el instalador:</p> <pre> echo "DATABASE_URL=mysql://ezp:wsl2ezp@127.0.0.1:3306/ezp?serverVersion=10.3" &gt; .env.local composer run-script ezplatform-install</pre> <p>Cuando se haya completado el proceso de instalación,  podremos ingresar al directorio del proyecto e iniciar el servidor web Symfony:</p> <pre> symfony serve</pre> <p>     El resultado mostrará que el servidor web Symfony detecta y usa la copia instalada de PHP-FPM:</p> <p>     Ahora, si abrimos un navegador (en Windows) y nos dirigimos a http: // localhost: 8000 /, podremos ver la aplicación en ejecución. Para acceder a los archivos desde Windows, puede ejecutar el siguiente comando para abrir una ventana del Explorador de Windows en su directorio de trabajo actual:</p> <pre> explorer.exe .</pre> <p>     Desde aquí, podrás recoger las cosas y usar cualquier IDE en Windows (¡o incluso notepad.exe!) Que necesites usar para tu desarrollo.</p> </div> </div> </div> </div> </div> </div> <div class="field field--name-field-categoria-post field--type-entity-reference field--label-above"> <div class="field__label">Categoría</div> <div class="field__items"> <div class="field__item"><a href="/categoria/symfony" hreflang="es">symfony</a></div> <div class="field__item"><a href="/categoria/servidor" hreflang="es">servidor</a></div> <div class="field__item"><a href="/categoria/lamp" hreflang="es">lamp</a></div> <div class="field__item"><a href="/categoria/apache" hreflang="es">apache</a></div> <div class="field__item"><a href="/categoria/php" hreflang="es">php</a></div> <div class="field__item"><a href="/categoria/mysql" hreflang="es">mysql</a></div> <div class="field__item"><a href="/categoria/server" hreflang="es">server</a></div> <div class="field__item"><a href="/categoria/local" hreflang="es">local</a></div> <div class="field__item"><a href="/categoria/desarrollo" hreflang="es">desarrollo</a></div> <div class="field__item"><a href="/categoria/development" hreflang="es">development</a></div> <div class="field__item"><a href="/categoria/entornos" hreflang="es">entornos</a></div> <div class="field__item"><a href="/categoria/linux" hreflang="es">linux</a></div> <div class="field__item"><a href="/categoria/console" hreflang="es">console</a></div> <div class="field__item"><a href="/categoria/consola" hreflang="es">consola</a></div> <div class="field__item"><a href="/categoria/ubuntu" hreflang="es">ubuntu</a></div> </div> </div> Wed, 08 Mar 2023 17:06:43 +0000 webmaster 265 at https://drupaladicto.com