Подтвердить что ты не робот

Доступны сайты Nginx, доступны сайты: не удается создать софт-ссылку между конфигурационными файлами в Ubuntu 12.04

Я пытаюсь создать софт-ссылки между конфигурационными файлами, содержащими серверные блоки, в каталогах с сайтами и доступными сайтами в /etc/nginx/.

Используемая мной команда:

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

Когда я затем выполняю:

ls -l

Результат:

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

где часть immigrationinformation.conf -> immigrationinformation.conf имеет древесный уголь с красным шрифтом.

Когда я пытаюсь получить доступ к этой софт-ссылке, мне говорят, что она сломана.

Когда я создаю софт-ссылку в каталоге, доступном для сайтов, т.е.

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

работает нормально. Однако, если я переместил его в каталог с поддержкой сайтов, ссылка снова будет повреждена.

Я могу создать мягкую ссылку через графический интерфейс файлового менеджера, но не через командную строку. Я также могу создавать жесткие ссылки без проблем.

Я подозревал, что это проблема с разрешениями, поэтому я играл с настройкой всех разрешений на 777 как для каталогов, так и для самих каталогов, а также для изменения владельцев для чего-то другого, кроме как root, но все же без везения.

Любая помощь мне очень понравилась, спасибо.

4b9b3361

Ответ 1

Вам нужно начать с понимания того, что цель символической ссылки - это путь. И он может быть абсолютным или относительным к каталогу, который содержит символическую ссылку

Предполагая, что у вас есть foo.conf в доступных сайтах

Try

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

Теперь у вас будет символическая ссылка в сайтах с именем foo.conf, у которой есть цель.. /sites -available/foo.conf

Просто, чтобы быть ясным, обычная конфигурация для Apache заключается в том, что файлы конфигурации для потенциальных сайтов живут на доступных сайтах, а символические ссылки для разрешенных сайтов живут в сайтах, указывая на целевые объекты на доступных сайтах. Это не совсем так, как вы описываете свою установку, но это не ваша основная проблема.

Если вы хотите, чтобы символическая ссылка на ВСЕГДА указывала на один и тот же файл, независимо от того, где расположена символическая ссылка, тогда цель должна быть полным путем.

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

Вот (строка 1 из) вывод моего ls -l/etc/apache2/sites-enabled:

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

Посмотрите, как цель символической ссылки связана с каталогом, который содержит символическую ссылку (она начинается с "..", что означает, что нужно перейти к одному каталогу).

Жесткие ссылки совершенно разные, потому что цель жесткой ссылки не является записью каталога, а системой регистрации Inode.