Crear un entorno adecuado para desarrollar proyectos Symfony es casi tan sencillo como la instalación del sandbox. De hecho, se va a explicar la versión simplificada del proceso de instalación ya que es equivalente a la instalación del sandbox.
La principal diferencia es que en este caso nos vamos a centrar en la configuración necesaria para que la aplicación web pueda ser accedida desde cualquier lugar de Internet.
Al igual que el sandbox, el proyecto Symfony viene preconfigurado para utilizar SQLite como base de datos, que ya se instaló y configuró en las secciones previas de este capítulo.
11.6.1. Descargar, crear el directorio y copiar los archivos
Cada versión de Symfony se puede descargar mediante un archivo .zip
para
poder crear después cada proyecto desde cero.
Descarga el archivo de Symfony desde su sitio web y extrae sus contenidos en un directorio temporal, como por ejemplo el directorio "downloads".
Ahora debemos crear el directorio definitivo donde residirán las librerías de Symfony. Este paso es ahora un poco más complicado que para el sandbox.
11.6.2. Estructura de directorios
A continuación se crea la estructura de directorios del proyecto. Si se comienza
por la raíz de la unidad D:
por ejemplo, se crea un directorio llamado \dev
y después otro directorio llamado sfproject
:
D: MD dev CD dev MD sfproject CD sfproject
Ahora ya nos encontramos en D:\dev\sfproject
y a partir de aquí se completa el
resto de la estructura creando los directorios lib
, vendor
y symfony
de
forma consecutiva y en cascada:
MD lib CD lib MD vendor CD vendor MD symfony CD symfony
Ahora ya nos encontramos en el directorio: D:\dev\sfproject\lib\vendor\symfony
Selecciona todos los archivos descomprimidos en el directorio temporal y
cópialos en el directorio D:\dev\sfproject\lib\vendor\symfony
. Verás que se
están copiando 3819 archivos en el directorio de destino:
11.6.3. Creación e inicialización
Abre la consola de comandos, dirígete al directorio D:\dev\sfproject
y ejecuta
el siguiente comando:
PHP lib\vendor\symfony\data\bin\symfony -V
El resultado del comando anterior debería ser el siguiente:
symfony version 1.3.0 (D:\dev\sfproject\lib\vendor\symfony\lib)
Para inicializar el proyecto, ejecuta el siguiente comando:
PHP lib\vendor\symfony\data\bin\symfony generate:project sfproject
El resultado del comando anterior es una serie de operaciones sobre los archivos
y directorios, incluyendo varios comandos de tipo chmod 777
:
Desde la misma consola de comandos, crea una nueva aplicación de Symfony mediante el siguiente comando:
PHP lib\vendor\symfony\data\bin\symfony generate:app sfapp
Una vez más deberías ver una lista de operaciones sobre archivos y directorios,
incluyendo varias operaciones de tipo chmod 777
.
A partir de ahora, en vez de teclear PHP lib\vendor\symfony\data\bin\symfony
cada vez que ejecutes un comando, puedes copiar en este directorio el archivo
symfony.bat
:
copy lib\vendor\symfony\data\bin\symfony.bat
Ahora se dispone de un atajo para ejecutar todos los comandos de Symfony desde
el directorio D:\dev\sfproject
. De hecho, ejecuta el siguiente comando desde
el directorio D:\dev\sfproject
:
symfony -V
Si todo funciona bien, deberías ver exactamente el mismo resultado que antes:
symfony version 1.3.0 (D:\dev\sfproject\lib\vendor\symfony\lib)
11.6.4. Creando la aplicación web
Las siguientes secciones asumen que has leído la parte anterior de este capítulo en la que se explica cómo hacer que el "Default Web Site" no interfiera en el puerto 80 del servidor web.
11.6.4.1. Añadir un nuevo sitio web para el proyecto
Accede a las Administration Tools para abrir el IIS Manager. En la columna
de la izquierda, pulsa el botón derecho sobre el icono "Sites". Selecciona la
opción "Add Web Site" e introduce "Symfony Project" como nombre del sitio
web, D:\dev\sfproject
como valor de la opción "Physical Path" y deja todos
las demás opciones sin cambiar:
Pincha sobre el botón OK. Si se muestra una pequeña x
en el icono del sitio
web (dentro de Features View / Sites) puedes hacerla desaparecer pinchando
sobre el "Restart" que se muestra a la derecha.
11.6.4.2. Comprobar si el sitio web responde
Selecciona el sitio "Symfony Project" en el IIS Manager y en la columna derecha pincha sobre la opción "Browse *.80 (http)".
Seguidamente verás el mismo mensaje de error que se producía al realizar la misma operación sobre el sandbox:
HTTP Error 403.14 - Forbidden
Al igual que en el caso del sandbox, el servidor web está configurado para no mostrar un listado de los contenidos del directorio.
Accede con tu navegador a la URL http://localhost/web
para ver la famosa página
"Symfony Project Created", aunque en este caso existe una pequeña diferencia
respecto al sandbox ya que no se ve ninguna imagen:
Las imágenes no se muestran por pantalla, pero se encuentran en un directorio
llamado sf
dentro de la librería de Symfony. Hacer que se vean es muy sencillo,
ya que solamente hay que crear un directorio virtual en /web
llamado sf
y
que apunte a D:\dev\sfproject\lib\vendor\symfony\data\web\sf
.
Después de realizar los cambios anteriores, ya puedes ver las imágenes en la página "Symfony Project Created":
Ahora la aplicación Symfony completa ya está funcionando. Para comprobarlo,
accede con un navegador a la URL de la aplicación en http://localhost/web/sfapp_dev.php
:
Antes de concluir, podemos realizar una última comprobación en local: observa los paneles "configuration", "logs" y "timers" de la barra de depuración web para asegurar que el proyecto es completamente funcional.
11.6.5. Configurar la aplicación para que se pueda acceder desde Internet
Al igual que el sandox, el proyecto de Symfony ya funciona bien en local, por
lo que sólo se puede acceder desde http://localhost
o http://127.0.0.1
. A
continuación se configura para que se pueda acceder desde cualquier lugar de
Internet.
La configuración por defecto del proyecto impide que la aplicación se pueda
ejecutar desde un lugar remoto, aunque en principio debería permitirse ejecutar
tanto el archivo index.php
como sfapp_dev.php
. Si accedes al proyecto desde
el servidor web mediante la IP externa del servidor virtual dedicado (por ejemplo
94.125.163.150
) o mediante su nombre completo (por ejemplo 12543hpv163150.ikoula.com
).
También puedes probar esas direcciones desde el propio servidor, ya que no están
mapeadas al 127.0.0.1
:
Anteriormente se comentó que sería posible acceder a index.php
y sfapp_dev.php
desde un lugar remoto. No obstante, la ejecución de sfapp_dev.php
falla porque
por defecto no es posible su acceso remoto. Se trata de una medida de seguridad
para impedir que los usuarios maliciosos puedan tener acceso al entorno de
desarrollo, que contiene información potencialmente sensible sobre tu proyecto.
Aunque puedes editar el archivo sfapp_dev.php
para permitir el acceso remoto,
te recomendamos encarecidamente que no lo hagas nunca bajo ninguna circunstancia.
El último paso consiste en simular un nombre de dominio real mediante la configuración del archivo "hosts". Este archivo realiza la resolución local de nombres sin tener que instalar el servicio DNS de Windows, que está disponible en todas las ediciones de Windows Server 2008 R2 y también en las ediciones Windows Server 2008 Standard, Enterprise y Datacenter.
En los sistemas operativos tipo Windows x64, el archivo hosts
se encuentra en:
C:\Windows\SysWOW64\Drivers\etc
Inicialmente el archivo hosts
incluye la información necesaria para que el
servidor pueda resolver localhost
a 127.0.0.1
en IPv4 y a ::1
en IPv6.
A continuación se añade un nombre de dominio válido pero falso, como por ejemplo
sfwebapp.local
y se resuelve como el propio servidor local.
El proyecto Symfony ya se puede acceder remotamente, sin necesidad de DNS, a través de cualquier navegador instalado en el propio servidor web.