Desarrollo práctico 2: Entorno de Trabajo

Escrito por | 01 Mayo 2014 | Publicado en Mayo 2014
Este es el segundo de una serie de artículos sobre el desarrollo práctico, donde se toca el tema del entorno de trabajo en el desarrollo de Joomla.

Configuración del entorno de trabajo y las herramientas 

vg swdev 0000 setupDefinir una estructura (directorio), con "los directorios de proyectos" permite múltiples proyectos/sitios en su flujo de trabajo. Un directorio de proyecto será la ubicación central para todos los datos relacionados con un proyecto, facilitando archivar proyectos o transferirlos a un sistema diferente.

Utilice un soft-linking (también para windows) de archivos y directorios, logrando que los archivos fuera del “directorio del proyecto”, estén disponibles dentro del “directorio del proyecto”. Este sistema, básicamente, ofrece múltiples lugares para acceder al mismo archivo.

Al finalizar, se debería ser capaz de crear una configuración de desarrollo con una o más instalaciones paralelas de XAMPP, y múltiples proyectos independientes. Cada proyecto será accesible de forma local a través de su nombre único en el navegador.

Tendremos que: 

  • Configurar el directorio de proyectos (estructura de carpetas)
  • Instalar XAMPP para tener un servidor local con Apache, PHP y MySQL
  • Configurar el sistema y el servidor Apache para el alojamiento virtual
  • Ajustar nuestra configuración mediante "enlaces(sof-linking)" 

El Directorio de Proyectos

La organización de nuestros proyectos gira en torno a los directorios de proyectos para gestionar el directorio del proyecto. Una estructura definida nos permite mantener todos nuestros datos del proyecto en "un" lugar, donde las convenciones de nomenclatura hacen que sea fácil para nosotros (y cualquier herramienta que empleamos) encontrar su camino. Mediante el uso de referencias relativas, podemos ser agnóstico de la plataforma del sistema operativo utilizado (Windows, Linux, Mac). De esta manera usted puede mover su proyecto entre los sistemas y archivarlo, moviendo el directorio base del proyecto con todos los datos pertinentes en el mismo.

Para describir la estructura de directorios de los proyectos vamos a utilizar convenciones de nomenclatura. Cualquier nombre entre “#...#” son variables que usted puede utilizar (se van a "reemplazar" en dependencia de su configuración.

La propuesta de configuración básica se ve así: 

##PROYECTOS##/[aplicaciones]
          /[archivados]
          /local.##DOMINIO##/www
          |          /logs
          |          /backup
          |          /parches
                    /logs
                     /backup

Y para la herramienta XAMPP:

##INSTALACION_XAMPP##/apache/conf
              /php
              /mysql

##INSTALACION_XAMPP## sería el directorio de instalación de XAMPP.

##PROYECTOS## es la base o la raíz de la estructura de directorios de proyectos utilizado para almacenar todos los proyectos.

En mi caso, he definido "d:/virtualhosts/" como mi directorio de proyectos. 

##DOMINIO## es el nombre de dominio para los respectivos proyectos (se explica con más detalle más adelante). Entonces tendremos directorios bases para los proyecto de la siguiente forma ##PROYECTOS##/local.##DOMINIO##

Vamos a ampliar en esta estructura en esta serie de artículos y añadir detalles a medida que avanzamos. Al final, deberías de ser capaz de construir una estructura adecuada para tus necesidades. 

XAMPP

Es una de las opciones disponibles para ejecutar un servidor web local, MySQL y PHP en windows (y en otras plataforma). Su funcionamiento básico e instalación son cubiertos ampliamente en toda la red de redes por lo que no lo explicaremos aquí. 

Las instalaciones paralelas de XAMPP

Por lo general se recomienda utilizar la última versión, pero si estás trabajando con Joomla (o cualquier plataforma con requisitos específicos) es posible que desee utilizar alguna versión en particular. Es posible ejecutar diferentes versiones de XAMPP en paralelo. Seleccione las versiones de XAMPP con versiones de Apache, MySQL y PHP que son de tu interés para instalarlas en paralelo.

Por ejemplo, si se busca por versiones de php: 

1.7.7 última versión XAMPP con php 5.3       (5.3.8) 
1.8.2-1 última versión XAMPP con php 5.4.x (5.4.16)
1.8.3-0 primera versión XAMPP con php 5.5 (5.5.1)

Puedes instalar cualquier combinación en paralelo, ¡pero por lo general tienes uno solo activo!

En mi configuración actual tengo dos instalaciones, una con PHP 5.4 (predeterminada) y una versión con la última versión de PHP 5.3 para usar en cuestiones de Joomla! 1.5. Puedes, sin embargo, también consideran PHP 5.5 para algunas pruebas. 

Lugares de instalación del XAMPP

Eres libre de instalar XAMPP en cualquier lugar, siempre y cuando sepa donde. Para nuestro ejemplo anterior de PHP 5.4 y PHP 5.3 he instalado respectivamente: 

C:\Portable\XAMPP
C:\Portable\XAMPP-php53

Entonces, estas direcciones son las que irían en ##INSTALACION_XAMPP##

Configuración de nombre basado en el alojamiento

Nosotros debemos de ser capaces de trabajar en varios sitios en paralelo. Por lo que cada sitio se ejecutará en su propia máquina virtual, y se "comportará" como un sitio real con su propio nombre (nombre de dominio). Esto no es sólo un enfoque limpio, sino que va a ser necesario cuando llegamos posteriormente a la parte de la depuración de esta serie.

Para lograr esto tenemos que configurar el nombre basado en el hosting y tenemos que configurar un archivo llamado hosts, una configuración de host virtual para Apache, y finalmente los archivos de configuración vhosts para cada uno de sus proyectos. 

Archivos hosts

Para visualizar este archivo de hosts, hagamos la analogía con un teléfono. Cuando el navegador tiene que conectarse a un sitio web, tiene que buscar el número del teléfono del sitio a través de su nombre en la guía telefónica. A nivel local y para fines de prueba su archivo de hosts local actúa como esa guía telefónica.

Un servidor que se ejecuta en su propia computadora es típicamente accesible a través de la dirección IP 127.0.0.1. Ahora podemos vincular esa dirección IP a varios diferentes nombres de sitios web mediante su inclusión en el archivo hosts. Ahora, el navegador puede usar el nombre del sitio para conectarse. Por ejemplo, introduciendo http://local.joomla.org en la barra de direcciones.

En las máquinas de Linux, el archivo hosts se puede encontrar en /etc/hosts. En las máquinas de Windows es más oculto. Véase la entrada en la wikipedia Archivo hosts para más detalles sobre la ubicación del archivo hosts. Personalmente yo uso una sencilla utilidad llamada Editor de Archivos de Hosts de Windows que necesita ser ejecutado como administrador para poder guardar el archivo hosts. 

Nomenclatura del sitio, añadiendo entradas al archivo de hosts

El uso de algún tipo de convención de nomenclatura para sus sitios en desarrollo, preferentemente relacionada con el de producción, le hará la vida más fácil a largo plazo. Como convención, yo sugiero tomar el nombre del dominio del sitio en construcción (producción), sin las www.

Los sitios web que se ejecutan en su equipo local sus nombres comenzaran con local. (local.joomla.org). Y un sitio de desarrollo externo compartido, su nombre comenzarán con dev. (dev.joomla.org). Usando esta convención también ayuda cuando se utilizan herramientas para recordar contraseñas como KeePass o LastPass.

Nos referiremos al nombre del dominio de su sitio de producción como ##DOMINIO## y la designación local o dev como ##SUB##.

Por ejemplo, el sitio de producción joomla.org tendría un local.joomla.org (local.##DOMINIO##) y las entradas en el archivo host sería: 

127.0.0.1 local.joomla.org
127.0.0.1 www.local.joomla.org

Para el desarrollo de colaboración compartida elegiríamos dev.joomla.org (dev.##DOMINIO## ). Este sitio estaría alojado en un servidor externo (sino en su propia computadora). Con el fin de acceder al servidor "dev" " o bien lo añadimos a nuestro archivo de hosts local, o más preferiblemente, se agrega al DNS del DOMINIO mediante la adición de unos registros similares a los del archivo hosts, en el archivo de zona. Además, la edición del archivo de zona, no existe una sola manera de hacerlo, pero la mayoría de los proveedores de hosting ofrecen cPanel o alguna otra interfaz web para añadir fácilmente unos registros. Tener el sitio "dev" establecido en el DNS permite de manera fácil, el compartir los avances con el cliente. Cuando esté experimentando, asegúrese de establecer inicialmente el tiempo de vida (TTL) para los registros en un valor bajo, para garantizar que sus cambios se propaguen rápidamente.

Configuración del Apache

Ahora tenemos la nomenclatura y la búsqueda de nombres configurada, todavía tenemos que decirle al servidor web Apache en XAMPP, cómo queremos que ese sitio sea manipulado y dónde encontrar el contenido. La ubicación:

##INSTALACION_XAMPP##/apache/conf 

contendrá los archivos de configuración utilizados por Apache. Los archivos que se van a modificar son extra/httpd-vhosts.conf y httpd.conf.

extra/httpd-vhosts.conf

##INSTALACION_XAMPP##/apache/conf/extra/httpd-vhosts.conf

Primero tenemos que permitir "hosts virtuales basados ​​en nombre" en el servidor web Apache (XAMPP). Descomentamos (eliminamos los “##”) la línea: 

##NameVirtualHost *:80
NameVirtualHost *:80

Eso es todo lo que hay que hacer, para tener acceso a las aplicaciones originales de "XAMPP" a través de un host virtual llamado "XAMPP", donde la raíz del documento sería "##INSTALACION_XAMPP##/htdocs". Opcionalmente, agregue lo siguiente al final de httpd-vhosts.conf (reemplazando ##INSTALACION_XAMPP## con su ubicación): 

<VirtualHost *:80>
     ServerName XAMPP
     DocumentRoot "##INSTALACION_XAMPP##/htdocs"
</VirtualHost>

Definir los host virtuales: sites-available, sites-enabled

A continuación vamos a crear los host virtuales para su uso en el servidor web, donde cada archivo vhost define la configuración específica para ese sitio web. Podríamos haber añadido toda nuestra configuración de los host virtuales a httpd-vhosts.conf, pero estamos tomando un enfoque basado en la estructura que se usa en "debian". Crearemos archivos individuales ##DOMINIO##.conf para los sitios web respectivos (host virtuales / dominios).

Estos archivos de configuración se almacenarán y se controlan desde las carpetas sites-available y sites-enabled

sites-available

##INSTALACION_XAMPP##/apache/conf/sites-available

El directorio sites-available mantendrá a todos los archivos ##DOMINIO##.conf en los cuales estamos trabajando. Este directorio tiene que ser creado. Tenga en cuenta que la activación real de los host virtuales viene después.

Según lo establecido en la sección de la estructura del trabajo, queremos organizar todos nuestros host virtuales en un solo lugar llamado ##PROYECTOS##. Así que para un solo sitio tendríamos:

##PROYECTOS##/##SUB##.##DOMINIO##

Por ejemplo, pudiéramos tener: 

D:\VirtualHost\local.joomla.org\www
            |               \logs
            \local.joomla3\www
                    \logs

Ahora los archivos vhost.conf que tenemos que crear para cada proyecto tiene que hacer referencia a los directorios de trabajo: 

<VirtualHost *:80>
     ServerName ##SUB##.##DOMINIO##
     ServerAlias www.##SUB##.##DOMINIO##
     DocumentRoot "##PROYECTOS##/##SUB##.##DOMINIO##/www"
     ErrorLog "##PROYECTOS##/##SUB##.##DOMINIO##/logs/error.log"
     CustomLog "##PROYECTOS##/##SUB##.##DOMINIO##/logs/access.log" combined
     <Directory "##PROYECTOS##/##SUB##.##DOMINIO##/www">
          Options Indexes FollowSymLinks Includes ExecCGI
          AllowOverride All
          # Order allow,deny
          # Allow from all
          Require all granted
     </Directory>
</VirtualHost>

En estas configuraciones los directorios www y logs son obligatorios. Es necesario que los crees como subdirectorios de ##PROYECTOS##/##DOMINIO##. Si no lo haces el XAMPP no arrancara.

Cuando el archivo vhost.conf se completa queda de la siguiente forma: 

<VirtualHost *:80>
     ServerName local.joomla.org
     ServerAlias www.local.joomla.org
     DocumentRoot "D:\VirtualHost\local.joomla.org\www"
     ErrorLog "D:\VirtualHost\local.joomla.org\logs\error.log"
     CustomLog "D:\VirtualHost\local.joomla.org\logs\access.log" combined
     <Directory "D:\VirtualHost\local.joomla.org\www">
           Options Indexes FollowSymLinks Includes ExecCGI
           AllowOverride All
           Require all granted
     </Directory>
</VirtualHost>

sites-enabled

##INSTALACION_XAMPP##/apache/conf/sites-enabled

Ahora sabemos (de sites-available) los host virtuales con los que podemos trabajar y la forma en que se establecen como disponibles. Ahora vamos a definir en los que en realidad estamos trabajando. El directorio sites-enabled contiene una selección de los archivos de sites-available, para los host virtuales que realmente están en uso.

Copia cualquier archivo vhost.conf en este directorio, o preferiblemente, cree un enlace simbólico desde la ubicación "sites-available".

En Debian esto es manejado por los comandos a2ensite y a2dissite. En Windows es necesario que se haga a mano o con el ratón :) (véase más adelante la sección sobre linking). 

Después que un sitio está habilitado, asegúrese de reiniciar su servidor web apache con el panel de control de XAMPP. Si no utiliza XAMPP, consulte la documentación sobre cómo hacer esto. 

httpd.conf

##INSTALACION_XAMPP##/apache/conf/httpd.conf

Con todos los archivos vhost.conf en la ubicación sites-enabled, todavía tenemos que decirle a Apache al respecto, así podran ser utilizados. Para ello se tiene que modificar el archivo httpd.conf. Busque la sección:

# Virtual hosts
Include "conf/extra/httpd-vhosts.conf"

y agregue la línea:

Include "conf/sites-enabled/*"

Linking

El soft-linking de los archivos y directorios es un concepto conocido en Linux. Esta vinculación permite hacer referencia a un único archivo / carpeta desde varias ubicaciones.

Contrariamente a la creencia común, esta técnica también está disponible como nativo en las versiones recientes de Windows mediante el comando mklink.exe. Dentro de las formas de hacerlo se incluyen:

Softllink - referencia transparente a otro archivo, a través del "nombre del archivo".
Hardlink - referencia a otro archivo (referenciando su contenido).
Junctions - es lo mismo que softlink, pero esta vez a las carpetas.

Para una debate con mayor profundidad vea http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html (Inglés). Aquí puede descargar hardlinkshellext que es una herramienta que permite la fácil creación de todo tipo de enlaces usando el "explorador".

Desafortunadamente no todas las aplicaciones están preparadas para manejar enlaces. En esta serie de artículos vamos a utilizar enlaces donde sea posible para hacer la vida más fácil. Tenga en cuenta que pueden existir restricciones debido al nivel de apoyo de las herramientas pertinentes.

Truco para los Enlaces

Para mantener la organización aún más ordenada podemos mover el "sites-enabled" y "sites-available" al directorio de ##PROYECTOS##/[aplicaciones] para mantenerlo en el directorio de proyectos.

Para evitar la duplicidad con múltiples instalaciones de XAMPP, puede ser necesario crear un directorio que refleje la versión del XAMPP. Por ejemplo:

##PROYECTOS##/[aplicaciones]/xampp173/sites-enabled:

##PROYECTOS##/[aplicaciones]/xampp177/sites-available
                          |        /sites-enabled
                            /xampp183/sites-available
                                     /sites-enabled

Una vez hecho esto en Windows, un junctions se puede utilizar para enlazar el directorio sites-enabled con el contexto de XAMPP.

##PROYECTOS##/[aplicaciones]/xampp177/sites-available
                              /sites-enabled =J> ##INSTALACION_XAMPP##/apache/conf/sites-enabled

Tenga en cuenta que en esta configuración (mediante junctions) en Windows, necesita copiar los archivos vhost.conf de ##PROYECTOS##/[aplicaciones]/xampp177/sites-available para ##PROYECTOS##/[aplicaciones]/xampp177/sites-enabled. Desafortunadamente soft-linking no funciona en las junctions . Nos ocuparemos de esto cuando llegamos al artículo “Desarrollo - artículos instalables y otras tareas”.

Cuando terminemos, nos quedamos con los vhost.conf en sitios que están fácilmente "disponibles” para tareas de automatización.

Visto 6776 veces Etiquetado como Spanish, Desarrollador
Carlos Rodriguez

Carlos Rodriguez

Me apasiona el desarrollo web, y todo lo hermoso y misterioso que conlleva esto.  

Perfiles Sociales