Webs basadas en PHP + BBDD

Despliegue de webs escritas en php con acceso a bases de datos.

Objetivos

  • Instalar los requisitos (servidor web + php + bbdd) en un servidor
  • Identificar los requisitos de la web a instalar
  • Descargar e instalar un CMS Wordpress

Documentación general

1 - Instalación base

Introducción a entornos lamp

El acrónimo LAMP se refiere a un entorno configurado en un servidor que nos posibilita servir aplicaciones web escritas en PHP.

Para ello usamos las siguientes tecnologías:

  • Linux, sistema operativo;
  • Apache o nginx, servidor web;
  • MySQL, MariaDB, gestores de bases de datos;
  • PHP, lenguaje de programación.

Instalación base

Partimos de una configuración base

vagrant init bento/ubuntu-22.04

Edita el Vagrantile para hacer el forward del puerto 8080 al puerto 80 por ejemplo

Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-22.04"
  config.vm.network "forwarded_port", guest: 80, host: 8080
end

Levanta y actualiza el sistema

vagrant up
vagrant ssh
sudo apt update

mariadb

Instalación del servidor de base de datos

sudo apt install mariadb-server

Por defecto el usuario root no tiene contraseña, para acceder necesitaremos hacer con el root del sistema. Es muy recomendable ejecutar el programa mariadb-secure-installation para configurar la base de datos de manera segura, por ejemplo para indicar una contraseña al root.

Si necesitas crear una base de datos y un usuario que tenga acceso a la misma:

 mysql -u root -p
 CREATE DATABASE newdb;
 CREATE USER 'username'@'localhost' IDENTIFIED BY 'userpassword';
 GRANT ALL PRIVILEGES ON newdb.* to 'username'@'localhost';
 FLUSH PRIVILEGES;
 quit

Apache y PHP

Instalación de apache2 y del módulo que permite que apache2 interprete PHP (apache2 hará el papel de servidor web y de servidor de aplicaciones).

sudo apt install apache2 libapache2-mod-php php php-mysql

Configuración de PHP

Archivos de configuración de PHP (según versión. En este caso 7.4, que serguramente es más antigua):

  • /etc/php/7.4/cli: Configuración de php para php7.4-cli (ejecución de php desde la línea de comandos)
  • /etc/php/7.4/apache2: Configuración de php para apache2 usado como módulo
  • /etc/php/7.4/apache2/php.ini: Configuración de php
  • /etc/php/7.4/fpm: Configuración de php para php-fpm
  • /etc/php/7.4/mods-available: Módulos disponibles de php

Comprobación

Creamos un fichero info.php en el documentRoot (/var/www/html ) con el siguiente contenido:

<?php phpinfo(); ?>

Accedemos con el navegador. Si no aparece la información de php y vemos el contenido que hemos escrito, es que no se ha instalado correctamente. Tendrías que ver algo similar a esto:

Ahora podemos acceder a la URL: http://localhost:8080/info.php

Si tenemos problemas de acceso podemos ver los logs del servidor. El fichero de logs de acceso por “defecto”: /var/log/apache/access.log o el de errores: /var/log/apache/error.log

También podemos ver los logs del servicio ejecutando: sudo journalctl -u apache2

Instalación desatendida

Si ha funcionado esta instalación manual y atendida, destruye el entorno y haz que se genere toda la instalación de forma automática cuando ejecutas vagrant up

Tienes que usar un bootstrap.sh que ejecute tus comandos. Busca ejemplos en internet o usa ChatGPT si tienes dudas. Se trata de que no tengas que perder tiempo ejecutando comandos cuando hagas una nueva instalación.

README.md

Elimina el contenido del fichero README.md del repositorio y crea uno nuevo con la documentación (recuerda que tiene que estar escrito en markdown) de todo el proceso de instalación. Incluye también las instrucciones para que alguien pueda usar el repositorio y usar tu instalación de php.

2 - Instalación de Bookmedic

Objetivo:

  • Desplegar una aplicación PHP construida a medida en tu servidor LAMP.

Recuerda

Como ya sabemos tenemos 3 maneras principales para ejecutar código PHP:

  1. Desde la línea de comandos (cli).
  2. Con el servidor web Apache2 y el módulo libapache2-mod-php.
  3. Con un servidor web y el servidor de aplicaciones fpm-php.

La configuración de php está dividida según desde donde se use (este ejemplo es para php 7.4):

  • /etc/php/7.4/cli: Configuración de php para php7.4-cli, cuando se utiliza php desde la línea de comandos.
  • /etc/php/7.4/apache2: Configuración de php para apache2 cuando utiliza el módulo.
  • /etc/php/7.4/fpm: Configuración de php para php-fpm.
  • /etc/php/7.4/mods-available: Módulos disponibles de php que puedes estar configurados en cualquiera de los escenarios anteriores.

Si nos fijamos en la configuración de php para apache2 con el módulo:

  • /etc/php/7.4/apache2/conf.d: Módulos instalados en esta configuración de php (enlaces simbólicos a /etc/php/7.4/mods-available).
  • /etc/php/7.4/apache2/php.ini: Configuración de php para este escenario.

¿Qué tienes que hacer?

A partir de una instalación básica de Apache + MariaDB + PHP, tienes que instalar la aplicación BookMedik, una aplicación web a medida para llevar el control de citas médicas, pacientes, médicos, historiales de citas, áreas médicas y mucho mas, pensado para centros médicos, clínicas y médicos independientes. Puedes encontrar la aplicación en https://github.com/lmorillas/bookmedik.

Para realizar la instalación sigue los siguientes pasos:

  1. Crea la base de datos y las tablas necesarias recuperando la copia de seguridad de la base de datos que encuentras en el fichero schema.sql. Se creará una base de datos llamada bookmedik. Crea un usuario que tenga privilegios sobre dicha base de datos.
  2. Crea un virtualhost con el que accederás con el nombre bookmedik.tunombre.org. Copia en el DocumentRoot los ficheros de la aplicación (podrías clonar el repositorio en el DocumentRoot).
  3. Vamos a configurar el acceso a la base de datos desde la aplicación, para ello cambia el fichero core\controller\Database.php indicando el usuario de acceso (el que has creado en el punto 1), su contraseña, la base de datos que se llama bookmedik y la dirección donde se encuentra la base de datos, que en este caso es localhost.
  4. Accede a la aplicación web usando la URL configurada en el virtualhost (usa el usuario admin y contraseña admin).
  5. Para esta aplicación no es necesario, pero en determinadas aplicaciones es posible que necesitemos cambiar la memoria RAM que puede utilizar. Cambia la memoria máxima de uso de un script PHP (parámetro memory_limit) a 256Mb. ¿En qué fichero lo tienes que cambiar?. Investiga.

Una vez que esté la aplicación funcionando, configura un archivo bootstrap.sh que instale la aplicación automáticamente.