В настоящее время мы фиксируем composer.lock
хранилище и затем запускаем его composer install --no-dev
на производственном сервере. Я не думаю, что это лучший способ сделать это, потому что композитору требуется несколько минут, чтобы сгенерировать все файлы, и это рискованно.
Интересно, лучше ли передать в репо все файлы, необходимые для работы в производственном режиме.
Как другие управляют процессом развертывания с magento 2?
magento2
composer
deployment
Клаудиу Крянгэ
источник
источник
composer install
на производстве? letscodejavascript.com/v3/blog/2014/03/the_npm_debaclecomposer install
. Вы смотрели в git hook, чтобы автоматизировать процесс?Ответы:
Согласитесь на 100% с claudiu-creanga в том, что он не обязывает поставщика, а также избегает установки composer на производстве.
То, как мы справились с этим, - это наличие активной папки и папки-кандидата на выпуск. Именно в папке release-кандидата мы запускаем команды git pull и устанавливаем composer --no-dev. Наш процесс можно описать так:
В папке релиз-кандидат:
Синхронизировать файлы с папкой сайта
Я написал более длинную статью в блоге, в которой приведены фактические команды и причины этого: https://www.c3media.co.uk/blog/c3-news/deploying-magento-2-production-environment/
ОБНОВЛЕНИЕ: Теперь мы копируем действующую базу данных в промежуточную базу данных и используем ее для запуска сценариев установки, развертывания статических файлов и компиляции DI в автономном режиме. Затем он может быть развернут в режиме реального времени, включая pub / static файлы и var. Мы все еще ненадолго отключаем сайт, если выполняются сценарии установки, но в противном случае сайт остается закрытым. Более подробная информация на https://www.c3media.co.uk/blog/c3-news/magento-2-deployment-without-downtime/
ОБНОВЛЕНИЕ: я передумал насчет фиксации папки продавца. Зафиксировав папку, вы получаете возможность отслеживать историю изменений этих файлов, видеть, случайно ли вы что-то изменили, и, что самое важное, избегать запуска composer. во время развертывания. Последнее важно сейчас, когда мы полагаемся на внешних поставщиков репозиториев. Что если один из них недоступен? Внезапно вы не можете развернуть. Недостатками являются больший репозиторий, риск совершения основных хаков и отвратительный удар разработчиков вроде меня :)
источник
Пока что мы также фиксируем папку vendor, которая, конечно же, добавляет в репозиторий множество файлов. (Обязательно удалите все папки .git в файлах компоновщика поставщика, так как в противном случае содержимое папок не будет зафиксировано - например, firegento). Но символическая ссылка на папку vendor не работает, редактирование пути в файле vendor_path.php также не работает, и у нас пока не было времени искать лучшее решение.
У нас нет сервера сборки, и мы не запускаем composer на сервере, мы запускаем и тестируем все обновления локально и фиксируем их. Это, в свою очередь, запускает наш сценарий развертывания.
Наш сценарий развертывания заменяет файл env.php, выполняет несколько пользовательских действий, а затем также запускает
setup:upgrade
иsetup:static-content:deploy
перед переключением активной ссылки на новую папку.Единственная папка, на которую мы ссылаемся, это pub / media.
источник
Наконец, мы выбрали такой сервис, как
deploybot
( http://deploybot.com/ ). Вы можете использоватьcapistrano
бесплатно. Deploybot создает Docker-контейнер во время установки composer, и, если команда выполнена успешно, он развертывает код, в противном случае он не развернет ничего, поэтому ваша производственная среда будет в безопасности.Я считаю это лучшим подходом, потому что:
1) парни композиторов не рекомендуют иметь в своем репозитории папку vendor по веским причинам:
Дополнительная информация: https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md
2) Работать
composer install in production
без сетей безопасности рискованно , пакеты могут быть неработоспособными (см. Npm), вы можете столкнуться с проблемами с памятью или любой другой ошибкой, которая может возникнуть, пока Composer генерирует файлы, и вам придется иметь дело с нарушенной производственной средой.источник
Я также смотрю на это, подход, который я использовал до сих пор:
Начальная загрузка сервера:
composer --create-project ... --no-dev
вsrc
папку (хотя я все еще вижу, как проходит много dev-Cruft)Что даст мне запас, работающий магазин из моего каталога src (но мой webroot там не указывает)
Тогда мой процесс развертывания:
Это позволяет мне поддерживать основной код Magento отдельно от моего, использовать composer, чтобы поддерживать его в актуальном состоянии ... и мне не нужно отправлять 39,102 !!! файлы с каждым развертыванием или запустите команды composer во время развертывания.
... Стремясь услышать о других подходах или о передовом опыте в этом, а также обожать узнавать, какие файлы на самом деле требуются для производства, а какие - для разработки ... так что я могу поддерживать мой webroot в чистоте.
Как только я закончу, у меня будет хорошая игровая книга и несколько команд Fabric для организации конфигурации и развертывания, которыми я с удовольствием поделюсь.
надеюсь, это поможет
источник