новый сервер

Проблема с симлинками в ispmanager

Переезд на новый сервер

Так как все мои сайты переехали на выделенный сервер, я начал потихоньку осваиваться на нём. Первое, что потребовалось сделать, это перенести всю кодовую часть под git. В целом это не проблема, если не вспоминать, директория .git будет светится везде где только можно. В общем, директорию с исходными кодами я вынес заодно набросав файл для поднятия сайта локально из той же директории. Подробности как0нибудь напишу, когда пройдёт достаточно времени и скрипт немного отполируется. В общем всё прекрасно, но каждый раз копировать изменения из каталога вне сайта в каталог сайта было не удобно. В добавок несколько сайтов имеют под капотом одинаковую кодовую базу. Первое же решение пришедшее в голову было сделать из алиас для git pull или симлинки.

Копировать, нельзя синхронизировать.

копировать, нельзя синхронизировать

У алиаса для переопределения работы через git pull есть огромный минус — время выполнения и нагрузка на сервер. Какой смысл копировать напрямую или через rsync файлы в соседнюю директорию? В этом варианте бессмысленных копий одних и тех же файлов становится больше, так ещё и процессор с диском будет дополнительно нагружаться при синхронизации. А так как на хосте у меня не так много места как хотелось бы и что бы не распухали папки с сайтами на пустом месте я решил попробовать симлинки как простую и доступную альтернативу.

Копировать нельзя, синхронизировать.

Синхронизировать

Симлинк с директории git-репозитория настраивается простой командой

ln -s source destination

Сайты заработали, после git pull все изменения сразу оказываются в работе. И всё хорошо, но тут появилась неприятность. Оказывается ispmanager не умеет корректно работать с папками сайтов, если они сделаны мягкими симлинками. Буквально, ispmanager отказывается сохранять любые изменения настроек сайта. Логи указывали на ошибку при работе с файлами при попытке сохранить файл. Права при этом в норме. Тестовый сайт без симлинков ispmanager успешно правил. А по симлинку никак.

Решение проблемы с симлинками — отказаться от симлинков!

mount bind

Покопавшись по логами и документации, мне стало понятно, что ошибка в бинарном модуле и исправить её не получится. Положение могли бы исправить жёсткие симлинки, но, увы, они не способны работать с каталогами и эта возможность отпала сразу. Был вариант вернутся на предыдущую схему работы… Но тут, я вспомнил, что я же на своём собственном сервере! А это значит, что у меня полный контроль над системой. Особенно над файловой.  Всего одна команда mount может исправить все мои проблемы. Единственно, потребуется поправить системный файл fstab, для того, что бы все мои изменения сохранились при перезагрузке сервера.  А именно, добавить строчку

source destination defaults,user,bind 0 0

Собственно, на этом всё. Когда сайтов станет много, можно будет автоматизировать это скриптом. Но пока, преждевременная оптимизация — враг вашего кошелька!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *