Instalar CakePHP en GNU/Linux Debian es un proceso sumamente sencillo hoy en día. CakePHP es un sencillo Framework en PHP que junto a Laravel, CodeIgniter, Yii, Symfony, etc... están de moda en la actualidad. Si bien, no es el framework más potente ni más usado, es uno de los mejores frameworks para entrar en "este mundillo" sin grandes complicaciones.
Seguid leyendo y os enseñaré a instalar CakePHP utilizando el método oficial con Composer...
¿QUÉ ES CAKEPHP?
CakePHP es un marco de desarrollo "framework" rápido para PHP, libre, de código abierto. Se trata de una estructura que sirve de base a los programadores para que éstos puedan crear aplicaciones Web. El principal objetivo es que se pueda trabajar de forma estructurada y rápida, sin pérdida de flexibilidad.
Con CakePHP el desarrollo web ya no es monótono porque ofrece las herramientas para empezar a escribir el código que realmente se necesita: la lógica específica de cada aplicación. CakePHP tiene un equipo de desarrolladores y una comunidad activos, lo que añade valor al proyecto. Con CakePHP, además de no tener que reinventar la rueda.
Esta es una lista con las características principales de CakePHP:
- Comunidad activa y amistosa
- Licencia flexible
- Compatible con PHP4 y PHP5
- CRUD integrado para la interacción con la base de datos
- Soporte de aplicación [scaffolding]
- Generación de código
- Arquitectura Modelo Vista Controlador (MVC)
- Despachador de peticiones [dispatcher], con URLs y rutas personalizadas y limpias
- Validación integrada
- Plantillas rápidas y flexibles (sintaxis de PHP, con ayudantes[helpers])
- Ayudantes para AJAX, Javascript, formularios HTML y más
- Componentes de Email, Cookie, Seguridad, Sesión y Manejo de solicitudes
- Listas de control de acceso flexibles
- Limpieza de datos
- Caché flexible
- Localización
- Funciona en cualquier subdirectorio del sitio web, con poca o ninguna configuración de Apache
CakePHP es un Framework en PHP
1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL
- Un PC con GNU/Linux Debian 10 (o similar)
- Conexión a Internet
2.- INSTALACIÓN DE LOS PRE-REQUISITOS
Antes de comenzar a instalar CakePHP, es necesario instalar una serie de paquetes de software para cumplir con los requisitos mínimos. Para ello, ejecutaremos el siguiente comando e instalaremos los siguientes paquetes.
raul@debian:~$ sudo sudo apt-get install php php-intl php-xml php-mysql php7.4-mbstring apache2 libapache2-mod-php
3.- INSTALACIÓN DE CAKEPHP CON COMPOSER
Ahora, desde cualquier usuario, podremos descargar e "instalar" el Framework de CakePHP en nuestro directorio personal. Para la instalación, utilizaremos el método oficial con Composer. Para descargar composer, ejecutaremos los siguientes comandos en nuestra consola:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8')\
{ echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
A continuación, con el usuario root o con un usuario con permiso de sudo, moveremos el fichero descargado:
raul@debian:~$ sudo mv composer.phar /usr/local/bin/composer
4.- CREACIÓN DE PROYECTO CON CAKEPHP
Una vez descargado Composer, crearemos nuestro primer proyecto con CakePHP 4 en el directorio my_app_name. Para ello, ejecutaremos:
raul@debian:~$ composer create-project --prefer-dist cakephp/app:~4.0 my_app_name
Una vez terminado el proceso, ya tendremos descargado el Framework de CakePHP 4 en nuestro directorio my_app_name.
5.- SERVIDOR DE DESARROLLO
La forma más rápida de instalar y acceder a CakePHP es a través de un servidor de desarrollo. CakePHP incluye su propio servidor Web, y podremos acceder a él a través de http://host:puerto. Para arrancarlo ejecutaremos:
raul@debian:~$ my_app_name/bin/cake server
Por defecto, si no se le pasa ningún parámetro, el servidor escuchará en http://localhost:8765
Si hay un conflicto con localhost o con el puerto 8765, se puede especificar la IP y el puerto con el siguiente comando:
raul@debian:~$ my_app_name/bin/cake -H 192.168.1.47 -p 5673
Si aún así existen problemas y no tenemos acceso, podemos lanzar el siguiente comando y ver una salida similar a la siguiente:
raul@debian:~/my_app_name$ bin/cake server -H 0.0.0.0
PHP Warning: Module 'intl' already loaded in Unknown on line 0
Welcome to CakePHP v4.3.5 Console
-------------------------------------------------------------------------------
App : src
Path: /home/raul/my_app_name/src/
DocumentRoot: /home/raul/my_app_name/webroot
Ini Path:
-------------------------------------------------------------------------------
built-in server is running in http://0.0.0.0:8765/
You can exit with `CTRL-C`
[Wed Feb 16 14:45:27 2022] PHP 7.4.25 Development Server (http://0.0.0.0:8765) started
Para acceder a CakePHP, abriremos un navegador e introduciremos http://IP:PUERTO:
Pantalla principal del Framework CakePHP
Como se puede ver en la pantalla principal, todos los puntos están correctos excepto el acceso a la base de datos. Deberemos crear una base de datos con los datos necesarios, en este ejemplo se han cogido los datos de ejemplo que se ubican en el fichero my_app_name/config/app_local.php:
Pantalla principal sin acceso a la BBDD
'default' => [
'host' => 'localhost',
/*
* CakePHP will use the default DB port based on the driver selected
* MySQL on MAMP uses port 8889, MAMP users will want to uncomment
* the following line and set the port accordingly
*/
//'port' => 'non_standard_port_number',
'username' => 'my_app',
'password' => 'secret',
'database' => 'my_app',
/*
* If not using the default 'public' schema with the PostgreSQL driver
* set it here.
*/
//'schema' => 'myapp',
/*
* You can use a DSN string to set the entire configuration
*/
'url' => env('DATABASE_URL', null),
],
Crearemos la base de datos, el usuario y le daremos privilegios sobre dicha base de datos con la contraseña "por defecto". Ahora, ejecutaremos para crear la base de datos el siguiente comando:
raul@debian:~$ sudo mysql -u root -p -e "create database my_app"
Y este otro comando para crear el usuario y asignar privilegios:
raul@debian:~$ sudo mysql -u root -p -e "grant all privileges on my_app.* to 'my_app'@'localhost' identified by 'secret'"
Si refrescamos la pantalla, veremos que ahora CakePHP ya tiene acceso a la base de datos:
Pantalla principal todo correcto
6.- SERVIDOR DE PRODUCCIÓN
La instalación en un sistema de producción es una solución muy flexible para configurar CakePHP. Usando este método nos permite que un dominio entero actúe como una única instancia de CakePHP.
Los desarrolladores que usen Apache deberán cambiar la directiva DocumentRoot para que apunte a la aplicación CakePHP. Otra solución podría pasar por crear Alias, o UserDirs en Apache, pero eso no entra en este tutorial:
DocumentRoot /my_app_name/webroot
Si el servidor Web está correctamente configurado, podremos acceder a CakePHP desde la URL http://IP:SERVIDOR
7.- POSIBLES ERRORES
Si una vez instalado CakePHP y acceder a su Frontend, observamos este mensaje, podremos resolverlo de forma rápida ejecutando el siguiente comando:
raul@debian:~$ sudo apt-get install php-sqlite3
CakePHP error de SQLite3
ENJOY!