Instalación avanzada de CakePhp en servidor Linux para producción

A muchos de  los que estamos utilizando este Framework para php, una vez  hemos realizado el desarrollo de nuestra aplicación (normalmente en servidor local), nos inquieta eso de tener en el mismo directorio web, para producción, las carpetas  /cake, /app  y /webroot.

En teoría no debe haber problema ya que los .htaccess redirigen todo perfectamente, pero nos sentimos más “seguros” si tenemos separadas las carpetas propias de la aplicación. Así también evitamos tener que crear restricciones en los archivos robots.txt.

También es bueno tener separadas las cosas a la hora de hacer cambios en nuestra aplicación, más por cuestión de orden que otra cosa.

Bueno, menos cháchara y más acción:

La forma de instalar nuestra aplicación para producción con carpetas o directorios separados variará dependiendo de si tenemos acceso total  al servidor o si solo tenemos acceso a nuestro dominio.

En  el primer caso (acceso total al servidor):

En este ejemplo vamos a utilizar servidor Linux Debian + Plesk 10.

Como ya sabemos tenemos tres partes en la aplicación (no es el caso de explicar cada directorio, se supone que ya sabes esto).

Vamos a poner la carpeta cake en  /usr/share/php, quedando así: /usr/share/php/cake
Dale permisos usuario= root  y grupo= psaserv

Ponemos el contenido de app en /home/miusuario/, quedando de esta forma  /home/loquesea/app  (recuerda que puedes cambiar el nombre de esta carpeta sin problemas, por ejemplo “webprueba”, quedando así: /home/loquesea/webprueba)

Dale permisos usuario= root  y grupo= psaserv (no te olvides de los permisos de escritura de la carpeta tmp)

Ahora solo nos queda poner el contenido de webroot en el directorio web de nuestro dominio, dentro de/ httpdocs.

Todo esto nos ha quedado de esta forma:
– Directorio cake:   /usr/share/php/cake
Directorio app: /home/miusuario/webprueba
Directorio webroot: /httpdocs

Ya tenemos todo separadito, pero ahora hay que hacer que la aplicación sepa donde esta cada cosa por que como imaginarás sino no funcionará.
Pues aquí viene lo más divertido, ve a httpdocs y edita el archivo index.php, allí cambiaremos algunas cosas: (esto puede variar según la versión que uses, pero verás que en cualquier caso hay que definir los “nombres” y las “rutas” de cada parte de la aplicación).

/**
* The full path to the directory which holds “app”, WITHOUT a trailing DS.
*
*/
if (!defined(”ROOT”)) {
define(”ROOT”,  DS . ”home” . DS . ” miusuario ”); // indicamos donde esta la carpeta app
}
/**
* The actual directory name for the “app”.
*
*/
if (!defined(”APP_DIR”)) {
define(”APP_DIR”, ” webprueba ”); // indicamos como se llama la carpeta app.
}
/**
* The absolute path to the “cake” directory, WITHOUT a trailing DS.
*
*/
if (!defined(”CAKE_CORE_INCLUDE_PATH”)) {
define(”CAKE_CORE_INCLUDE_PATH”,  DS . ”usr” . DS . ”share” . DS . ”php”); // indicamos donde esta el directorio cake.
}

/**

Con esto nuestra aplicación debería ya funcionar, pero aún nos falta un pequeño toque:

Nos vamos al directorio de nuestro dominio: /var/www/vhosts/dominio.com, concretamiente al directorio conf: /var/www/vhosts/dominio.com/conf, creamos un archivo (si no existe ya) llamado vhost.conf y escribimos en el lo siguiente:

<Directory /var/www/vhosts/dominio.com/httpdocs>
php_admin_flag safe_mode off
php_admin_value open_basedir none
php_admin_value include_path “.:/home/ miusuario/webprueba “
</directory>

Lo importante es la última línea, las otras las omites si no las necesitas (pero te aseguro que no vienen mal).

Guardamos y reiniciamos el servicio /usr/local/psa/admin/sbin/websrvmng -u –vhost-name=dominio.com

Y  reiniciamos apache   apachectl restart

De esta forma debe de funcionar todo, sin problemas. En su caso mira los logs de Apache y/o los errores dentro de la carpeta /statistics/logs/error_log    de tu dominio.

– En el caso de no tener acceso al servidor, la solución que se me ocurre es la siguiente (para el caso de plesk) poner las carpetas o directorios de cake y app  dentro del directorio private que hay en tu dominio y al que tienes acceso mediante ftp.

Luego editas el archivo index.php e indicas las rutas de cake y de app (normalmente /var/www/vhosts/dominio.com/private/app y /var/www/vhosts/dominio.com/private/cake)

No te olvides que has de poner  . DS .  en vez de la “barrita /”.

Podrás crear igualmente el archivo vhost.conf y poner php_admin_value include_path “.:/var/www/vhosts/dominio.com/private/app ”
Esto supondrá que debes pedir a tu proveedor o al administrador del servidor que reinicie tu servicio y apache para que los cambios funcionen.

Notas adicionales:

Separar los directorios de cakephp nos servirá entre otras cosas para poder actualizar el core de nuestro cake de una forma más segura.

Lo bueno de esta práctica es que podemos tener varias carpetas de cake, con las distintas versiones y/o actualizaciones.

En nuestro caso, en turianet, tenemos desde la versión 1.1, la 1.2 y la 1.3. si actualizamos una versión, no sobrescribimos la otra, sino que cambiamos la ruta en el archivo index.php, si no funciona bien la actualización solo hay que volver a cambiar la ruta para resolver el problema sin que deje de funcionar nuestra aplicación.

Además es bueno que nuestros clientes sepan la ruta de cake para solo tener que poner en su archivo index.php esa ruta sin tener que preocuparse de nada más.

Espero que os haya servido de algo este minitutorial.

Sientete libre de compartir estas notas, comentarlas y de avisarnos de los errores que puedas ver en ellas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *