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.