
У меня следующая ситуация. Веб-контент моего приложения находится в стандартном каталоге /var/www/my.domain.com/html/
. Также у меня есть папка users_statics
где-то внутри этого каталога, где мое приложение хранит некоторые важные файлы, загруженные пользователями. Обратите внимание, что эти файлы не включены в сборку frontend, и во время использования нужны только URL-адреса к этим файлам.
Однако мой скрипт конвейера развертывания удаляет все файлы внутри /var/www/my.domain.com/html/
и вставляет новую сборку frontend, которая по умолчанию не содержит user_statics
каталога. Например:
rm -rf /var/www/my.domain.com/html/*
cp -av build/. /var/www/my.domain.com/html/
Поэтому мне приходится хранить user_statics
каталог в каком-то другом месте и после каждого развертывания помещать rsync
его в папку веб-контента:
mkdir /var/www/my.domain.com/html/.../user_statics
rsync -qah ./user-statics-bkp/* /var/www/my.domain.com/html/.../user_statics
Я не уверен, что это самый желательный способ работы с этой папкой, поскольку к этому времени я хочу добавить API в бэкенд-приложение для взаимодействия с его содержимым. Таким образом, например, я могу столкнуться с неправильными вызовами API к этой папке во время процесса развертывания.
Я вижу следующие варианты, но ни один из них не кажется мне идеальным:
- Каким-то образом перепишите конвейер CD, чтобы «игнорировать» эту папку во время развертывания.
- Переместите эту папку в
/var/www/html/
папку и пропишите дополнительные директивы в файле конфигурации nginx. - Откройте поддомен для этой папки и создайте блок сервера для этого поддомена. Однако я не уверен, что эта папка «заслуживает» того, чтобы быть отделенной в новый блок сервера.
Исходя из вашего опыта, есть ли более эффективные способы правильно с этим справиться?
решение1
Наконец, я поместил эту папку по этому пути /var/www/html/path/to/user_statics
и добавил простую директиву местоположения в sites-available/my.domain.com
файл конфигурации nginx:
location /path/to/user_statics {
root /var/www/html/;
}
Итак, после этого nginx проксирует user_statics
запросы в это место в файловой системе сервера, отдельно от /var/www/my.domain.com/html/
. На данный момент это решение работает у меня хорошо.