1 votes

Symlink seulement si le fichier n'est pas présent

Je dispose d'un site web/application basé sur LAMP et je me prépare à commencer à servir des clients. Avec mon système actuel, chaque client aurait besoin d'une instance complète du site web (structure complète des dossiers à partir de la racine du site). Je voudrais séparer l'application de base et ne créer que les fichiers personnalisés nécessaires pour chaque client.

Voici ce que je recherche : Un moyen de dire "si le fichier existe dans le dossier client, utilisez celui-là. Sinon, utilisez le fichier du dossier de l'application principale". Une sorte de lien symbolique conditionnel ou prioritaire, mais fonctionnant pour une arborescence de dossiers entière. De cette façon, je n'aurai pas à modifier le code dans l'ensemble du framework, et la séparation peut se faire de manière transparente pour l'application.

Cette fonctionnalité existe-t-elle sous Linux, ou dois-je l'implémenter moi-même dans le serveur web ?

Merci !

1voto

mgorven Points 29736

Vous pouvez utiliser un système de fichiers d'union comme aufs o UnionFS pour superposer les répertoires les uns sur les autres. L'accès à un fichier implique de vérifier les superpositions dans un ordre spécifique jusqu'à ce que le fichier soit trouvé.

0voto

Sven Points 95985

La méthode la plus courante est d'utiliser une structure de dossier pour votre application qui supporte cela, comme par exemple /app pour le code commun et /config pour la configuration locale. Vous faites ensuite un lien symbolique /app à un répertoire commun de code source et avoir un répertoire réel pour /config . Cette méthode est facile à reproduire et efficace. Entre autres choses, il permet une option de mise à jour très facile, car il suffit de remplacer un répertoire commun.

Je considère qu'il s'agit d'un critère de qualité très basique et je vous suggère de corriger votre application pour permettre cela.

En outre, la fonctionnalité que vous avez demandée à l'origine n'existe pas.

0voto

Jacob Points 296

Ce que vous décrivez est généralement accompli par le biais de versions. Les systèmes de gestion des versions les plus utilisés ces derniers temps sont Subversion et Git.

Si vous mettez en place un référentiel de base, vous pouvez branche pour chaque installation client et fournir des patchs et diffs si nécessaire pour modifier les sources. Comme vous aurez différentes branches de l'application principale, vous devrez tester les correctifs appliqués sur l'application de base pour chaque branche, mais il n'y a pas vraiment d'autre moyen de contourner ce problème.

Comme vous utilisez Linux et que les deux SCM sont fournis avec toutes les principales distributions, vous n'aurez pas beaucoup de difficultés à les configurer.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X