web-dev-qa-db-fra.com

Sites compatibles Nginx, sites disponibles: Impossible de créer un lien symbolique entre les fichiers de configuration dans Ubuntu 12.04

J'essaie de créer des liens symboliques entre des fichiers de configuration contenant des blocs serveur dans les répertoires sites activés et sites disponibles dans/etc/nginx /.

La commande que j'utilise est la suivante:

Sudo ln -s sites-available/foo.conf sites-enabled/

Quand j'exécute alors:

ls -l

Le résultat est:

lrwxrwxrwx 1 parallels parallels 27 Aug  6 20:44 immigrationinformation.conf -> immigrationinformation.conf

où le immigrationinformation.conf -> immigrationinformation.conf la partie a un fusain avec une police de caractères rouge.

Lorsque j'essaie ensuite d'accéder à ce lien symbolique, on me dit qu'il est cassé.

Lorsque je crée le lien symbolique dans le répertoire sites disponibles, i.e.

Sudo ln -s sites-available/foo.conf sites-available/foo_link.conf

cela fonctionne comme d'habitude. Cependant, si je déplace ensuite ceci vers le répertoire activé par les sites, le lien est à nouveau rompu.

Je peux créer le lien logiciel via l'interface graphique du gestionnaire de fichiers, mais pas via la ligne de commande. Je peux aussi créer des liens en dur sans problème.

Je soupçonnais qu'il s'agissait d'un problème d'autorisations; j'ai donc joué avec la définition de toutes les autorisations sur 777 des répertoires et des répertoires eux-mêmes, ainsi que sur le remplacement des propriétaires par autre chose que la racine, mais toujours sans chance.

Toute aide serait très appréciée, merci.

43
iamyojimbo

Vous devez commencer par comprendre que la cible d'un lien symbolique est un chemin. Et cela peut être absolu ou relatif au répertoire qui contient le lien symbolique

En supposant que vous avez foo.conf dans les sites disponibles

Essayer

cd sites-enabled
Sudo ln -s ../sites-available/foo.conf .
ls -l

Vous allez maintenant avoir un lien symbolique dans les sites activés, appelé foo.conf, qui a une cible ../sites-available/foo.conf

Pour être clair, la configuration normale pour Apache est que les fichiers de configuration des sites potentiels résident dans des sites disponibles et que les liens symboliques des sites activés résident dans des sites activés, pointant vers des cibles dans des sites disponibles. Cela ne semble pas être le cas de la façon dont vous décrivez votre configuration, mais ce n’est pas votre principal problème.

Si vous souhaitez qu'un lien symbolique pointe TOUJOURS sur le même fichier, quel que soit l'emplacement du lien symbolique, la cible doit être le chemin d'accès complet.

ln -s /etc/Apache2/sites-available/foo.conf mysimlink-whatever.conf

Voici la (ligne 1 de) la sortie de mon ls -l/etc/Apache2/sites-enabled:

lrwxrwxrwx 1 root root  26 Jun 24 21:06 000-default -> ../sites-available/default

Voyez comment la cible du lien symbolique est relative au répertoire qui contient le lien symbolique (elle commence par "..", ce qui signifie monter d'un répertoire).

Les liens physiques sont totalement différents car la cible d’un lien physique n’est pas une entrée de répertoire mais un système de fichiers Inode.

96
Rodney