В Magento 1 я использовал инструмент развертывания, который использовал GIT-репозиторий, выполнял такие команды modman deploy-all
и var
проверял, доступен ли каталог для записи. Для этого .gitignore
я использовал этот, который работал довольно хорошо.
Но как насчет Magento 2 ?
Какой gitignore работает лучше всего, как вы развертываете свой проект и какую команду следует выполнять до и после развертывания. Будем рады услышать некоторые идеи от сообщества.
Вопрос останется открытым довольно долго
Ответы:
Шаги ниже описывают, как настроить среду для разработки пользовательских модулей, а не для производства.
Инициализация проекта
Создайте проект с помощью следующей команды:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .
Возьми этот .gitignore и вставь в свой проект root. Почти все основные файлы / каталоги уже добавлены в корень
.gitignore
, но лучше также добавить следующие 2/update
и/phpserver
(просто добавьте эти 2 строки в .gitignore)app/code/VendorName/ModuleName
), теперь у вас будет только ваш собственный код в вашем git-репозиторииMagento установка
Установите Magento с помощью командной строки, например:
${project_root}/bin/magento setup:install \ --db-host=localhost \ --db-name=magento \ --db-user=root \ --backend-frontname=admin \ --base-url=http://base.url.goes.here/ \ --language=en_US \ --timezone=America/Chicago \ --currency=USD \ --admin-lastname=Admin \ --admin-firstname=Admin \ --admin-email=admin@example.com \ --admin-user=admin \ --admin-password=123123q \ --cleanup-database \ --use-rewrites=1
Включите работу cron индексаторов, например, в Ubuntu:
echo "* * * * * php ${project_root}/bin/magento cron:run &" | crontab -u www-data -
default
режиме, и весь отсутствующий контент будет автоматически сгенерирован по первому запросу. Так что нет необходимости запускать компилятор или развертывание статического контента[необязательно] При использовании PHP Storm выполните следующую команду, чтобы включить поддержку XSD:
bin/magento dev:urn-catalog:generate .idea/misc.xml
источник
vendor
том числеmagento2-base
, что является просто каркасом для нового проекта. Не уверен, почему этот шаг не настроен для автоматического выполнения композитором, попытается выяснить. Что касается.gitignore
копирования из другого репо, то уже обсуждается, как устранить / упростить этот шаг.magento2-base
в корень больше не нужно (только что проверено), похоже, недавно исправлено. Убрал этот шаг из ответа.Для инициализации и установки следуйте инструкциям Алекса, ответившим на большинство шагов, только отличия, которые я бы рекомендовал:
Конфигурация Git
Храните только следующие файлы в вашем Git-репозитории:
Для своего пользовательского кода проекта также используйте отдельные модули, которые вы добавляете через композитора. Управлять этим композитором проще, поскольку вы можете заблокировать конкретную версию / выпуск, который вы хотите развернуть. Это также заставляет вас использовать один и тот же подход для внутренних и внешних модулей.
развертывание
Во время разработки вы обновляете модули в своей среде (dev / test) с помощью команды:
Это обновит файл composer.lock с версиями, установленными в этой установке.
На стадии подготовки / подготовки / производства вы можете создать / установить ту же установку с помощью команды:
Это установит все те же модули, которые использовались в dev / test, чтобы гарантировать, что тестирование перед публикацией в производство будет выполнено с теми же версиями модулей, с которыми он разрабатывался.
После установки необходимо выполнить следующие команды:
Это обновит базу данных (обновление схемы и данных), сгенерирует конфигурацию DI и развернет все файлы статического представления.
источник
Re .gitignore, 2.2 и далее официальный ответ Magento будет "config.php идет в git, env.php - нет".
Мы смотрим на плагины для композиторов, такие как Mediawiki, чтобы приблизить внутреннего разработчика к разработке расширений и сайтам заказчиков. Еще изучаю, еще не окончательно.
Мне очень понравилось использовать тип репозитория Composer «Path» с путем
../othergitrepo/app/code/*/*
для выбора модулей, но он использует символические ссылки, которые не очень хорошо работают в средах разработки, использующих Unison или аналогичные.источник
мы используем другой подход, который не требует отдельного сервера / процесса сборки , мы локально разрабатываем, как в рабочей среде
Затем мы фиксируем все файлы, необходимые для производства . Затем мы просто развертываем наборы изменений на сервере и запускаем команду обновления.
Получить версию, которая подходит для разработки, но также работает в производственном режиме, было непростой задачей, но она до сих пор не идеальна, но теперь у нас есть рецепт, который работает.
причина в том, что мы хотим иметь 100% контроль над тем, какой код идет в производство. Так как magento2 генерирует тонну кода, мы должны запустить его локально, чтобы иметь возможность понять все эффекты и быть в состоянии отлаживать, как будто в производстве.
Я знаю, что это не то, что многие люди рекомендуют делать, но для нас это работает лучше всего.
шаги настройки внешнего интерфейса
Для того , чтобы эти сценарии для работы установить свой магазин в производственном режиме в вашем env.php и настройки вашей темы в
dev/tools/grunt/configs/themes.js
. (следующие шаги были помещены в сборник рассказов)var/cache
var/view_preprocessed
pub/static/*
(не удаляйте .htaccess)var/composer_home
php bin/magento cache:flush
php bin/magento setup:static-content:deploy %your_languages%
pub/static/frontend
php bin/magento dev:source-theme:deploy --locale="%your_language%" --theme="%your_theme%" css/styles-m css/styles-l css/email css/email-inline
grunt less:your_theme
шаги бэкэнда / ди-установки
var/cache
var/generation
var/composer_home
var/di
php bin/magento cache:flush
php bin/magento setup:di:compile
источник
Вы также должны игнорировать эти файлы
/app/etc/config.php
/app/etc/env.php
/.idea/workspace.xml // phpstorm
источник