Template Tutorial/fr

From SME Server
Revision as of 20:59, 20 August 2022 by Gieres (talk | contribs)
Jump to navigation Jump to search


Aperçu et description

Ce document est destiné à servir de description en « langage clair » du système de gabarit (template) du serveur Koozali SME. Reportez-vous à la page gabarit (template) de fichiers de configuration du guide du dévelopeur pour le serveur SME, pour une description plus technique.


  Note :
le terme anglais « template » a été traduit par « gabarit » ou « modèle » selon les pages du wiki.


Le système de gabarit est unique au serveur SME. Il est utilisé pour créer les fichiers de configuration standard dans /etc/... en conjonction avec l'événement expand-template.

Les gabarits sont constitués de fragments qui s'additionnent pour créer le fichier de configuration tout entier. Le code dans les fragments de gabarits peut avoir une valeur par défaut en l'absence d'une valeur spécifique dans la db (base de données).

Afin de déterminer quels paramètres de base de données sont pris en compte par le code du fragment du gabarit, ou quelles sont les valeurs par défaut, reportez-vous (c'est-à-dire lisez) au code qui est dans les fragments du gabarit, ou dans les fragments du gabarit personnalisé associé à un fichier /etc/file.conf.

Regardez dans /etc/e-smith/templates/ et /etc/e-smith/templates-custom/ et leurs sous-dossiers pour la recherche des fragments de gabarit applicables à un fichier de configuration particulier comme /etc/file.conf.


  Note :
le serveur SME utilise les fichiers de configuration dans le dossier /etc/ comme n'importe quel autre système Linux. Ne pas modifier directement les fichiers de configuration dans le dossier /etc/ (comme on le ferait dans une distro Linux standard).


Les changements de configuration sont faites dans le gestionnaire du serveur (server-manager), ou, en ligne de commande, par les paramètres supplémentaires de la base de données, ou en adaptant le code qui génère les paramètres de configuration. Ce code est dans les gabarits (templates). Les gabarits sont composés de fragments. Ce ne sont pas des fichiers de configuration ordinaires, ils sont le code qui génère une partie (c'est-à-dire un fragment) des fichiers de configuration.

Les fichiers de configuration dans le dossier /etc/ sont créés à partir du code dans les fragments de gabarits et par les valeurs par défaut dans les fragments de gabarits principaux et la base de données de configuration interne dans /etc/e-smith/templates/.

Le code dans les fragments de gabarits recherche également des valeurs dans les différentes bases de données dans /home/e-smith/db/ (quand le code a été écrit pour s'appuyer sur les paramètres de bases de données).

En outre, il y a des fragments de gabarits personnalisés dans le dossier /etc/e-smith/templates-custom/. Le code dans ces fragments de gabarits personnalisés ajoute des paramètres de configuration en plus des paramètres générés par les fragments de gabarit principaux, ou lorsque les fragments de gabarit personnalisés sont nommés de façon identique, ils vont complètement remplacer les paramètres générés par les fragments de gabarit principaux.

Le fichier de configuration /etc/file.conf est généré lorsque vous exécutez la commande suivante :

expand-template /etc/file.conf
systemctl restart dhcpd

pour les services supervisés :

sv t /service/servicename

ou pour tout service :

service restart servicename

Certains signaux d’événement combinent l'utilisation de gabarits et le redémarrage du service :

signal-event email-update

ou l'un des nombreux autres signaux d'événement applicable à la tâche que vous effectuez.

En cas de doute sur le gabarit à développer et de service à redémarrer, il y a un une commande « maîtresse » qui permettra d'appliquer tous les gabarits et de redémarrer tous les services, avec pour effet de réinitialiser tous les les paramètres de configuration. Il est sécuritaire de le faire à tout moment en utilisant

signal-event post-upgrade
signal-event reboot

Pour effectuer un changement personnalisé de gabarit, copiez le fragment intéressant existant dans sous le répertoire /etc/e-smith/templates/ dans le dossier correspondant sous /etc/e-smith/templates-custom/ en conservant la même structure de dossier. Éditez le fragment copié avec les modifications désirées, puis appliquez le gabarit au fichier de configuration et redémarrez le service affecté comme décrit ci-dessus.

Vous pouvez aussi créer un nouveau fragment de gabarit quand il n'en existe pas déjà un d'utilisable pour la tâche envisagée. Vous aurez à lui trouver un nom correspondant à l'ordre alphanumérique adapté à la position que vous voulez que votre nouveau paramètre occupe au milieu des autres fragments dans le fichier de configuration /etc/xxxx . Attention À bien créer ce fragment dans /etc/e-smith/templates-custom/ et non dans /etc/e-smith/templates/ qui est réservé aux fragments par défaut.

Pourquoi tout cela dans la conception de SME ?

Afin d'avoir des réglages par défaut robustes qui peuvent être facilement remis à leur paramètres d'origine en effaçant simplement les fragments personnalisés puis en appliquant le gabarit et enfin en redémarrant le service. Le système reviendra alors à une configuration fonctionnelle.

C'est pour cela que les gabarits principaux ne doivent JAMAIS être modifiés afin que tous les fragments de code par défaut restent inchangés et intacts.

Vous devrez localiser les fragments du gabarit qui vous intéresse et en lire le code afin de décider quel fragment vous voulez copier et modifier. Vous pouvez généralement déduire ceci du fichier de configuration que vous essayez de modifier /etc/xxxx c'est-à-dire que l'un est lié à l'autre.

Veuillez faire le tour des différents tutoriels (HowTo) et articles du wiki des Contributions qui ont ces types de modification de configuration décrits, vous y trouverez ainsi des exemples détaillés pas à pas qui pourront être appliqués à un besoin particulier (en changeant le nom du service et du fragment et les commandes d'application des gabarits évidemment). Vous pouvez aussi rechercher « expand-template » sur le forum pour de nombreux exemples.

Code de fragment de gabarit - perl vs text

Certains gabarits sont insérés sous forme de texte littéral dans les fichiers de sortie, et certains gabarits exécutent en fait du code perl pour générer le texte de sortie.

Les fragments de gabarit utilisant du code perl incluent des accolades ("{" et "}") et contiendront probablement des lignes commençant par :

 $OUT .= "bla, bla, bla";

Si le gabarit que vous avez copié inclut du code perl, vous devrez écrire le code perl approprié pour créer votre nouvelle sortie, ou placer vos modifications de texte après l'accolade fermante finale ("}") des commandes perl.

templates.metadata

L'emplacement du fichier de sortie du gabarit, la propriété et d'autres métadonnées peuvent également être contrôlés par les paramètres de configuration stockés sous /etc/e-smith/templates.metadata.

Alors que l'emplacement de sortie par défaut pour la plupart des fichiers de configuration fondés sur des gabarits correspond au chemin d'accès à la collection de fragments de gabarits, il est également possible de spécifier un nom de fichier de sortie différent à l'aide d'une entrée dans le dossier /etc/e-smith/templates.metadata.

/var/service/qpsmtpd/config/peers/0

Les directives qpsmtpd 'plugins' dans /etc/e-smith/templates/var/service/qpsmtpd/config/plugins n'affectent PAS le contenu de /var/service/qpsmtpd/plugins comme prévu.

Au lieu de cela, en raison de cette ligne dans /etc/e-smith/templates.metadata/var/service/qpsmtpd/config/plugins :

OUTPUT_FILENAME="/var/service/qpsmtpd/config/peers/0"

cette commande :

expand-template /var/service/qpsmtpd/config/plugins

mettra à jour le contenu de /var/service/qpsmtpd/config/peers/0.

Remarque : /var/service/qpsmtpd/config/plugins n'est pas modélisé (templated) pour le moment.

/etc/samba/smb.cnf

/etc/samba/smb.cnf est mis à jour en fonction des fragments de gabarit placés dans /etc/e-smith/templates/etc/smb.cnf.

Exemples pratiques spécifiques

Ce qui suit n'est qu'une suite d'exemples, assurez-vous de définir et d'utiliser les réglages et les fragments de gabarit appropriés.

dhcpd.conf

Examinez les fragments du gabarit dans /etc/e-smith/templates/etc/dhcpd.conf et définissez quel fragment vous voulez changer. Disons que vous voulez modifier une valeur qui est dans le fragment 25DomainNameServers (pour les réglages du serveur de DNS), et dans le fragment 25Routers (pour le réglage de passerelle/routeur).

Copiez les fragments dans l'arborescence des gabarits personnalisés (templates-custom) :

mkdir -p /etc/e-smith/templates-custom/etc/dhcpd.conf
echo "option domain-name-servers 4.2.2.1;" > /etc/e-smith/templates-custom/etc/dhcpd.conf/25DomainNameServers
echo "option routers 192.168.1.4;" > /etc/e-smith/templates-custom/etc/dhcpd.conf/25Routers

Appliquez le gabarit et redémarrez dhcpd :

expand-template /etc/dhcpd.conf
systemctl restart dhcpd
sv t /service/dhcpd

Examinez /etc/dhcpd.conf afin de vérifier si vos changements ont été appliqués.

masq

Examinez les fragments du gabarit dans /etc/e-smith/templates/etc/rc.d/init.d/masq.

Disons que vous voulez bloquer l'accès à votre serveur depuis une adresse IP externe et qu'il n'y a pas de fragments qui correspond à vos souhaits. Referez-vous à http://forums.contribs.org/index.php/topic,45495.0.html . Dans ce cas créer un fragment.

Créez un nouveau fragment de gabarit :

nano -w /etc/e-smith/templates-custom/etc/rc.d/init.d/masq/40DenyZombies

Ajoutez ceci au fragment :

/sbin/iptables -A INPUT -s 24.71.223.10/32 -j DROP # gaspillage d'espace IP
/sbin/iptables -A INPUT -s 24.64.0.0/13 -j DROP # soutien Telco

Puis sauvegardez et quittez :

Ctrl+x 
yes

Appliquez le gabarit et redémarrez masq (masquerading) :

expand-template /etc/rc.d/init.d/masq
systemctl restart masq
/etc/init.d/masq restart

Vérifiez que vos modifications sont fonctionnelles.

mysql

Q) La réplication du MySQL d'un serveur SME vers un esclave MySQL est elle possible ? Le log binaire est il possible? Si oui, modifiez-vous le fichier my.cnf ou un autre pour initialiser le log binaire ?

R) La première étape consiste à aller sur le site de MySQL et chercher ce que vous voulez faire, voir http://dev.mysql.com/doc/.

Quand vous avez trouvé ce qui a besoin d'être ajouté au fichier /etc/my.cnf, vous pouvez faire les modifications appropriées au travers d'un fragment de gabarit SME personnalisé (templates-custom).

Inspectez les fragments de gabarit dans /etc/e-smith/templates/etc/my.cnf.

Définissez quel fragment doit accueillir votre code révisé. Voyez le fragment 000readme pour information.

Si aucun fragment n'est utilisable, vous aurez à en créer un nouveau. Dans l'exemple suivant remplacez 005mysql par le nom de fragment approprié, existant ou à créer.

Disons que vous voulez modifier le fragment /etc/e-smith/templates/etc/my.cnf/005mysqld.

Créez un nouveau dossier et copier le fragment de gabarit dans le nouveau répertoire personnalisé (ou créez un nouveau fragment de gabarit personnalisé) :

mkdir -p /etc/e-smith/templates-custom/etc/my.cnf/
cp /etc/e-smith/templates/etc/my.cnf/005mysqld /etc/e-smith/templates-custom/etc/my.cnf/005mysqld

Éditez afin de faire les ajouts et les changements nécessaires. C'est là que vous faites les modifications déterminées par la documentation de MySQL.

nano -w /etc/e-smith/templates-custom/etc/my.cnf/005mysqld

Sauvegardez et quittez :

Ctrl+o
Ctrl+x

Appliquez le gabarit et redémarrez mysqld :

expand-template /etc/my.cnf
systemctl restart mariadb
sv t /service/mysqld

Vérifier l'état du service :

systemctl status mariadb
sv s /service/mysqld

Dans cet exemple particulier, il apparait que vous devez autoriser l'accès à votre base MySQL avec le LAN (en local) ou le WAN (vers l'extérieur). Pour réaliser cela, vous pourrez avoir besoin de changer les permissions d'accès à votre base mysql, référez-vous à ces pages en anglais :

http://wiki.contribs.org/SME_Server:Documentation:FAQ#Access_MySQL_from_the_local_network http://wiki.contribs.org/SME_Server:Documentation:FAQ#Access_MySQL_from_a_remote_network http://wiki.contribs.org/SME_Server:Documentation:FAQ#Create_MySQL_user.28s.29_with_access_from_other_computers

Vérifiez que vos modifications sont fonctionnelles.

Suppression Pour supprimer ces changements personnalisés, vous effacez le fragment de gabarit personnalisé, appliquer le gabarit et redémarrer le service, comme suit :

rm /etc/e-smith/templates-custom/etc/my.cnf/005mysqld
expand-template /etc/my.cnf
systemctl restart mariadb
sv t /service/mysqld

Vérifier l'état du service :

systemctl status mariadb
sv s /service/mysqld

php.ini

  Note:
ceci n'est valable que pour SME 9 et avant. À partir de SME 10, les « pools » php-fpm sont utilisés. Et le pool php par défaut est php74-IBAYNAME. php74 utilisera son propre php.ini dans /etc/opt/remi/php74/php.ini mais ces valeurs sont remplacées par le php-fpm.d/ibays.conf qui est aussi un gabarit. Et le service à redémarrer serait php74-php-fpm. Si vous choisissez d'utiliser une autre version de php, vous devez changer 74 pour l'autre version, par exemple 80 à l'exception de la version Core pour 54 dans SME10 est définie par le service php-fpm.


Examinez les fragments de gabarit dans /etc/e-smith/templates/etc/php.ini et déterminez quel fragment vous voulez modifier. Disons que vous voulez modifier une valeur qui est dans le fragment 40DataHandling .

Copiez le fragment dans l'arborescence des gabarits personnalisés (templates-custom) :

mkdir -p /etc/e-smith/templates-custom/etc/php.ini
cp /etc/e-smith/templates/etc/php.ini/40DataHandling /etc/e-smith/templates-custom/etc/php.ini/40DataHandling

Modifiez le fragment et faites les changements désirés :

nano -w /etc/e-smith/templates-custom/etc/php.ini/40DataHandling

Sauvegardez les changements et quittez :

Ctrl+o
Ctrl+x

Appliquez le gabarit et redémarrez httpd-e-smith :

expand-template /etc/php.ini
systemctl restart php-fpm
sv t /service/httpd-e-smith

Vérifiez /etc/php.ini afin de voir si vos changements ont été pris en compte.

httpd.conf

Cet exemple provient d'un message du forum (en anglais), que vous pouvez trouver ici http://forums.contribs.org/index.php/topic,40336.0.html, où un utilisateur demande comment rediriger les erreurs 404 vers un fichier php.

Faites un dossier pour votre fragment de gabarit personnalisé :

mkdir -p /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf

Créez le fragment de gabarit avec vi ou nano :

cd /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf
nano S85ErrorPages

Ajoutez le texte suivant :

# Ajoutez les pages d'erreur personnalisées ici
ErrorDocument 404 /introuvable.html

Sauvegardez et quittez :

Ctrl+c
Ctrl+x

Appliquez le gabarit et redémarrez le services :

expand-template /etc/httpd/conf/httpd.conf
systemctl status httpd-e-smith
sv t /service/httpd-e-smith

À l'aide de votre éditeur html préféré, créez la page web souhaitée et sauvegardez-là dans le dossier html de la baie d'information Primary (ou de la baie d'information de votre choix) avec un nom de fichier comme introuvable.html.

Ouvrez ensuite votre navigateur internet et tapez une URL incorrecte (en étant sûr(e) que le domaine est valide et pointe vers la baie d'information) comme http://www.mondomaine.com/jesaispas et votre nouvelle page d'erreur devrait s'afficher.

Si une page d'erreur est requise pour différents domaines virtuels, créez un nouveau fichier html pour chaque domaine et sauvegardez-le dans le dossier html de la baie d'information appropriée.

Ce concept s'applique aussi aux autres erreurs communes comme :

400 Mauvaise requête
401 Non autorisé
403 Interdit

Ces erreurs peuvent être prises en charge par les lignes appropriées dans le fragment de gabarit pour pointer vers des pages adaptées.

Une liste complète des codes d'erreur peut être trouvé ici http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

smb.conf

Vous pouvez ajouter d'autres exemples à cette section.

Étapes rapides et astuces concernant les fragments gabarits (templates)

Source : http://forums.contribs.org/index.php/topic,45855.0.html

Afin de passer par dessus un gabarit SME, le nom de fichier du fragment dans .../templates-custom/... doit être identique au nom de fichier dans .../templates/... .


Voici comment créer un gabarit personnalisé:

  1. Identifier le service qui réalise la tâche que je veux personnaliser
  2. Identifier le fichier de configuration que j'ai besoin de personnaliser
  3. Modifier le fichier de configuration manuellement directement
  4. Redémarrer le service affecté
  5. Vérifier que le fait de redémarrer le service ne retourne pas le fichier à sa configuration d'origine (dnscache, par example, régénère.../dnscache/root/servers à chaque fois que le service est relancé)
  6. Vérifier que les changements faits, corrigent le problème qui a motivé cette modification
  7. Localiser le fragment de gabarit par défaut qui génère la partie du fichier de configuration que je veux modifier (ou les fragment qui sont autour de là où je veux insérer ma modification, pour créer un nom de fichier entre les deux)
  8. Copier le fragment de gabarit par défaut dans le dossier approprié dans l'arborescence /etc/e-smith/templates-custom/... (au besoin créer les sous-dossiers)
  9. Éditer la copie du fragment de gabarit dans .../templates-custom/...
  10. Utiliser expand-template afin de régénérer le fichier de configuration ciblé
  11. Vérifier (en utilisant la date et heure de modification du fichier, ou en utilisant des valeurs de configuration différentes pour les nouveaux paramètres que ceux utilisés à l'étape 3) que le fichier de configuration contient maintenant la sortie générée par le nouveau fragment de gabarit personnalisé.
  12. Re-tester
  13. Documenter la modification dans le wiki s'il vous semble que cette action peut être profitable à d'autres utilisateurs

Tous les fichiers de configuration de tous les programmes ne sont pas dépendant de gabarits, par exemple, il n'y a pas de gabarit (que je puisse trouver) pour contrôler /var/service/qpsmtpd/config.

Tous les gabarits ne sont pas forcement localisés là où vous auriez pu vous y attendre (.../qpsmtpd/peers/0 est construit en utilsiant un fragment de gabarit situé dans .../qpsmtpd/config/plugins suivant les instructions trouvées dans .../templates.metadata/...).

Toutes les fonctions ne sont pas contrôlées par un seul et unique fragment (ou fichier de configuration) - la taille des pièces jointes aux courriels, par exemple, est affectée par les réglages dans qmail, qpsmtpd, php et clamd.

Enfin, les fragments de gabarit sont traités par ordre alpha-numérique - soyez donc sûres que votre personnalisation est insérée dans le fichier de configuration à la bonne ligne.

Références

Voyez les tutoriels concernant l'utilisation des commandes db de base de données qui vous donneront des informations complémentaires utiles :

http://wiki.contribs.org/DB_Variables_Configuration

et

http://wiki.contribs.org/Useful_Commands

Référez vous au Guide du Développeur pour des informations techniques sur les gabarits

http://wiki.contribs.org/SME_Server:Documentation:Developers_Manual#Configuration_file_templates