Автоматическое обновление ядра через Composer? Или я напутал что-то?

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

Аватар пользователя VasyOK VasyOK 28 августа 2019 в 12:46

Всем привет. Форумчане, если правильно слушал ваши разговоры ядро Durpal-а может обновляться автоматически, при выходе новых версий?

И делается это через Composer?
Дайте пожалуйста ссылку, как это настроить. С сохранением .htaccess, robots.txt если можно.

https://www.drupal.org/project/autoupdate - а этот модуль нужен тогда?

Лучший ответ

Аватар пользователя ivnish ivnish 28 августа 2019 в 12:50

В автоматическом обновлении нет необходимости, т.к. нормальные люди сначала обновляют ядро на локалке/деве, тестируют, а потом уже с помощью composer install ядро обновляется на проде.

Для любителей bdsm можно настроить в кроне сервера ежедневный запуск composer update и тогда всё будет обновляться автоматически. И ядро и контриб и вендоры

Комментарии

Аватар пользователя ivnish ivnish 28 августа 2019 в 12:50

В автоматическом обновлении нет необходимости, т.к. нормальные люди сначала обновляют ядро на локалке/деве, тестируют, а потом уже с помощью composer install ядро обновляется на проде.

Для любителей bdsm можно настроить в кроне сервера ежедневный запуск composer update и тогда всё будет обновляться автоматически. И ядро и контриб и вендоры

Аватар пользователя bumble bumble 28 августа 2019 в 13:15

Ядро Друпала не может обновляться автоматически (хвала Дрису!)

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

На самом деле, это шаг к практикам CI / CD, которые могут содержать подобную логику.

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

  • проверку обновлений
  • создание ветки проекта для обновления
  • обновление
  • запуск тестов
  • коммитинг
  • рассылку уведомлений
  • и доставку обновленного проекта в разные среды, в т.ч. в продакшн (если такова цель)

Вариантов запуска - море, от CLI'шных комманд, с автозапуском по крону, до использования специализированных сервисов.

ЗЫ - про модуль ХЗ, никогда, низачто не доверил бы контрибу подобное.

Аватар пользователя Sergey F Sergey F 28 августа 2019 в 20:38

сначала обновляют ядро на локалке/деве, тестируют, а потом уже с помощью composer ядро обновляется на проде

Голосую за этот вариант, ибо так и делаю. Проверяю обновления на локальной установке:

composer outdated

Если есть обновления, то:

composer update

Чистим кеш:

vendor/bin/drupal cc

Проверяем работу админки и главной страницы. Если все работает, делаю обновление на vps. Был случай, обновил друпал на локалке, и он умер ). Откатился назад. Через некоторое время снова обновился, и работа друпала была корректной.

Не забываем заходить в "Отчеты -> Отчет о состоянии" и обновлять базу данных, если сие требуется. Автоматическое обновление через крон - крайне опасно. Можно обновится, и получить сбой, а откатываться будет некуда.

Аватар пользователя VasyOK VasyOK 28 августа 2019 в 21:15

"а откатываться будет некуда" - бекап БД и файлов - разве не решат?
Форумчане, я не агитирую за обновление через Композер. Тему создал потому, как был топик про обновление и кто-то написал "У меня Композер на автообновление настроен". Не помню кто это был. Но вот мнение его сейчас интересно стало.

Аватар пользователя marassa marassa 28 августа 2019 в 21:44
2

Может быть речь шла об автоматическом накате ядерных патчей после каждого обновления ядра? Для меня эта фича является одним из основных мотиваторов когда-нибудь перетащить сайт под композер.

Аватар пользователя Sergey F Sergey F 28 августа 2019 в 21:46

бекап БД и файлов - разве не решат

Решает. Если он суточный. Можно в крон забить "composer update", но я бы так не делал.

Аватар пользователя gun_dose gun_dose 28 августа 2019 в 22:23

Не нужен никакой суточный бэкап. Старые версии composer.json и composer.lock лежат в гите, а бэкап базы можно сделать перед drush updb. Причём если обновлять на локалке, то можно с бэкапом бд вообще не заморачиваться, т.к. при необходимости его всегда можно слить с продакшена.

Аватар пользователя gun_dose gun_dose 28 августа 2019 в 22:35

Вообще, автоматическое обновление можно делать только в одном случае: когда есть тестовый сервер с настроенной CI-системой, которая после обновления будет автоматически запускать все необходимые тесты и только в случае успешных тестов будет делать автоматический коммит, который инициирует на продакшн composer install и drush updb. Прошу обратить внимание, именно инсталл, а не апдейт.

По поводу набора тестов: я бы не стал запускать все ядерные и контрибные тесты. На мой взгляд, достаточно написать acceptance-тесты под каждый тип страниц на сайте, просто на получение 200 ответа, плюс тесты с нажатием ключевых кнопок. Если всего этого не сделать, то несколько раз в год сайт будет лежать по несколько часов в самое неудобное для разработчика время.

Аватар пользователя adubovskoy adubovskoy 29 августа 2019 в 10:12

Я заводил так несколько раз на малозначимых своих проектах, правда проверял не код ответа а получение определенного контента (копирайты проверял) с главной. Но потом убрал. Что-то там было неочевидное. либо надо тестами покрывать сильнее (как минимум еще диффы скринов страниц до/после обновления).

Аватар пользователя gun_dose gun_dose 29 августа 2019 в 10:41

Диффы скринов тоже нужно, но на практике вёрстка не так уж часто слетает при обновлении.

А вообще как там у вас в радоне, полностью автоматическое обновление существует в принципе или нет?

Аватар пользователя adubovskoy adubovskoy 29 августа 2019 в 11:00

Клиентских в полностью автоматическом режиме нет. Так чтобы обновить пачку сайтов разом - да, но надо лично пойти посмотреть результаты. Временами между 8.x.y-8.x+1.y версиями есть затыки. Но со временем и с опытом все быстрее и быстрее)
Мы минимизировали ручное время. Config split для разных типов сайтов, gitlab + тесты.

Аватар пользователя VasyOK VasyOK 29 августа 2019 в 11:12

Допустим на хостинге сайт устновленный через Composer и я понятия не имею что такое Composer. Максимум, что я вижу: есть папка web из которой сайт работает.
Вопрос: можно ли перенести сайт на другой хостинг просто перенеся файлы (с папкой web и выше) и БД?
Да я знаю про git, сейчас вопрос не в этом.

Аватар пользователя bumble bumble 29 августа 2019 в 11:38

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

Как минимум, перестанут работать вендорные бинарники, т.к. они ссылками и пути не скопируются.

Ну, и желательно сделать сделать хоть

composer dump-autoload
Аватар пользователя gun_dose gun_dose 29 августа 2019 в 11:44

В теории это так, а на практике я недавно заметил, что у меня в докере на локалке пых 7.2, а на дев-сервере 7.1. Почти год не было никаких проблем и это никак не проявлялось.

Аватар пользователя bumble bumble 29 августа 2019 в 11:48
1

Мое дело - предупредить и рассказать как правильнее. Wink

Так-то я и сам могу юзать компоненты от 7.3 на 7.1. Но, когда знаешь что там может пойти не так - это одно, а когда "я понятия не имею что такое Composer" и вылазит 500я - это больно.

Аватар пользователя VasyOK VasyOK 29 августа 2019 в 15:57

Хорошо, можно ссылку на инструкцию как переносить композированные сайты между хостингами правильно?

Аватар пользователя ivnish ivnish 29 августа 2019 в 16:00

1. Перенести БД любым способом
2. Git clone с репозитория
3. Composer install
4. Каталог с файлами перенести вручную, тк в большинстве случаев каталог с файлами добавлен в gitignore

Всё то же самое, что и при первом развертывании сайта

Аватар пользователя VasyOK VasyOK 2 сентября 2019 в 12:56

ivnish wrote:

2. Git clone с репозитория

3. Composer install


Ну ок, поехали. Захожу в папку сайта у себя на ПК
$ git init
$ git add .
$ git commit -m "Подготавливаем к переносу"
[master (root-commit) a958fce] Подготавливаем к переносу
235 files changed, 41424 insertions(+)
create mode 100644 .editorconfig
create mode 100644 .env.example
...
В какой папке делать инит? В папке сайта или в папке web? Чето мне кажеться, что в папке web, иначе како смысл делать composer install потом. Я прав?

Аватар пользователя ivnish ivnish 2 сентября 2019 в 12:59

Ответы на все эти вопросы давно разжеваны в первых видео Никлана на ютубе. Не вижу смысла повторяться.

Аватар пользователя VasyOK VasyOK 2 сентября 2019 в 13:09

В папке выше web+
Видео Никиты... Смотреть про программирование, это все равно что нюхать музыку.
Смотрел конечно же. А есть текстовая информация как это (https://niklan.net/blog/186) делать?
Докер тоже ставить?

Аватар пользователя VasyOK VasyOK 2 сентября 2019 в 14:18

Слишком много всего. В голове не укладывается Sad
Ладно пока клонирую сайт в пределах одного окружения потом уже по хостингам буду разносить.
$ git clone d8.my d82.my
$ cd d82.my
$ composer install
(пью кофе)

Копирую папку files из одного сайта в другой.
Клонирую БД.
Устанавливаю Drupal в клонированный сайт указывая БД.

Вроде заработало. Если правильно понимаю папку web\sites\ тоже в гитигнор добавить?

Аватар пользователя ivnish ivnish 2 сентября 2019 в 14:20

Если ты клонируешь БД, то ничего устанавливать уже не надо (сайт ведь на локалке уже установлен)

Если правильно понимаю папку web\sites\ тоже в гитигнор добавить?

Она там по умолчанию

Аватар пользователя VasyOK VasyOK 2 сентября 2019 в 16:09

Списибо, увидел Smile

Теперь вопрос: как перетаскивать файлы с моего ПК на хостинг? Можно даже ссылку на конкретный раздел в документации.

Это оно (?).
https://githowto.com/ru/hosting_your_git_repositories
https://nano.sapegin.ru/all/deploy/
https://hyperhost.ua/info/kak-zagruzit-faylyi-na-udalennyiy-repozitoriy-...

Неужели команда типа git clone git://localhost/hello.git network_hello на хостинге будет работать?
На Github регистрироваться обязательно?

Аватар пользователя ivnish ivnish 2 сентября 2019 в 16:10

Лучше всего использовать GitHab или GitLab как промежуточный сервер. И там и там сейчас можно создавать приватные репозитории

Аватар пользователя ivnish ivnish 2 сентября 2019 в 16:22

А как ты себе это представляешь? Ну можешь поднять vps, а на нем свой гит сервер, если не доверяешь гитхабу и гитлабу. Но ты опять создашь себе трудности и будешь их героически преодолевать

Аватар пользователя VasyOK VasyOK 2 сентября 2019 в 16:47

Как представляю: ПК к интернету подключен, хостинг тоже к интернету подключен. Неужели фантазии нездоровые?

Баре репозитории...
https://githowto.com/ru/bare_repositories - не вижу, как это связано с Github и целевым хостингом.
https://git-scm.com/book/ru/v1/Git-%D0%BD%D0%B0-%D1%81%D0%B5%D1%80%D0%B2... - тут вроде бы целевой сервер расматривается, но про Github не вижу.

Аватар пользователя bumble bumble 2 сентября 2019 в 16:59

Определись! Ты спрашиваешь "как без ГХ", я тебе пишу "делай баре", ты спрашиваешь "какая связь у баре и ГХ".

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

Аватар пользователя VasyOK VasyOK 3 сентября 2019 в 15:55

т.е. баре - это закачивать без Гитхаба? Понятно. bumble вот искал на Ютюбе, но пока не вижу, чтобы кто-то перебрасывал Composer caйт со своего ПК на Хост через Гитхаб. Да еще и с семейным системным окружением как у меня. Все до чего я дошел написал в нижнем комменте по ветке.

Аватар пользователя bumble bumble 3 сентября 2019 в 16:29

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

Снова, в кучу пытаешься складывать все, что должно быть по разным кучам. Композер - не имеет отношения к гиту:

  • Гит - система версионирования кода.
  • Композер - менеджер пакетов для ПХП.

Но! Я уверен что есть куча людей, которые пилят кучу видосов, в которых показывают как они разворачивают композером проекты, вытянутые из репозиториев всевозможных сервисов, в т.ч. с Гитхаба. Шукай краще!

ЗЫ - молодец что стараешься!

Аватар пользователя ivnish ivnish 2 сентября 2019 в 16:53

Я считаю, что да, потому простейшая ситуация работы с гит это

git push с локалки - промежуточный сервер - git pull на хостинг

Аватар пользователя gun_dose gun_dose 2 сентября 2019 в 17:02

Огромный плюс удалённого репозитория - надёжная резервная копия кода. А то постоянно такое - на продакшн всё съел очередной друпалгедон, а старый комп уже в мусорке.

Аватар пользователя ivnish ivnish 2 сентября 2019 в 17:04

В целом согласен, хотя полноценным бэкапом его нельзя назвать, т.к. сайт это не только файлы, но в большей степени и БД

Аватар пользователя Sergey F Sergey F 2 сентября 2019 в 17:26

Шаг первый, заходим на шаред хостинг по ssh:

ssh user@213.213.213.213

Второй шаг, копируем файлы друпала:

cp -rp site/ backup/

Третье: делаем архив:

zip --symlinks -r backup.zip backup/

Скачиваем сей на свой пека:

scp user@213.213.213.213:/home/user/backup.zip backup.zip

Делаем копию базы данных и скачиваем на свой пека:

Использую для этого phpmyadmin

Теперь загружаем файлы друпал на шаред хостинг или vps по ssh:

scp backup.zip user@213.213.213.213:/home/user/backup.zip

Распаковываем файлы:

unzip backup.zip

Загружаем базу:

Использую phpmyadmin

Задаем настройки базы данных:

nano -c backup/web/sites/default/settings.php

Если нужно, восстанавливаем владельца директорий и файлов:

chown -R user:group backup/
chown -R apache:apache backup/web/sites/default/files/

Чистим кеш:

vendor/bin/drupal cc

Обновляем друпал через композитор

composer update

Проверяем работу в браузере. Сколько раз делал, всегда работает. Можно конечно вот это вот CI/CD, Gitlab, Github. Но это такой геморрой. Пока это изучишь и вникнешь как работает, поседеешь... Есть компании, группы разработчиков, они без CI/CD не смогут просто работать. Если тебе надо ТОЛЬКО перенести сайтек, накатить обновления, можно и без CI/CD, Gitlab, Github.

Аватар пользователя ivnish ivnish 2 сентября 2019 в 17:30

Но это такой геморрой. Пока это изучишь и вникнешь как работает, поседеешь...

Это называется профессиональный рост. Те, кто не растут и не идут в ногу со временем, рано или поздно окажутся за бортом

Аватар пользователя Sergey F Sergey F 2 сентября 2019 в 18:06

Да я же не против. Если парень работает в организации. Пишет код. Это его обязанность уметь непрерывную разработку и интеграцию. Но если ему нужно как хобби, а не как специалист/разработчик, проще перекинуть файлы и базу.

Аватар пользователя ivnish ivnish 2 сентября 2019 в 18:08

Я фрилансер на данный момент. Смело заявляю, что git и composer экономят моё время. Плюс когда я беру сайт на поддержку, а он собран с помощью composer, то я не седею, а работаю с ним в привычном ритме

Аватар пользователя gun_dose gun_dose 2 сентября 2019 в 18:16

Во-первых, composer update на шареде с 99% вероятностью не пройдёт. Во-вторых, такой метод хорош только в том случае, когда ты можешь с первого раза сделать такой сайт, код которого не придётся править никогда.

Аватар пользователя Sergey F Sergey F 2 сентября 2019 в 18:24

Я не разработчик, не фрилансер, и спорить не собираюсь. Если ты специалист, пишешь код, ты обязан знать уметь CI/CD. НО ЕСЛИ ТЕБЕ ПРОСТО ПЕРЕКИНУТЬ. Можно перекинуть вручную.

Аватар пользователя gun_dose gun_dose 2 сентября 2019 в 18:50

"просто перекинуть" - очень странная постановка задачи. Непонятно, при каких условиях она может возникнуть?

Аватар пользователя VasyOK VasyOK 3 сентября 2019 в 15:55

Sergey F, спасибо, за моральную поддержку!
Не совсем пониаю зачем на первом шаге, заходить на хостинг и оттуда что-то скачивать. Моя задача - заказчать сайт на хостинг.
Листин примерно понял, это я (уже, по моим комментам выше) умею. Но на данном этапе своей эволюции разбираюсь с Гитом.

Аватар пользователя VasyOK VasyOK 3 сентября 2019 в 15:58

Итак до чего я пока дошел. Видите ошибку - напишите.

github
Захожу на сайт github, создаю новый репозиторий.
Опции:

  • Private
  • Initialize this repository with a README - не выбрано
  • Add .gitignore:None - ведь ignore делает Composer

На своем ПК

$ git remote add origin https://github.com/Vasy0K/glyanec.git
$ git push -u origin master
Username for 'https://github.com': Vasy0K
Password for 'https://Vasy0K@github.com': [не копируется]
Counting objects: 248, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (235/235), done.
Writing objects: 100% (248/248), 1.80 MiB | 728.00 KiB/s, done.
Total 248 (delta 14), reused 0 (delta 0)
remote: Resolving deltas: 100% (14/14), done.
To https://github.com/Vasy0K/glyanec.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

На хостинге

u14040@krypton ~/domains $ git clone https://github.com/Vasy0K/glyanec.git dev.u14040.krypton2.vps-private.net
Cloning into 'dev.u14040.krypton2.vps-private.net'...
Username for 'https://github.com': Vasy0K
Password for 'https://Vasy0K@github.com': [ну не копируется оно сюда]
remote: Enumerating objects: 248, done.
remote: Counting objects: 100% (248/248), done.
remote: Compressing objects: 100% (221/221), done.
remote: Total 248 (delta 14), reused 248 (delta 14), pack-reused 0
Receiving objects: 100% (248/248), 1.80 MiB | 1.12 MiB/s, done.
Resolving deltas: 100% (14/14), done.

Вроде бы закачалось с Гитхаба. Инициирую Composer.
u14040@krypton ~/domains/dev.u14040.krypton2.vps-private.net $ php72 /usr/bin/composer install

Как вижу файлы сайта на хостинг закачались. Теперь на хостинге устанавливать Друпал и экспортировать конфигурацию с дев сайта на моем ПК?

Аватар пользователя gun_dose gun_dose 3 сентября 2019 в 17:19

Теперь надо перелить базу и папку с картинками. Конфу экспортируют не при первичном развёртывании, а в процессе. Ну типа подкрутил вьюху на локалке, экспортнул, закоммитил, запушил, а на серваке пулл и импорт.

Аватар пользователя VasyOK VasyOK 9 сентября 2019 в 18:13

перелить базу и папку с картинками +
Допустим сайт уже в прцессе. И мне дано задание: сделать страницу Сотрудники.

  • Создаю тип материала Сотрудник.
  • Несколько нод этого типа.
  • Ноду "Наши сотрудники".
  • Вьюху-блок, которая выводит всех сотрудников ставлю на страницу "Наши сотрудники".
  • Пункт меню, указывающий на "Наши сотрудники".

Экспортирую полную конфигурацию на одном сайте импортирую на другом. Вроде бы все переносится (вьюхи, типы материалов) кроме нод. Как быть?

Аватар пользователя gun_dose gun_dose 9 сентября 2019 в 23:05

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

Аватар пользователя gun_dose gun_dose 10 сентября 2019 в 8:23

Да что там рассказывать? Открываешь девтулзы, выделяешь views-row, выбираешь "править как html", зажимаешь ctrl, и последовательно жмёшь ACVVVVVVVVVVV, и всё, во вьюхе уже 100500 одинаковых записей. При необходимости, текст в каждом элементе меняется по двойному клику по тексту в "просмотре кода". Если верстать по нормальному с хот-релоадом, то при обновлении стилей вся эта фигня не слетает и можно спокойно верстать страницу хоть целый день.

Аватар пользователя VasyOK VasyOK 27 сентября 2019 в 13:15

Вроде немного освоился. Можете объяснить (без сильно умных слов): какой от Докера мне будет профит? Сейчас на Опенсервере делаю. Гит и Композер под ConEmu запускаю.

Аватар пользователя ivnish ivnish 27 сентября 2019 в 13:33

Если докер на винде, то проще на OpenServer сидеть. А так де, как написал bumble, еще одна освоенная технология и опыт.