CakePHP: instalación en public_html bajo Opensuse 11.2
El objetivo es intalar el framework CakePhp en el directorio public_html de un usuario en concreto, para que este usuario pueda usar dicho framework. Presuponemos instalado y funcionando apache2 y php5, bajo una máquina opensuse 11.2. Presuponemos que esta con los valores por defecto ( con la directiva UserDir habilitada) de modo que el usuario puede acceder a su web con la siguiente URL:
http://localhost/~usuario
Los pasos son los siguientes:
1- Descargar CakePHP desde su página principal http://cakephp.org/ :
2- Descomprimimos el archivo en el directorio public_html del usuario (ej dieguz2), de modo que al hacer un ls quede así:
Para activar el módulo rewrite, podemos hacerlo a través de yast (servidor http /Módulos del servidor / rewrite / habilitar ) o a través de la linea de comando:
3- Si tenemos activado el MOD_REWRITE en apache, nos saldrá el mensaje "Objeto no encontrado", tenemos que hacer cambios en dos archivos .htaccess añadiendo la directiva RewriteBase de modo que queden así:
4- Cambiamos los permisos del directorio tmp para evitar que nos de errores de escritura ( CAKE Warning (512) app/tmp/cache/ is not writable [CORE/cake/libs/cache/file.php, line 263])
5- Editamos el archivo:
Hacemos lo mismo con la "cipherSeed", pero en este caso usamos sólo números aleatorios
Con estos cambios evitaremos los siguientes errores:
6- Si no tenemos definida una zona horaria en php, podemos tener un mensaje de error como este:
Para corregirlo editamos como root el archivo php.ini (/etc/php5/apache2/php.ini) fijando la variable a la zona horaria que queramos (listado de zonas horarias en php):
El resultado final ( en la imagen no he configurado la BD) debe ser algo similar a esto:
http://localhost/~usuario
Los pasos son los siguientes:
1- Descargar CakePHP desde su página principal http://cakephp.org/ :
wget http://github.com/cakephp/cakephp1x/tarball/1.2.6
2- Descomprimimos el archivo en el directorio public_html del usuario (ej dieguz2), de modo que al hacer un ls quede así:
/home/dieguz2/public_html/appTras este paso deberiamos poder conectar al servidor y ver la página de CakePHP, nos saldrán varios errores, que corregiremos a continuación:
/home/dieguz2/public_html/cake
/home/dieguz2/public_html/plugins
/home/dieguz2/public_html/vendors
/home/dieguz2/public_html/index.php
/home/dieguz2/public_html/README
http://localhost/~dieguz2/index.phpSi no tenemos activado el MOD_REWRITE de apache veremos la página (sin estilos ni imágenes), con una serie de errores,en todos los casos HAY que activar el rewrite. Si lo tenemos activado tenemos que hacer los cambios explicados en el siguiente paso.
Para activar el módulo rewrite, podemos hacerlo a través de yast (servidor http /Módulos del servidor / rewrite / habilitar ) o a través de la linea de comando:
a2enmod rewrite
sudo /etc/init.d/apache2 force-reload
3- Si tenemos activado el MOD_REWRITE en apache, nos saldrá el mensaje "Objeto no encontrado", tenemos que hacer cambios en dos archivos .htaccess añadiendo la directiva RewriteBase de modo que queden así:
/home/dieguz2/public_html/.htaccess
RewriteEngine on
RewriteRule (.*) app/webroot/$1 [L]
RewriteBase /~dieguz2/
/home/dieguz2/public_html/app/webroot/.htaccessSi tenemos algun problema adicional (como que no hace caso de los .htaccess tendremos que activar el AllowOverride en apache.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
RewriteBase /~dieguz2/
4- Cambiamos los permisos del directorio tmp para evitar que nos de errores de escritura ( CAKE Warning (512) app/tmp/cache/ is not writable [CORE/cake/libs/cache/file.php, line 263])
chmod 777 -R /home/dieguz2/public_html/app/tmp
5- Editamos el archivo:
vi /home/dieguz2/public_html/app/config/core.phpBuscamos la cadena "Security.salt" cambiamos la cadena por defecto por otros numeros y letras aleatorios. por ejemplo, podría quedar asi
Configure::write('Security.salt', 'imaqm1897dfnAsk1938ajmKnau812na2A2kajsai');
Hacemos lo mismo con la "cipherSeed", pero en este caso usamos sólo números aleatorios
Configure::write('Security.cipherSeed', '16359506657458542996042684645');
Con estos cambios evitaremos los siguientes errores:
Notice (1024): Please change the value of 'Security.salt' in app/config/core.php to a salt value specific to your application [CORE/cake/libs/debugger.php, line 674]
Notice (1024): Please change the value of 'Security.cipherSeed' in app/config/core.php to a numeric (digits only) seed value specific to your application [CORE/cake/libs/debugger.php, line 678]
6- Si no tenemos definida una zona horaria en php, podemos tener un mensaje de error como este:
[http://php.net/function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting
Para corregirlo editamos como root el archivo php.ini (/etc/php5/apache2/php.ini) fijando la variable a la zona horaria que queramos (listado de zonas horarias en php):
date.timezone = Europe/Madrid7- Finalmente pasamos a editar el archivo de configuración de la base de datos. En CakePhp nos envía un archivo de ejemplo para mysql, lo copiaremos y editaremos con los valores que necesitemos (usuario,contraseña...) para conectar con nuestra base de datos (que debe estar ejecutándose):
cp /home/dieguz2/public_html/app/config/database.php.default /home/dieguz2/public_html/app/config/database.php
vi /home/dieguz2/public_html/app/config/database.php
El resultado final ( en la imagen no he configurado la BD) debe ser algo similar a esto:
Comentarios
Muchas Gracias!