Instalación


1Requisitos previos

Para usar Temma, necesitas un alojamiento web que utilice el intérprete PHP en su versión 8.3 o superior.

Temma puede usar todas las bases de datos compatibles con la extensión PDO, así como la base de datos NoSQL Redis, y el servidor de caché Memcached.


2Instalación con un agente de IA

Es el camino más corto. Si trabajas con un agente de programación (Claude Code, OpenAI Codex, GitHub Copilot…), dale esta frase:

Crea un sitio web usando Temma (temma.net/go)

El agente lee el fichero llms-install.md, una guía de instalación ejecutable que le indica cómo comprobar los requisitos, crear el proyecto, configurar la base de datos, poner en marcha el servidor web y comprobar que la página de inicio responde. Todo lo que describen las secciones siguientes se hace, por tanto, en tu lugar.

Consulta la página de skills de IA para ver en detalle qué hace esta guía y cómo continuar el trabajo con un agente.


3Instalación con Composer

Si tienes el gestor de dependencias Composer instalado en tu equipo, puedes usarlo para crear un proyecto basado en Temma.

Para crear un proyecto de sitio web:

$ composer create-project digicreon/temma-project-web mi_sitio

Para crear un proyecto de API:

$ composer create-project digicreon/temma-project-api mi_api

La diferencia:

  • Un proyecto web devuelve principalmente páginas HTML, y por eso incluye el motor de plantillas Smarty.
  • Una API devuelve, por defecto, flujos JSON y gestiona su autenticación mediante pares de claves pública/privada. Por eso no incluye Smarty, y activa el plugin de API.
Los proyectos creados con Composer también instalan automáticamente las skills para agentes de codificación con IA, que ayudan a un asistente de IA a generar código que sigue las convenciones de Temma.

4Instalación sin Composer

Si no tienes Composer instalado en tu equipo, o no quieres usarlo, Temma ofrece un script de instalación fácil de usar. Incluso puedes simplemente clonar un repositorio de código Git.


4.1Versión estable

Para crear tu proyecto a partir de la última versión estable de Temma:

$ curl -Ls https://temma.net/release | sh -

O, en forma abreviada:

$ curl -Ls temma.net/r | sh -

El script te pedirá el nombre del directorio de destino que se va a crear. El nombre por defecto es temma_project.

Si lo prefieres, puedes extraer el archivo tú mismo.
La última versión estable de Temma es la 2.22.0.

$ wget https://github.com/Digicreon/Temma/archive/refs/tags/2.22.0.tar.gz
$ tar xzf 2.22.0.tar.gz
$ mv Temma-2.22.0 mi_proyecto
$ chmod 777 mi_proyecto/log mi_proyecto/tmp

4.2Última versión de las fuentes

Puedes descargar las versiones más recientes de las fuentes de Temma. Estas fuentes están en fase de pruebas (por eso todavía no forman parte de una versión estable) y pueden contener errores.

Una vez más, se proporciona un script de instalación:

$ curl -Ls https://temma.net/release/latest | sh -

O, en forma abreviada:

$ curl -Ls temma.net/r/l | sh -

Una vez más, el script te pedirá el nombre del directorio de destino que se va a crear. El nombre por defecto es temma_project.

Si lo prefieres, puedes extraer el archivo tú mismo:

$ wget https://github.com/Digicreon/Temma/archive/main.tar.gz
$ tar xzf main.tar.gz
$ mv Temma-main mi_proyecto
$ chmod 777 mi_proyecto/log mi_proyecto/tmp

Incluso puedes clonar directamente el repositorio git:

$ git clone git@github.com:Digicreon/Temma.git mi_proyecto
$ chmod 777 mi_proyecto/log mi_proyecto/tmp
$ rm -rf mi_proyecto/.git

4.3Instalar Smarty

Si usas Temma para crear una API sin generación de páginas HTML, no necesitarás el motor de plantillas Smarty. En caso contrario, Temma funciona igual de bien con Smarty 4 o Smarty 5. Smarty 4 es compatible con PHP 7.1 a 8.4, y Smarty 5 con PHP 7.2 a 8.5. Como Temma requiere PHP 8.3 o superior, ambas versiones de Smarty son adecuadas; solo necesitas usar Smarty 5 si estás ejecutando PHP 8.5.

Ten en cuenta que la versión 5 de Smarty introduce cambios que no son retrocompatibles.

Ten en cuenta que se recomienda encarecidamente usar la versión 5.4.0 (o superior) de Smarty. Temma activa la opción de auto-escape para las variables, lo que elimina la necesidad de usar el modificador escape. Sin embargo, las versiones de Smarty anteriores a la 5.4.0 no ofrecen el modificador raw, que permite cancelar el auto-escape cuando sea necesario. Aun así, es posible desactivar el auto-escape por defecto.

Puedes instalar Smarty de dos formas diferentes: usando Composer, o descargando el archivo manualmente.

Para instalar la última versión estable de Smarty con Composer, escribe este comando desde la raíz del proyecto (más información en la documentación):

$ composer require smarty/smarty

Para instalar Smarty manualmente, descarga el archivo (formato ZIP o TAR.GZ) de la versión deseada. Al descomprimir el archivo, verás un subdirectorio libs/ (Smarty 4) o src/ (Smarty 5). Renómbralo smarty4 (Smarty 4) o Smarty (Smarty 5) y luego muévelo dentro del directorio lib/ de tu proyecto.


5Configuración del servidor web

Una vez instalado Temma, debes configurar el servidor web que ejecutará tu aplicación web.
Para ello, puedes usar la configuración de Apache/Nginx o archivos .htaccess.


5.1Archivos .htaccess

Los archivos .htaccess son necesarios en caso de alojamiento compartido.
Si es tu caso, no tienes que hacer nada. Los archivos ya están presentes (.htaccess en la raíz y www/.htaccess).


5.2Servidor Apache o Nginx

Usa la configuración de Apache o Nginx si tienes tu propio servidor (dedicado, virtual o contenedor Docker).

Encontrarás configuraciones de ejemplo (archivos etc/apache.conf y etc/nginx.conf), que puedes modificar según tus necesidades.

También tendrás que eliminar los archivos .htaccess existentes:

$ cd mi_proyecto
$ rm -f .htaccess www/.htaccess

6Estructura del proyecto

Este es el contenido de un proyecto Temma:

mi_proyecto/
    bin/
    cli/
    controllers/
    etc/
        temma.php
        apache.conf
    lib/
        Temma/
        Smarty/
        smarty-plugins/
    log/
        temma.log
    templates/
    tmp/
    var/
    vendor/
    www/
        index.php
  • bin: Contiene programas utilitarios.
  • cli: Contiene tus scripts de línea de comandos.
  • controllers: Directorio principal para tus controladores.
  • etc: Directorio de configuración
    • temma.php: Archivo de configuración del proyecto.
    • apache.conf: Archivo de configuración del "virtual host", en el caso de un servidor Apache.
  • lib: Directorio base que contiene las bibliotecas externas, pero también tus objetos de negocio.
    • Temma: El código del framework (para instalaciones sin Composer).
    • Smarty (o smarty4): motor de plantillas Smarty (para instalaciones sin Composer).
    • smarty-plugins: plugins de Smarty ofrecidos por Temma.
  • log: Directorio que contiene los archivos de log.
    • temma.log: Archivo de log del proyecto.
  • templates: Directorio que contiene las plantillas.
  • tmp: Directorio de archivos temporales.
  • var: Directorio opcional, que puede contener los archivos de datos de tu aplicación.
  • vendor: Este directorio existe si has instalado Temma usando Composer, o si has cargado bibliotecas externas con Composer.
  • www: Directorio raíz del sitio, que contiene todos los archivos CSS, Javascript e imágenes.
    • index.php: Script PHP principal, que inicia el framework.