Installation


1Prérequis

Pour utiliser Temma, vous avez besoin d'un hébergement Web exploitant l'interpréteur PHP en version 8.0 ou supérieure.

Temma peut utiliser toutes les bases de données supportées par l'extension PDO, ainsi que la base noSQL Redis, et le serveur de cache Memcached.


2Installation avec Composer

Si le gestionnaire de dépendances Composer est installé sur votre ordinateur, vous pouvez l'utiliser pour créer un projet basé sur Temma.

Pour créer un projet de site Web :

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

Pour créer un projet d'API :

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

La différence :

  • Un projet web retourne principalement des pages HTML, et embarque donc le moteur de templates Smarty.
  • Une API retourne par défaut des flux JSON et gère son authentification par des paires de clés publique/privée. Elle n'embarque donc pas Smarty, et active le plugin API.

3Installation sans Composer

Si Composer n'est pas installé sur votre ordinateur, ou si vous ne souhaitez pas l'utilisez, Temma met à disposition un script d'installation très facile à utiliser. Il est même possible de simplement cloner un dépôt de code Git.


3.1Version stable

Pour créer votre projet basé sur la dernière version stable de Temma :

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

Ou en abrégé :

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

Le script vous demandera le nom du répertoire de destination à créer. Par défaut, il s'appellera temma_project.

Si vous préférez, vous pouvez extraire l'archive vous-même.
La dernière version stable de Temma est la 2.10.0.

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

3.2Dernière version des sources

Vous avez la possibilité de récupérer les dernières versions des sources Temma. Ces sources sont en cours de test (raison pour laquelle elles ne font pas encore partie d'un version stable) et peuvent comporter des bogues.

Là encore, un script d'installation est mis à disposition :

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

Ou en abrégé :

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

Là encore, le script vous demandera le nom du répertoire de destination à créer. Par défaut, il s'appellera temma_project.

Si vous préférez, vous pouvez extraire l'archive vous-même :

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

Vous pouvez même cloner directement le dépôt git :

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

3.3Installer Smarty

Si vous utilisez Temma pour créer une API sans génération de page HTML, vous n'aurez pas besoin du moteur de templates Smarty. Dans le cas inverse, Temma a besoin de Smarty en version 4 ou plus (si vous utilisez PHP 8.1, il vous faudra Smarty 4.1 ou supérieur ; si vous utilisez PHP 8.2 ou 8.3, il vous faudra Smarty 5 ou supérieur).

Temma est compatible avec les versions 4 et 5 de Smarty. Attention, la version 5 introduit des évolutions non retro-compatibles.

Attention, il est très recommandé d'utiliser la version 5.4.0 (ou supérieure) de Smarty. Temma active l'option d'auto-échappement des variables, qui évite d'avoir à utiliser le modificateur escape. Mais les versions de Smarty avant la 5.4.0 n'offrent pas le modificateur raw qui permet d'annuler l'auto-échappement lorsque cela est nécessaire. Toutefois, il est possible de désactiver l'auto-échappement par défaut.

Vous pouvez installer Smarty de deux manières différentes : soit en utilisant Composer, soit en téléchargeant l'archive à la main.

Pour installer la dernière version stable de Smarty avec Composer, tapez cette commande depuis la racine du projet (plus dinformations dans la documentation) :

$ composer require smarty/smarty

Pour installer Smarty manuellement, téléchargez l'archive (format ZIP ou TAR.GZ) de la version désirée. En décompressant l'archive, vous y trouverez un sous-répetoire libs/ (Smarty 4) ou src/ (Smarty 5). Renommez-le smarty4 (Smarty 4) ou Smarty (Smarty 5) puis déplacez-le dans le répertoire lib/ de votre projet.


4Configuration du serveur web

Une fois Temma installé, il faut configurer le serveur web qui exécutera votre application web.
Pour cela, vous pouvez utiliser la configuration Apache/Nginx ou la configuration par fichiers .htaccess.


4.1Fichiers .htaccess

Les fichiers .htaccess sont nécessaires en cas d'hébergement mutualisé.
Si c'est votre cas, vous n'avez rien à faire. Les fichiers sont déjà présents (.htaccess à la racine et www/.htaccess).


4.2Serveur Apache ou Nginx

La configuration Apache ou Nginx est à utiliser si vous avez votre propre serveur (dédié, virtuel ou conteneur Docker).

Vous trouverez des configurations d'exemple (fichiers etc/apache.conf et etc/nginx.conf), que vous pouvez modifier pour les adapter en fonction de vos besoins.

Il vous faudra en plus effacer les fichiers .htaccess existants :

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

5Arborescence d'un projet

Voici le contenu d'un projet Temma :

mon_projet/
    bin/
    cli/
    controllers/
    etc/
        temma.php
        apache.conf
    lib/
        Temma/
        Smarty/
        smarty-plugins/
    log/
        temma.log
    templates/
    tmp/
    var/
    vendor/
    www/
        index.php
  • bin : Contient des programmes utilitaires.
  • cli : Contient vos scripts en ligne de commande.
  • controllers : Répertoire principal pour vos contrôleurs.
  • etc : Répertoire de configuration
    • temma.php : Fichier de configuration du projet.
    • apache.conf : Fichier de configuration du "virtual host", dans le cas d'un serveur Apache.
  • lib : Répertoire de base contenant les bibliothèques externes, mais aussi vos objets métier.
    • Temma : Le code du framework (dans le cas d'une installation sans Composer).
    • Smarty (ou smarty4) : Moteur de templates Smarty (dans le cas d'une installation sans Composer).
    • smarty-plugins : Plugins Smarty proposés par Temma.
  • log : Répertoire contenant les fichiers de log.
    • temma.log : Fichiers de log du projet.
  • templates : Répertoire contenant les templates.
  • tmp : Répertoire des fichiers temporaires.
  • var : Répertoire optionnel, pouvant contenir les fichiers de données de votre application.
  • vendor : Ce répertoire existe si vous avez installé Temma en utilisant Composer, ou si vous avez chargé des bibliothèques externes avec Composer.
  • www : Répertoire racine du site web, contenant tous les fichiers CSS, Javascript et les images.
    • index.php : script PHP principal, qui démarre le framework.