MENU

sábado, 14 de julio de 2012

Instalar Zend Framework en Ubuntu 12.04 y VirtualHost de Apache



Teniendo ya instaldo apache, php5 y todo el entorno funcionando, solo no hace falta entonces instalar el zend framework que es lo que queremos.

sudo apt-get install zend-framework

Bien, con esto ya tenemos las librerías en el sistema pero no hacemos nada con esto. Tenemos que configurar el lugar o proyecto donde vamos a trabajar (nuestro sitio hecho con zend framework). Hay varias formas de configurar apache y el sistema pero aquí voy a comentar la forma que a mi me gusta mas. Yo prefiero hacer un host virtual por proeycto que se me ocurra hacer. El nombre de este host puede ser incluso el que va a tener cuando este al aire, por ejemplo: misitiozend.com
Y si vamos a programar en el mismo lugar donde esta nuestro apache recomiendo empezar por editar el archivo hosts del sistema.

sudo gedit /etc/hosts

En el archivo debemos agregar una linea debajo de la que dice localhost, esta es para el nombre que va a llevar nuestro proyecto

127.0.0.1    misitiozend.com

Si probamos en el navegador a poner misitiozend.com veremos el famoso "It Works !" de cuando recién instalamos apache.

Para hacer y manejar los proyectos de Zen uso la herramienta que ellos sugieren (Zend Studio). Es sencillo, vamos a File->New->Proyect.. Se no abre un asistente con un árbol de opciones, tenemos Examples->Zend Framework->Zend Framework example project. Le damos a Next y no da a elegir si queremos guardar el proyecto en la ruta por defecto o si preferimos definirla nosotros, a mi me gusta esta ultima opción para controlar mejor donde tengo las cosas. Debemos definir un nombre también es esta parte, misitiozend.com por ejemplo. Con Finish el programa crea toda la estructura de directorios y lo necesario para trabajar, hay otras herramientas gratuitas que puede hacer lo mismo.



Bien , fantástico hasta aquí genial. Ahora el tema que tenemos es que, si bien aparece algo cuando ponemos misitiozend.com en el navegador no es lo que se acaba de crear en el Zend Studio o programa elegido. Bueno, lo que pasa es que esto se lo tenemos que decir a nuestro amigo Apache. Recordemos que el servicio de apache esta a la escucha en el puerto 80 (http) y por lo tanto puede saber cuando viene una petición por misitiozend.com (por poner un ejemplo) y redireccionar a un determinado directorio, pero si no hay nada definido nos va a llevar a los que esta por defecto (localhost). Ok, veamos como enseñarle a Apache a realizar esta tarea.

sudo gedit /etc/apache2/sites-available/misitiozend.com

Esto nos abre un texto en blanco y según la documentación de ZendFramework es necesario poner algo como esto para nuestro apache:

<virtualhost *:80>
ServerName misitiozend.com
ServerAlias misitiozend.com
DocumentRoot "/home/gabriel/Documentos/Proyectos/empresa/public/"
SetEnv APPLICATION_ENV "production"
<directory "/home/gabriel/Documentos/Proyectos/empresa/public/">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</directory>
</virtualhost>


Bien, aclaremos un poco que es esto, En ServerName debe ir si o si el nombre de nuestro sitio web. En DocumentRoot la ruta exacta donde esta ubicado el proyecto y especificamente donde se encuentra el index.php de partida que por defecto el Zend Studio lo mete en una carpeta llamada public. La linea SetEnv APPLICATION_ENV define el entorno de programación que es muy útil pero de lo cual es necesario hablar a parte.

Ok, con esto uno podría decir, bueno ya esta ! pues no, so lo probamos nos daremos cuenta de que no. Primero una vez creado el archivo del que hablamos es necesario activarlo porque por el momento esta como "disponible" para hacerlo apache tiene un comandando especial.

sudo a2ensite misitiozend.com

Que lo que hace en realidad es hacer un enlace simbólico (como un acceso directo) en la carpeta:  /etc/apache2/sites-enabled.
Ok, pero faltan algunas cosas todavía, resulta que los proyectos de ZemdFramework funcionan con el módulo MOD_REWRITE en modo activado y para esto es necesario hacer:

sudo  a2enmod rewrite

Pero aun así, haciendo la prueba no veremos nada en el navegador, ni siquiera un error ! y es que tenemos desactivada la opción de mostrar errores en el php.ini

sudo gedit /etc/php5/apache2/php.ini

Buscamos la linea display_errors y la ponemos en On así: display_errors = On
De esta forma si reiniciaramos el apache y todo veríamos un error como este:

Warning: require_once(Zend/Application.php): failed to open stream: No such file or directory in /home/gabriel/Documentos/Proyectos/empresa/public/index.php on line 17 Fatal error: require_once(): Failed opening required 'Zend/Application.php' (include_path='/home/gabriel/Documentos/Proyectos/empresa/library:.:/usr/share/php:/usr/share/pear') in /home/gabriel/Documentos/Proyectos/empresa/public/index.php on line 17

Es que no le hemos definido a PHP donde va a estar ubicada la librería de zendframework. Por fortuna al instalar el paquete de zend-framework el archivo necesario fue creado pero no activado. Para eso hay que editar el siguiente archivo:

sudo gedit /etc/php5/conf.d/zend-framework.ini

Debemos descomentar una linea como esta
;include_path=${include_path} ":/usr/share/php/libzend-framework-php"
Le quitamos el ";" que esta por delante y guardamos.
Ahora si con esto solo no estaria haciendo falta reinicira el apache para que todos los cambios surtan efecto:

sudo service apache2 restart

Probando en el navegador con misotiozend.com debería aparecer el demo que nos trae ZendStudio.










No hay comentarios:

Publicar un comentario