Git, Composer, Drush перенос сайта с хостинга на хостинг

Главные вкладки

Аватар пользователя buddy90210 buddy90210 8 апреля 2022 в 13:31
1

Всем привет, подскажите по переносу сайта с хостинга на хостинг при помощи git composer и drush.
В общем, надоело перекидывать сайты при помощи архивов решил раз и навсегда с этим разобраться))
Шаги действия:
1. Сделал Экспорт Конфигов drush cex
2. Сделал репозиторий со стандартным Drupal набором (git push)
3. Сделал дамп базы данных
4. на другом сервере git pull
5. composer install
6. закачал дамп базы
7. drush cim - сообщение все конфиги и так настроены
8. Открываю сайт на новом сервере и вуаля, не один модуль не включен, я так понимаю конфиги не применились?

Комментарии

Аватар пользователя Selpi Selpi 8 апреля 2022 в 14:02

Во-первых экспорт и импорт конфигов в описанном сценарии бесполезен. Вся информация, в том числе и конфиги, хранится в базе данных. Так что проверяйте, что дамп базы создан корректно и потом корректно импортирован в новую базу.
Во-вторых, на новом сервере должен быть скорректирован файл settings.php чтобы корректно указать бд/адрес бд/юзверя/пароль.
В-третьих, composer install тоже не имеет смысла, если вся кодовая база сайта в гите.

Аватар пользователя buddy90210 buddy90210 8 апреля 2022 в 14:03

Да все стандартно создано как и с архивами, settings.php скопирован со старого сервера
UPD. ну в смысле mysqldump затем mysql

Аватар пользователя Selpi Selpi 8 апреля 2022 в 14:05

Ну на новом то сервере база данных небось имеет другое имя/юзверя/пароль, может даже адрес другой.

В общем, в любом случае, если вы корректно сделаете дамп базы и развернете его на новом сервере, то все содержимое и настройки друпала будут работать, так как друпал хранит абсолютно все (кроме закачиваемых на сайт картинок и прочих файлов) в БД.

Аватар пользователя buddy90210 buddy90210 8 апреля 2022 в 14:13

Извиняюсь тупанул)) библиотеки не скачал) они же в гитигноре, из-за этого все криво смотрелось) Не разобравшись отчаиваться начал)
Еще вопрос, импорт конфигов делает записи в базу данных?
Т.е. я к чему, на дэве внес изменения добавил полей новых сущностей и потом гитом залил на прод сделал драш ким и все работает?
И еще, а если я новых материалов добавил драш их тоже создаст?
Я про то что ладно с прода базу забрать, а на прод же не запишешь, там будет создано куча материалов во время разработки

Аватар пользователя Selpi Selpi 8 апреля 2022 в 14:21
1

buddy90210 wrote: Еще вопрос, импорт конфигов делает записи в базу данных?

Импорт конфигов сравнивает содержимое конфигов с записями в БД. Если находятся отличия- то выводится информация о том, что импорт конфигов приведет к созданию/обновлению/удалению указанного конфига в БД.

Конфиги не содержат ноды с контентом и содержимое блоков например, только их техническое описание (поля, настройки и т.п.)

Конфиги нужны не для переноса контента, а для переноса настроек сайта без необходимости заменять базу данных новым дампом. Это полезно при разработке. Например, вы добавили на девелоперском сервере какое-то новое поле для типа материала. Без конфигов, чтобы воссоздать его на боевом сервере вам надо было или вручную повторить все те же манипуляции или переносить дамп базы. С конфигами вы их просто импортируете и поле с настройками будет перенесено, но не контент.

Вообще, для самообразования просто зайдите в директорию с конфигами и пооткрывайте их, почитайте их содержимое, многое станет более понятно.

Аватар пользователя VasyOK VasyOK 8 апреля 2022 в 15:44

Думаю можно обойтись без drush cex/cim

Если сайт собран Композером переносим файлы:

  • composer.json
  • composer.lock
  • somework.sql - файл дампа БД-ы
  • web/libraries/ - вы естественно знаете установлены библиотеки композером или руками
  • web/modules/custom/
  • web/patches/
  • web/themes/custom/
  • web/sites/default/files/

там не должно быть:

  • config_абракадабра
  • styles
  • php
  • css
  • js
  • .htaccess

web/modules/contrib/ - тоже не должно переноситься или идти в репозиторий.

Как переносите через Гит или (прости Гандос) ФТП не важно. Если через Гит - вы конечно же знаете как прописать gitignor.

У вас так?

Аватар пользователя buddy90210 buddy90210 9 апреля 2022 в 9:20

Всегда и делал руками, но бывает надо функционал добавить, а в нем новые модули их настройки, новые сущности кучи полей и т.д. Файлы то перекинуть не проблема, вот с базой беда, контент то постоянно создаётся на проде. Вот и мучаю гит и драш)

Аватар пользователя VasyOK VasyOK 9 апреля 2022 в 14:17

Если вы переносите сайт с хостинга на хостинг - переносите БД. Если вам нужно вносить изменения в существующий сайт - делайте экспорт конфигураций на дев сайте и импорт на прод-е.
Пред тем как делать импорт конфигураций на проде нужно:

  • забекапить БД, файлы composer.json + composer.lock.
  • залить на прод composer.json + composer.lock - если новые модули и патчи ставили
  • + кастомные модули, темы и патчи
  • + папку с конфигуруациями config, перед этим удалить ту, которая на проде была.
  • выполнить composer install и drush updb
  • выполнить drush cim

Извините, если написал то что и так знаете. Может не понимаю в чем проблема.

Аватар пользователя marassa marassa 9 апреля 2022 в 8:40

Selpi wrote: друпал хранит абсолютно все (кроме закачиваемых на сайт картинок и прочих файлов) в БД.

А кстати как грамотно переносить и вообще менеджить изменения этих самых картинок, которые не в базе, но являются неотъемлемой частью контента? Не в гит же их засовывать (у меня их 20 гигабайт)? Или в гит?

Аватар пользователя Selpi Selpi 9 апреля 2022 в 8:55
1

В гите хранить не надо, он не для того и в целом плохо подходит для хранения медиа файлов. Я только тему оформления в нем храню, там немного картинок, зато обновлять удобно.

Директорию с файлами лучше синхронизировать rsync-ом, но нужно хорошо понимать что делаешь, какие изменения были на проде, какие на деве, иначе потом будешь рвать волосы из всяких мест. Так что крайне рекомендую делать полный бэкап перед любыми контент заливами с дев сервера.

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