Saltar al contenido

Cómo configurar una aplicación CakePHP con lámpara en Ubuntu 18.04

marzo 4, 2020

 

El autor ha seleccionado el Fondo de código abierto y de recibir una donación como parte del programa de escritura de donaciones.

Introducción

CakePHP es un framework PHP web popular y rico en funciones. Se resuelve muchos de los problemas comunes en el desarrollo web, tales como la interacción con una base de datos, protección contra las inyecciones SQL, y la generación de código de la vista. Se adhiere al patrón modelo-vista-controlador (MVC), que desacopla diversas partes de la aplicación, lo que permite de manera efectiva a los desarrolladores trabajar en diferentes partes de la aplicación en paralelo. También proporciona una función de seguridad y autenticación. Para crear una aplicación de base de datos básica es un proceso sin interrupciones, lo que hace CakePHP útil para la creación de prototipos. Sin embargo, puede utilizar CakePHP para crear aplicaciones web completamente desarrollado para el despliegue también.

En este tutorial, se desplegará una aplicación web de ejemplo CakePHP para un entorno de producción. Para lograr esto, podrás configurar una base de datos de ejemplo y de usuario, configurar Apache, conecta su aplicación a la base de datos, y desactive el modo de depuración. También vamos a usar comandos de pasteles de CakePHP para generar automáticamente los modelos del artículo.

Requisitos previos

Antes de comenzar este tutorial, necesitará: servidor

  • A con Ubuntu 18.04 con acceso root y sudo, cuenta sin privilegios, puede configurar esto siguiendo esta guía de configuración inicial del servidor. Una pila
  • lámpara instalada de acuerdo a Cómo instalar Linux, Apache, MySQL, PHP (LAMP) pila en Ubuntu 18.04. En el momento de escribir estas líneas, PHP 7.2 es la versión más reciente.
  • Compositor (un gestor de paquetes de PHP) instalado en el servidor. Para una guía sobre cómo hacerlo, visite Cómo instalar y utilizar Compositor en Ubuntu 18.04. Sólo tiene que completar los dos primeros pasos de ese tutorial.
  • Apache asegurado con Cifrar Vamos. Para completar este requisito previo, primero debe configurar hosts virtuales siguiendo el Paso 5 de Cómo instalar Apache en Ubuntu 18.04. A continuación, puede seguir la forma de asegurar Apache con Cifrar Vamos en Ubuntu 18.04 para asegurar Apache con Cifrar Vamos. Cuando se le preguntó, permitirá obligatoria HTTPS redirección.
  • Un plenamente nombre de dominio registrado. Este tutorial se utilizará a lo largo de example.com. Usted puede comprar un nombre de dominio en Namecheap, obtener una gratis en Freenom, o utilizar el registrador de dominio de su elección.
  • ambos de los siguientes registros DNS configurado para el servidor. Puede seguir esta introducción a digitalocean DNS para obtener más información sobre cómo agregar un registro con them.An example.com señalando pública registro IP address.An Una de su servidor con www.example.com apuntando a la dirección IP pública del servidor.
  • Un registro A con example.com apuntando a la dirección IP pública del servidor.
  • Un registro A con www.example.com apuntando a la dirección IP pública del servidor.
  • Un registro A con example.com apuntando a la dirección IP pública del servidor.
  • Un registro A con www.example.com apuntando a la dirección IP pública del servidor.

Paso 1 – Instalación de dependencias

Para prepararse para su aplicación, usted comenzará con la instalación de las extensiones PHP CakePHP que necesita.

empezar por la actualización de la memoria caché de gestor de paquetes: apt update

sudo apt update

  • sudo

CakePHP requiere los mbstring, Intl, y extensiones PHP SimpleXML, que añaden soporte para cadenas multibyte, la internacionalización y procesamiento de XML. Ha instalado mbstring como parte del requisito tutorial Compositor. Puede instalar las bibliotecas restantes con un comando:

sudo apt install php7.2-intl php7.2-xml -y

  • sudo apt-instalar php7.2 Intl php7.2-xml -y

Recuerde que los números de versión anteriores (7.2) cambiarán con nuevas versiones de PHP.

Ha instalado las dependencias necesarias para CakePHP. Ahora está listo para configurar su base de datos MySQL para su uso en producción.

Paso 2 – Configuración de una base de datos MySQL

Ahora, vamos a crear una base de datos MySQL para almacenar información acerca de los artículos de su blog. También vamos a crear un usuario de base de datos que la aplicación va a utilizar para acceder a la base de datos. Podrás modificar los privilegios de base de datos para lograr esta separación de control. Como resultado, los malos actores no serán capaces de causar problemas en el sistema incluso con las credenciales de base de datos, lo cual es una importante medida de seguridad en un entorno de producción.

lanzamiento de su cáscara MySQL:

sudo mysql -u root -p

  • sudo mysql -u root -p

Cuando se le preguntó, introduzca la contraseña se configura durante la instalación inicial LAMP.

A continuación, cree una base de datos:

CREATE DATABASE cakephp_blog;

  • CREAR cakephp_blog base de datos;

verá una salida similar a:

OutputQuery OK, 1 row affected (0.00 sec)

Su aplicación CakePHP utilizará esta nueva base de datos para leer y almacenar datos de producción.

Entonces, MySQL instruir para operar en la nueva base de datos cakephp_blog:

USE cakephp_blog;

  • USO cakephp_blog;

verá una salida similar a:

OutputDatabase changed

Ahora vamos a crear un esquema de la tabla para sus artículos del blog en la base de datos cakephp_blog. Ejecute el siguiente comando para configurar esto:

CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50),
body TEXT,
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL
);

  • crear artículos TABLA (
  • Identificación unsigned int AUTO_INCREMENT PRIMARY KEY,
  • título VARCHAR (50),
  • texto del cuerpo,
  • creado DATETIME DEFAULT NULL,
  • modificado DATETIME DEFAULT NULL
  • );

Usted ha creado un esquema con cinco campos para describir los artículos del blog:

  • ID: es el identificador único de un artículo, establecido como clave principal.
  • título

  • : es el título de un artículo, declarado como un campo de texto que contiene un máximo de 50 caracteres.
  • cuerpo: es el texto del artículo, declarado como campo de texto.
  • creado: es la fecha y hora de la creación de un registro.
  • modificado: es la fecha y hora de modificación de un registro.

La salida será similar a:

OutputQuery OK, 0 rows affected (0.01 sec)

Se ha creado una tabla para almacenar los artículos en la base de datos cakephp_blog. A continuación, rellenarlo con ejemplos de artículos mediante la ejecución del siguiente comando: artículos

INSERT INTO articles (title, body, created)
VALUES ('Sample title', 'This is the article body.', NOW());

  • INSERT INTO (título, cuerpo, creados) VALORES
  • ( ‘título de la muestra’ ‘Este es el cuerpo del artículo’, NOW ());

Ha añadido un artículo ejemplo, con algunos datos de ejemplo para el texto del título y el cuerpo.

Usted verá el siguiente resultado:

OutputQuery OK, 0 rows affected (0.01 sec)

el fin de conectar la aplicación CakePHP a la base de datos, es necesario crear un nuevo usuario de base de datos y restringir sus privilegios:

GRANT ALL PRIVILEGES ON cakephp_blog.* TO 'cake_user'@'localhost' IDENTIFIED BY 'password';

  • conceder a todos los privilegios en cakephp_blog * cake_user A’. ‘@’ localhost’ IDENTIFICADAS POR ‘contraseña’;

Este comando otorga todos los privilegios a todas las tablas en la base de datos.

Recuerde reemplazar contraseñas con una contraseña de su elección.

Para actualizar su base de datos con los cambios que ha realizado, mediante la ejecución de recarga:

FLUSH PRIVILEGES;

  • PRIVILEGIOS FLUSH;

Acaba de crear un nuevo usuario de base de datos, y dada la cake_user privilegios de usuario sólo en la base de datos cakephp_blog, apretando así la seguridad.

la salida de la terminal de MySQL mediante la introducción de salida.

Usted ha creado una nueva base de datos con un esquema, se puebla con datos de ejemplo, y ha creado un usuario de base de datos adecuada. En el siguiente paso, va a configurar la aplicación CakePHP sí.

Paso 3 – Creación del Blog Aplicación

En esta sección, vamos a usar Compositor instalar una aplicación CakePHP ejemplo. Es ventajoso utilizar Compositor, ya que le permite instalar CakePHP desde la línea de comandos y automáticamente se establecen ciertos permisos de archivos y archivos de configuración.

primer lugar, vaya a la carpeta del servidor Web Apache:

cd /var/www/example.com/html

  • cd /var/www/example.com/html

Apache utiliza este directorio para almacenar archivos visibles al mundo exterior. El usuario root es propietaria de este directorio, y así el usuario no root, Sammy, todo lo que no puede escribir en él. Para corregir esto, se va a cambiar los permisos del sistema de archivos ejecutando:

sudo chown -R sammy .

  • sudo chown -R Sammy.

Ahora vamos a crear una nueva aplicación CakePHP través Compositor:

composer create-project --prefer-dist cakephp/app cake-blog

  • compositor crear proyectos y –prefer cakephp-dist / app torta-blog

compositor Aquí ha invocado indicado la acción para crear un nuevo proyecto con create-proyecto. –prefer cakephp-dist / app dice el compositor utilizar CakePHP como una plantilla con la torta-blog como el nombre de la nueva aplicación.

Tenga en cuenta que este comando puede tomar algún tiempo para terminar.

Cuando Compositor le pide que configurar los permisos de carpeta, responde con Y.

En esta sección, se crea un nuevo proyecto CakePHP con el compositor. En el siguiente paso, va a configurar Apache a punto de la nueva aplicación, lo que hará más visible en su navegador.

Paso 4 – Configuración de Apache para que apunte a su aplicación

Ahora, usted va a configurar Apache para su nueva aplicación CakePHP, así como permitir a .htaccess de primer orden, que es un requisito CakePHP. Esto implica la edición de archivos de configuración de Apache.

Para enrutamiento real tenga lugar, se debe instruir a Apache para utilizar archivos .htaccess. Estos son los archivos de configuración que estarán en los subdirectorios de la aplicación (cuando sea necesario), y luego Apache utiliza los archivos de alterar su configuración global para la parte requerida de la aplicación. Entre otras tareas, que contendrán reglas de reescritura de URL, que se le ajustando ahora.

Comience abriendo el archivo de configuración global Apache (apache2.conf) utilizando el editor de texto:

sudo nano /etc/apache2/apache2.conf

  • sudo nano /etc/apache2/apache2.conf

Encuentre el siguiente bloque de código:

...

Options Indexes FollowSymLinks
AllowOverride None
Require all granted

...

Cambio AllowOverride de Ninguno a todos, como la siguiente:

...

Options Indexes FollowSymLinks
AllowOverride All
Require all granted

...

Guardar y cerrar el archivo.

A continuación, se dará instrucciones a Apache para que apunte al directorio web raíz de la instalación de CakePHP. Apache almacena sus archivos de configuración en Ubuntu 18.04 en / etc / apache2 / sites-available. Estos archivos gobiernan cómo procesa las peticiones web Apache.

Durante Cifrar del Let prerrequisito tutorial, activar HTTPS redirección; Por lo tanto, sólo se permite el tráfico HTTPS. Como resultado, sólo se va a editar el archivo example.com-le-ssl.conf, que configura el tráfico HTTPS.

En primer lugar, abrir el fichero de configuración example.com-le-ssl.conf:

sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

  • sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

necesita cambiar solamente una línea, la que pone en marcha DocumentRoot y le dice a Apache desde donde servir contenido al navegador. Busque la línea siguiente en el archivo:

DocumentRoot /var/www/example.com/html

Editar esta línea hasta el punto de que la instalación de CakePHP, añadiendo el siguiente contenido destacado:

DocumentRoot /var/www/example.com/html/cake-blog/webroot

Guarde el archivo y salga del editor.

A continuación, reinicie Apache para reflejar la nueva configuración:

sudo systemctl restart apache2

  • sudo systemctl reiniciar apache2

ya se puede visitar https: // your_domain / en su navegador.

Verá la página por defecto de CakePHP éxito. Se dará cuenta de que hay un bloque que indica que la aplicación no puede conectarse a la base de datos. En el siguiente paso podrás ello se debe conectar su aplicación a la base de datos.

Ahora ha habilitado .htaccess de primer orden, y señaló Apache en el directorio web raíz correcta.

Paso 5 – Conexión de su aplicación a la base de datos

En esta sección, se conectará a su base de datos para su aplicación para que su blog se puede acceder a los artículos. Editará de CakePHP configuración por defecto / app.php archivo para configurar la conexión a la base de datos.

Vaya a la carpeta de aplicaciones:

cd /var/www/example.com/html/cake-blog

  • cd /var/www/example.com/html/cake-blog

Abrir el archivo de configuración / app.php, ejecutando el siguiente comando: sudo

sudo nano config/app.php

  • nano config / app.php

Busque el bloque de fuentes de datos (se parece a la siguiente):

...
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
...
//'port' => 'non_standard_port_number',
'username' => 'cake_user',
'password' => 'password',
'database' => 'cakephp_blog',
...

Para ‘nombre de usuario’ reemplazar my_app con nombre de usuario del usuario de la base de datos (esto usos tutorial: cake_user), secreta con la contraseña del usuario de la base de datos, y el segundo my_app con el nombre de base de datos (cakephp_blog en este tutorial).

Guardar y cerrar el archivo.

Actualizar la aplicación en el navegador y observar el mensaje de éxito en la sección Base de datos . Si se muestra un error, vuelva a comprobar el archivo de configuración en contra de los pasos anteriores.

En este paso, que ha conectado la aplicación CakePHP a su base de datos MySQL. En el siguiente paso, va a generar los archivos de modelo, Vista y Controlador que compondrán la interfaz de usuario para interactuar con los artículos.

Paso 6 – Creación de la interfaz artículo

Usuario En esta sección, vamos a crear una interfaz artículo listo para su uso mediante la ejecución del comando de hornear CakePHP, que genera el modelo artículo. En CakePHP, el bicarbonato genera modelos de todas las opciones necesarias, vistas y controladores en un estado básico, listo para un mayor desarrollo. Todas las aplicaciones de base de datos debe permitir crear, leer, actualizar y eliminar (CRUD), lo que hace función de horneado de CakePHP útil para la generación automática de código para estas operaciones. En un par de minutos, se obtiene un prototipo completo de la aplicación, listo para entrar, almacenar y editar los datos. Modelos

, vistas y controladores pertenecen al patrón MVC . Sus funciones son: Modelos

  • representan la estructura de datos.
  • Vistas presentan los datos de una manera fácil de usar. Controladores
  • actúan sobre las peticiones del usuario y sirven como un intermediario entre las vistas y modelos.

CakePHP almacena su ejecutable CLI bajo bin / torta. A pesar de que se utiliza sobre todo para la cocción, que ofrece un montón de otros comandos, como los de limpieza de diversos cachés.

El comando hornear va a revisar su base de datos y generar los modelos basados ​​en las definiciones de tabla que encuentra. Comience ejecutando el siguiente comando:

./bin/cake bake all

  • ./bin/cake la cocción de todo

Al pasar el comando de todo, se indica CakePHP para generar modelos, controladores y puntos de vista a la vez.

Su salida se verá así:

OutputBake All
---------------------------------------------------------------
Possible model names based on your database:
- articles
Run `cake bake all [name]` to generate skeleton files.

Se ha detectado correctamente la definición artículos de su base de datos y se ofrecen para generar archivos para ese modelo.

Hornear ejecutando:

./bin/cake bake all articles

  • ./bin/cake hornear todos los artículos

Su salida se verá así:

OutputBake All
---------------------------------------------------------------
One moment while associations are detected.

Baking table class for Articles...

Creating file /var/www/example.com/html/cake-blog/src/Model/Table/ArticlesTable.php
Wrote `/var/www/example.com/html/cake-blog/src/Model/Table/ArticlesTable.php`
Deleted `/var/www/example.com/html/cake-blog/src/Model/Table/empty`

Baking entity class for Article...

Creating file /var/www/example.com/html/cake-blog/src/Model/Entity/Article.php
Wrote `/var/www/example.com/html/cake-blog/src/Model/Entity/Article.php`
Deleted `/var/www/example.com/html/cake-blog/src/Model/Entity/empty`

Baking test fixture for Articles...

Creating file /var/www/example.com/html/cake-blogests/Fixture/ArticlesFixture.php
Wrote `/var/www/example.com/html/cake-blogests/Fixture/ArticlesFixture.php`
Deleted `/var/www/example.com/html/cake-blogests/Fixture/empty`
Bake is detecting possible fixtures...

Baking test case for App\Model\Table\ArticlesTable ...

Creating file /var/www/example.com/html/cake-blogests/TestCase/Model/Table/ArticlesTableTest.php
Wrote `/var/www/example.com/html/cake-blogests/TestCase/Model/Table/ArticlesTableTest.php`

Baking controller class for Articles...

Creating file /var/www/example.com/html/cake-blog/src/Controller/ArticlesController.php
Wrote `/var/www/example.com/html/cake-blog/src/Controller/ArticlesController.php`
Bake is detecting possible fixtures...

...

Baking `add` view template file...

Creating file /var/www/example.com/html/cake-blog/src/Template/Articles/add.ctp
Wrote `/var/www/example.com/html/cake-blog/src/Template/Articles/add.ctp`

Baking `edit` view template file...

Creating file /var/www/example.com/html/cake-blog/src/Template/Articles/edit.ctp
Wrote `/var/www/example.com/html/cake-blog/src/Template/Articles/edit.ctp`
Bake All complete.

En la salida, se verá que CakePHP ha conectado todos los pasos que tomó para crear un texto modelo funcional para la base de datos de artículos.

Ahora, vaya a la siguiente en su navegador:

https://your_domain/articles

Verás una lista de los artículos actualmente en la base de datos, que incluye una fila titulada Muestra Título . El comando hornear creó esta interfaz que le permite crear, eliminar y editar artículos. Como tal, se proporciona un punto de partida sólido para el desarrollo adicional. Usted puede tratar de añadir un nuevo artículo haciendo clic en el enlace Nuevo artículo en la barra lateral.

En esta sección, se genera archivos de los controladores modelo, ver y hornear con el comando de CakePHP. Ahora puede crear, borrar, ver y editar sus artículos, con todos los cambios inmediatamente guardan en la base de datos.

En el siguiente paso, se desactivará el modo de depuración.

Paso 7 – desactivar el modo de depuración en CakePHP

En esta sección, se desactivará el modo de depuración en CakePHP. Esto es crucial porque en el modo de depuración de los espectáculos de aplicaciones detallan información de depuración, lo cual es un riesgo de seguridad. Podrá completar este paso después de haber completado el desarrollo de su aplicación.

Abrir el archivo de configuración / app.php usando su editor favorito:

sudo nano config/app.php

  • sudo nano config / app.php

Cerca del inicio del archivo habrá una línea para el modo ‘debug’. Al abrir el modo de archivo ‘depuración’ se establece en true. Cambiar esto a falso según la siguiente:

...
'debug' => filter_var(env('DEBUG', false), FILTER_VALIDATE_BOOLEAN),
...

Después de activar el modo de depuración fuera, la página principal, situado bajo src / Plantillas / Páginas / home.ctp, se mostrará un error.

Nota: Si no ha cambiado la ruta por defecto o reemplazar el contenido de home.ctp, la página principal de su aplicación mostrará un error. Esto se debe a la página de inicio por defecto sirve como un panel de estado durante el desarrollo, pero no funciona con el modo de depuración desactivado.

Que haya desactivado el modo de depuración. Los errores y excepciones que se producen a partir de ahora, junto con sus seguimientos de pila, no se mostrarán al usuario final, el endurecimiento de la seguridad de su aplicación.

Sin embargo, después, desactivando el modo de depuración, su home.ctp mostrará un error. Si has completado este paso sólo a los efectos de este tutorial, ahora se puede redirigir su página de inicio para los artículos de la interfaz del anuncio, mientras que el modo de mantenimiento de depuración deshabilitado. Usted va a lograr esto mediante la edición de los contenidos de home.ctp.

abierto home.ctp para la edición:

sudo nano src/Template/Pages/home.ctp

  • sudo nano src / Plantilla / pages / home.ctp

Reemplazar su contenido con lo siguiente: redirecciones

Click here if you are not redirected

este código HTML para el controlador de los artículos. Si la redirección automática falla, también hay un enlace para los usuarios a seguir.

En este paso, el modo de depuración desactivado por motivos de seguridad y fija el error de la página principal redirigiendo al usuario a la interfaz de entrada de blog que el controlador proporciona los artículos lista.

Conclusión

Ahora ha establecido con éxito una aplicación de CakePHP en una pila LAMP en Ubuntu 18.04. Con CakePHP, puede crear una base de datos con tantas tablas como desee, y producirá un editor web en vivo para los datos.

El CakePHP ofertas de libros de cocina detallan la documentación relativa a todos los aspectos de CakePHP. El siguiente paso para su aplicación podría incluir la implementación de la autenticación de usuarios para que cada usuario puede hacer sus propios artículos.