#laravel #ubuntu #deployment #symlink #envoyer.io
#laravel #ubuntu #развертывание #символическая ссылка #envoyer.io
Вопрос:
У меня есть проект laravel, развернутый в AWS. Недавно я задумался об использовании Envoyer для развертывания с нулевым временем простоя.
В моем проекте есть каталог загрузок, в который пользовательские загрузки добавляются с помощью кода. Конечно, это не добавлено в git.
Поэтому, когда envoyer развертывает код, я должен символически связать свою папку uploads с текущим каталогом. Я добавил сценарий развертывания (после активации новой версии):
ln -s ~/<myproject>/uploads ~/<myproject>/current/uploads
Когда envoyer развертывается, я получаю символические ссылки на месте, но каталог выглядит примерно так:
audio images uploads
В то время как фактический каталог выглядит как:
audio images
(Обратите внимание, что приведенный выше вывод выполнен командой ls в каталоге загрузки)
Я не понимаю, почему у символической ссылки есть другой каталог с именем uploads, а папки с изображениями и аудио пусты. Кстати, странная новая папка загрузки, которая создается внутри этой символической ссылки загрузки, на самом деле имеет правильную структуру. Но это не то, что мне нужно, мне нужно иметь папку audio и images с соответствующими файлами в ней.
Что я пробовал?
Я подключился к серверу по ssh и выполнил ту же команду, что и для envoyer, и это правильно создает символическую ссылку. Но для автоматизации этого мне действительно нужно иметь это в Envoyer deployment hook.
У кого-нибудь есть идеи? Я думаю, что перехват символической ссылки развертывания должен быть обычной практикой в Envoyer.
Комментарии:
1. Используете ли вы
php artisan storage:link
?2. Да, но, к сожалению, это старый проект, и предыдущий разработчик придерживался практики добавления папки «загрузки» в корневой каталог. Так что хранилище: ссылка в этом случае не поможет.
Ответ №1:
Проблема заключалась в том, что у меня уже была папка загрузки в git. (Это было добавлено для сохранения структуры каталогов с .gitignore
файлами в каждом).
Чтобы решить эту проблему, я просто удаляю каталог перед связыванием.